git add stuff
12
.gitignore
vendored
@@ -77,10 +77,10 @@ fabric.properties
|
||||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.ser
|
||||
|
||||
files/
|
||||
feedback/images/
|
||||
simpla/files/
|
||||
design/
|
||||
lib/
|
||||
images/
|
||||
/files/
|
||||
/feedback/images/
|
||||
/simpla/files/
|
||||
/design/
|
||||
/lib/
|
||||
/images/
|
||||
compiled/
|
||||
91
simpla/design/css/banners.css
Normal file
@@ -0,0 +1,91 @@
|
||||
.icons a.edit{ background-image: url(../images/pencil.png); }
|
||||
|
||||
#imageThumb{
|
||||
width:450px;
|
||||
min-height:180px;
|
||||
border:1px #9b9b9b dashed;
|
||||
background:#e5e5e5;
|
||||
text-align:center;
|
||||
vertical-align:middle;
|
||||
|
||||
font:bold 40px Arial, Helvetica, sans-serif;
|
||||
color:#d6d6d6;
|
||||
text-shadow: 1px 0px 2px #9b9b9b;
|
||||
}
|
||||
#imageThumb span{
|
||||
display:block;
|
||||
font-size:14px;
|
||||
color:silver;
|
||||
text-shadow: 1px 0px 1px #ffffff;
|
||||
}
|
||||
#imageThumb img{
|
||||
position:relative;
|
||||
display:block;
|
||||
margin:auto auto;
|
||||
margin-top:5px;
|
||||
max-width:440px;
|
||||
max-height:170px;
|
||||
}
|
||||
|
||||
a.button_yellow {
|
||||
display: block;
|
||||
float: right;
|
||||
height: 16px;
|
||||
text-decoration: none;
|
||||
padding: 5px 20px;
|
||||
font-size:13px;
|
||||
}
|
||||
|
||||
|
||||
.cell.banner,
|
||||
.cell.group{
|
||||
width: 830px;
|
||||
text-align: center;
|
||||
}
|
||||
.banner_wrapper{
|
||||
position:relative;
|
||||
margin:0 auto;
|
||||
width: 450px;
|
||||
border: 15px solid #fff;
|
||||
box-shadow: 1px 1px 4px #B4B4B4;
|
||||
background: #fff;
|
||||
border-radius: 3px;
|
||||
}
|
||||
.banner_wrapper .title{border-bottom:1px dashed #d0d0d0;}
|
||||
|
||||
.banner_wrapper .title a,
|
||||
.banner_wrapper .title a:visited{
|
||||
position:relative;
|
||||
display:block;
|
||||
margin:-15px -15px 0 -15px;
|
||||
padding:5px 10px;
|
||||
font:bold 12px Arial;
|
||||
color: #ffffff;
|
||||
text-align:left;
|
||||
text-decoration:none;
|
||||
border-radius: 3px 3px 0 0;
|
||||
background:#595858;
|
||||
}
|
||||
.group .banner_wrapper .title span{
|
||||
display:block;
|
||||
padding:5px 0;
|
||||
font:normal 11px Arial;
|
||||
color:#777777;
|
||||
}
|
||||
.banner_wrapper img{
|
||||
max-width: 420px;
|
||||
max-height: 200px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.banner_wrapper .banner{
|
||||
margin:15px 0;
|
||||
}
|
||||
.banner_wrapper .tip{
|
||||
position:relative;
|
||||
margin:0 -10px -10px -10px;
|
||||
padding:5px;
|
||||
font:normal 12px monospace;
|
||||
color:#000000;
|
||||
border-top:1px dashed #8a8a8a;
|
||||
background:#e9e5e5;
|
||||
}
|
||||
295
simpla/design/css/main.css
Normal file
@@ -0,0 +1,295 @@
|
||||
body{
|
||||
background-color: #858585;
|
||||
background-image: url(../images/bgd.png);
|
||||
background-repeat: repeat;
|
||||
color: #333333;
|
||||
font: 13px "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;
|
||||
|
||||
}
|
||||
body, html{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#main {
|
||||
width: 1000px;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
#main_menu {
|
||||
width: 100%;
|
||||
padding-top: 35px;
|
||||
font-size: 12px;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
height: 90px;
|
||||
}
|
||||
#main_menu li {
|
||||
float: left;
|
||||
width: 9%;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
#main_menu li b {
|
||||
text-decoration: underline;
|
||||
display: block;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
#main_menu a {
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
}
|
||||
#main_menu a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
#main_menu div.counter {
|
||||
margin-left: 70px;
|
||||
margin-top:-75px;
|
||||
}
|
||||
#main_menu div.counter span{
|
||||
color:white;
|
||||
font-size:11px;
|
||||
text-align:center;
|
||||
background-color:red;
|
||||
padding: 1px 1px 1px 2px;
|
||||
min-width: 13px;
|
||||
line-height: 14px;
|
||||
display: table-cell;
|
||||
border-radius:10px;
|
||||
-moz-border-radius:10px;
|
||||
}
|
||||
|
||||
#tab_menu {
|
||||
width: 100%;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
padding-right: 2px;
|
||||
font-size: 17px;
|
||||
height: 36px;
|
||||
border-bottom: 1px solid #ffffff;
|
||||
}
|
||||
#tab_menu a {
|
||||
text-decoration: none;
|
||||
color: #F2F2F2;
|
||||
}
|
||||
#tab_menu li {
|
||||
float: left;
|
||||
}
|
||||
#tab_menu li a {
|
||||
height: 28px;
|
||||
padding-right: 20px;
|
||||
padding-left: 20px;
|
||||
padding-top: 7px;
|
||||
margin-right: 15px;
|
||||
border-top: 1px solid #ffffff;
|
||||
border-right: 1px solid #ffffff;
|
||||
border-left: 1px solid #ffffff;
|
||||
text-shadow: 0px 1px 0px #fff;
|
||||
display: block;
|
||||
background: url(../images/tabs_bgd.jpg) 0 -29px;
|
||||
background-repeat: repeat-x;
|
||||
color: #404040;
|
||||
/*
|
||||
border-top-left-radius: 5px;
|
||||
-moz-border-radius-topleft: 5px;
|
||||
-khtml-border-top-left-radius: 5px;
|
||||
-webkit-border-top-left-radius: 5px;
|
||||
border-top-right-radius: 5px;
|
||||
-moz-border-radius-topright: 5px;
|
||||
-khtml-border-top-right-radius: 5px;
|
||||
-webkit-border-top-right-radius: 5px;
|
||||
*/
|
||||
|
||||
}
|
||||
#tab_menu li a:hover {
|
||||
border-top: 1px solid #ffffff;
|
||||
border-right: 1px solid #ffffff;
|
||||
border-left: 1px solid #ffffff;
|
||||
background-position: 0 -65px;
|
||||
}
|
||||
#tab_menu li.active a {
|
||||
border-top: 1px solid #ffffff;
|
||||
border-right: 1px solid #ffffff;
|
||||
border-left: 1px solid #ffffff;
|
||||
border-bottom:1px solid #f7f7f7;
|
||||
height: 28px;
|
||||
text-shadow: 0px 1px 0px #fff;
|
||||
background-position: 0 -101px;
|
||||
background-color: #f4f4f4;
|
||||
color: #000;
|
||||
overflow: hidden;
|
||||
}
|
||||
#tab_menu li.active a:hover {
|
||||
color: #505050;
|
||||
}
|
||||
|
||||
|
||||
/* Центральная часть страницы */
|
||||
#middle {
|
||||
width: 940px;
|
||||
min-height: 300px;
|
||||
padding: 30px;
|
||||
background-color: #f7f7f7;
|
||||
display: block;
|
||||
border-left: 1px solid #ffffff;
|
||||
border-right: 1px solid #ffffff;
|
||||
border-bottom: 1px solid #ffffff;
|
||||
overflow:hidden;
|
||||
}
|
||||
|
||||
|
||||
#middle h1 {
|
||||
font-size: 27px;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
color: #000;
|
||||
display: block;
|
||||
float: left;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
#middle h2 {
|
||||
font-size: 22px;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
color: #000;
|
||||
text-shadow: 0px 1px 0px #fff;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
/* @group Заголовок правой части */
|
||||
#header{
|
||||
margin-bottom: 20px;
|
||||
overflow: hidden;
|
||||
}
|
||||
#header .add {
|
||||
display: block;
|
||||
float: left;
|
||||
width: auto;
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
padding: 7px 17px 7px 33px;
|
||||
border: 1px solid #c0c0c0;
|
||||
color: #5e5e5e;
|
||||
background: #ffffff url(../images/plus.png) no-repeat 10px 6px;
|
||||
border-radius: 15px;
|
||||
-moz-border-radius: 15px;
|
||||
-khtml-border-radius: 15px;
|
||||
-webkit-border-radius: 15px;
|
||||
white-space: nowrap;
|
||||
margin-top: 3px;
|
||||
|
||||
}
|
||||
|
||||
.icons.cell a {
|
||||
|
||||
}
|
||||
|
||||
.icons.cell a:hover {
|
||||
background-color: #e3e3e3;
|
||||
}
|
||||
|
||||
.link-add {
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
padding: 1px 3px 1px 20px !important;
|
||||
border: 1px solid #c0c0c0;
|
||||
color: #5e5e5e;
|
||||
background: #ffffff url(../images/plus.png) no-repeat 3px 3px;
|
||||
background-size: 12px;
|
||||
background-position: 3px center !important;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.link-add:hover {
|
||||
background-color: #e3e3e3;
|
||||
}
|
||||
|
||||
|
||||
#header .add:hover {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
|
||||
a { color: #000; }
|
||||
|
||||
.dash_link {
|
||||
cursor: pointer;
|
||||
border-bottom: 1px dotted #4D4D4D;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
color: #4D4D4D;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.move_zone {
|
||||
display: block;
|
||||
float: left;
|
||||
background-image: url(../images/move_zone.png);
|
||||
background-repeat: repeat;
|
||||
margin: 0px;
|
||||
cursor: move;
|
||||
width: 20px;
|
||||
height:16px;
|
||||
}
|
||||
|
||||
.button_green, .button_red, .button_yellow{
|
||||
height: 28px;
|
||||
color: #ffffff;
|
||||
font: 13px "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;
|
||||
background-color: #ffffff;
|
||||
padding-right: 20px;
|
||||
padding-left: 20px;
|
||||
cursor: pointer;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-khtml-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
}
|
||||
.button_green:hover, .button_red:hover {
|
||||
background-position: 0 -29px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.button_green {
|
||||
background-image: url(../images/but_green.jpg);
|
||||
border: 1px solid #459300;
|
||||
text-shadow: -1px -1px 0px #459300;
|
||||
}
|
||||
.button_red {
|
||||
background-image: url(../images/but_red.jpg);
|
||||
border: 1px solid #d00000;
|
||||
text-shadow: -1px -1px 0px #930000;
|
||||
}
|
||||
.button_yellow {
|
||||
background-image: url(../images/but_yellow.jpg);
|
||||
border: 1px solid #ffc600;
|
||||
text-shadow: -1px -1px 0px #e79800;
|
||||
}
|
||||
|
||||
#footer {
|
||||
height: 40px;
|
||||
margin-top: 30px;
|
||||
cursor: pointer;
|
||||
color: #ffffff;
|
||||
}
|
||||
#footer a{
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
input[type=text] {font-size:13px;}
|
||||
|
||||
a.admin_bookmark
|
||||
{
|
||||
position:absolute;
|
||||
left:3%;
|
||||
top:0px;
|
||||
width: 12px;
|
||||
height: 35px;
|
||||
background-image: url('../images/bookmark.gif');
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
31
simpla/design/css/reset.css
Normal file
@@ -0,0 +1,31 @@
|
||||
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
outline: 0;
|
||||
font-size: 100%;
|
||||
background: transparent;
|
||||
}
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
}
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
blockquote:before, blockquote:after, q:before, q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
ins {
|
||||
text-decoration: none;
|
||||
}
|
||||
del {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
1519
simpla/design/css/style.css
Normal file
261
simpla/design/css/utils.css
Normal file
@@ -0,0 +1,261 @@
|
||||
.text-monospace {font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important;}
|
||||
.text-justify {text-align: justify !important;}
|
||||
.text-wrap {white-space: normal !important;}
|
||||
.text-nowrap {white-space: nowrap !important;}
|
||||
.text-truncate {overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}
|
||||
.text-left {text-align: left !important;}
|
||||
.text-right {text-align: right !important;}
|
||||
.text-center {text-align: center !important;}
|
||||
.text-lowercase {text-transform: lowercase !important;}
|
||||
.text-uppercase {text-transform: uppercase !important;}
|
||||
.text-capitalize {text-transform: capitalize !important;}
|
||||
.text-hide {font: 0/0 a;color: transparent;text-shadow: none;background-color: transparent;border: 0;}
|
||||
.text-decoration-none {text-decoration: none !important;}
|
||||
.text-break {word-break: break-word !important;word-wrap: break-word !important;}
|
||||
.text-reset {color: inherit !important;}
|
||||
|
||||
.text-white {color: #fff !important;}
|
||||
.text-primary {color: #007bff !important;}
|
||||
a.text-primary:hover, a.text-primary:focus {color: #0056b3 !important;}
|
||||
.text-secondary {color: #6c757d !important;}
|
||||
a.text-secondary:hover, a.text-secondary:focus {color: #494f54 !important;}
|
||||
.text-success {color: #28a745 !important;}
|
||||
a.text-success:hover, a.text-success:focus {color: #19692c !important;}
|
||||
.text-info {color: #17a2b8 !important;}
|
||||
a.text-info:hover, a.text-info:focus {color: #0f6674 !important;}
|
||||
.text-warning {color: #ffc107 !important;}
|
||||
a.text-warning:hover, a.text-warning:focus {color: #ba8b00 !important;}
|
||||
.text-danger {color: #dc3545 !important;}
|
||||
a.text-danger:hover, a.text-danger:focus {color: #a71d2a !important;}
|
||||
.text-light {color: #f8f9fa !important;}
|
||||
a.text-light:hover, a.text-light:focus {color: #cbd3da !important;}
|
||||
.text-dark {color: #343a40 !important;}
|
||||
a.text-dark:hover, a.text-dark:focus {color: #121416 !important;}
|
||||
.text-body {color: #212529 !important;}
|
||||
.text-muted {color: #6c757d !important;}
|
||||
.text-black-50 {color: rgba(0, 0, 0, 0.5) !important;}
|
||||
.text-white-50 {color: rgba(255, 255, 255, 0.5) !important;}
|
||||
|
||||
.bg-white { background-color: #fff !important;}
|
||||
.rounded { border-radius: 1rem }
|
||||
|
||||
.w-25 { width: 25% !important;}
|
||||
.w-50 { width: 50% !important;}
|
||||
.w-75 { width: 75% !important;}
|
||||
.w-100 { width: 100% !important;}
|
||||
.w-auto { width: auto !important;}
|
||||
.h-25 { height: 25% !important;}
|
||||
.h-50 { height: 50% !important;}
|
||||
.h-75 { height: 75% !important;}
|
||||
.h-100 { height: 100% !important;}
|
||||
.h-auto { height: auto !important;}
|
||||
|
||||
.mw-100 { max-width: 100% !important;}
|
||||
.mh-100 { max-height: 100% !important;}
|
||||
.min-vw-100 { min-width: 100vw !important;}
|
||||
.min-vh-100 { min-height: 100vh !important;}
|
||||
.vw-100 { width: 100vw !important;}
|
||||
.vh-100 { height: 100vh !important;}
|
||||
|
||||
.m-0 { margin: 0 !important;}
|
||||
.mt-0, .my-0 { margin-top: 0 !important;}
|
||||
.mr-0, .mx-0 { margin-right: 0 !important;}
|
||||
.mb-0, .my-0 { margin-bottom: 0 !important;}
|
||||
.ml-0, .mx-0 { margin-left: 0 !important;}
|
||||
.m-1 { margin: 0.25rem !important;}
|
||||
.mt-1, .my-1 { margin-top: 0.25rem !important;}
|
||||
.mr-1, .mx-1 { margin-right: 0.25rem !important;}
|
||||
.mb-1, .my-1 { margin-bottom: 0.25rem !important;}
|
||||
.ml-1, .mx-1 { margin-left: 0.25rem !important;}
|
||||
.m-2 { margin: 0.5rem !important;}
|
||||
.mt-2, .my-2 { margin-top: 0.5rem !important;}
|
||||
.mr-2, .mx-2 { margin-right: 0.5rem !important;}
|
||||
.mb-2, .my-2 { margin-bottom: 0.5rem !important;}
|
||||
.ml-2, .mx-2 { margin-left: 0.5rem !important;}
|
||||
.m-3 {margin: 1rem !important;}
|
||||
.mt-3, .my-3 {margin-top: 1rem !important;}
|
||||
.mr-3, .mx-3 {margin-right: 1rem !important;}
|
||||
.mb-3, .my-3 {margin-bottom: 1rem !important;}
|
||||
.ml-3, .mx-3 {margin-left: 1rem !important;}
|
||||
.m-4 {margin: 1.5rem !important;}
|
||||
.mt-4, .my-4 {margin-top: 1.5rem !important;}
|
||||
.mr-4, .mx-4 {margin-right: 1.5rem !important;}
|
||||
.mb-4, .my-4 {margin-bottom: 1.5rem !important;}
|
||||
.ml-4, .mx-4 {margin-left: 1.5rem !important;}
|
||||
.m-5 {margin: 3rem !important;}
|
||||
.mt-5, .my-5 {margin-top: 3rem !important;}
|
||||
.mr-5, .mx-5 {margin-right: 3rem !important;}
|
||||
.mb-5, .my-5 {margin-bottom: 3rem !important;}
|
||||
.ml-5, .mx-5 {margin-left: 3rem !important;}
|
||||
|
||||
.p-0 {padding: 0 !important;}
|
||||
.pt-0,.py-0 {padding-top: 0 !important;}
|
||||
.pr-0,.px-0 {padding-right: 0 !important;}
|
||||
.pb-0,.py-0 {padding-bottom: 0 !important;}
|
||||
.pl-0,.px-0 {padding-left: 0 !important;}
|
||||
.p-1 {padding: 0.25rem !important;}
|
||||
.pt-1,.py-1 {padding-top: 0.25rem !important;}
|
||||
.pr-1,.px-1 {padding-right: 0.25rem !important;}
|
||||
.pb-1,.py-1 {padding-bottom: 0.25rem !important;}
|
||||
.pl-1,.px-1 {padding-left: 0.25rem !important;}
|
||||
.p-2 {padding: 0.5rem !important;}
|
||||
.pt-2,.py-2 {padding-top: 0.5rem !important;}
|
||||
.pr-2,.px-2 {padding-right: 0.5rem !important;}
|
||||
.pb-2,.py-2 {padding-bottom: 0.5rem !important;}
|
||||
.pl-2,.px-2 {padding-left: 0.5rem !important;}
|
||||
.p-3 {padding: 1rem !important;}
|
||||
.pt-3,.py-3 {padding-top: 1rem !important;}
|
||||
.pr-3,.px-3 {padding-right: 1rem !important;}
|
||||
.pb-3,.py-3 {padding-bottom: 1rem !important;}
|
||||
.pl-3,.px-3 {padding-left: 1rem !important;}
|
||||
.p-4 {padding: 1.5rem !important;}
|
||||
.pt-4,.py-4 {padding-top: 1.5rem !important;}
|
||||
.pr-4,.px-4 {padding-right: 1.5rem !important;}
|
||||
.pb-4,.py-4 {padding-bottom: 1.5rem !important;}
|
||||
.pl-4,.px-4 {padding-left: 1.5rem !important;}
|
||||
.p-5 {padding: 3rem !important;}
|
||||
.pt-5,.py-5 {padding-top: 3rem !important;}
|
||||
.pr-5,.px-5 {padding-right: 3rem !important;}
|
||||
.pb-5,.py-5 {padding-bottom: 3rem !important;}
|
||||
.pl-5,.px-5 {padding-left: 3rem !important;}
|
||||
|
||||
.m-n1 {margin: -0.25rem !important;}
|
||||
.mt-n1,.my-n1 {margin-top: -0.25rem !important;}
|
||||
.mr-n1,.mx-n1 {margin-right: -0.25rem !important;}
|
||||
.mb-n1,.my-n1 {margin-bottom: -0.25rem !important;}
|
||||
.ml-n1,.mx-n1 {margin-left: -0.25rem !important;}
|
||||
.m-n2 {margin: -0.5rem !important;}
|
||||
.mt-n2,.my-n2 {margin-top: -0.5rem !important;}
|
||||
.mr-n2,.mx-n2 {margin-right: -0.5rem !important;}
|
||||
.mb-n2,.my-n2 {margin-bottom: -0.5rem !important;}
|
||||
.ml-n2,.mx-n2 {margin-left: -0.5rem !important;}
|
||||
.m-n3 {margin: -1rem !important;}
|
||||
.mt-n3,.my-n3 {margin-top: -1rem !important;}
|
||||
.mr-n3,.mx-n3 {margin-right: -1rem !important;}
|
||||
.mb-n3,.my-n3 {margin-bottom: -1rem !important;}
|
||||
.ml-n3,.mx-n3 {margin-left: -1rem !important;}
|
||||
.m-n4 {margin: -1.5rem !important;}
|
||||
.mt-n4,.my-n4 {margin-top: -1.5rem !important;}
|
||||
.mr-n4,.mx-n4 {margin-right: -1.5rem !important;}
|
||||
.mb-n4,.my-n4 {margin-bottom: -1.5rem !important;}
|
||||
.ml-n4,.mx-n4 {margin-left: -1.5rem !important;}
|
||||
.m-n5 {margin: -3rem !important;}
|
||||
.mt-n5,.my-n5 {margin-top: -3rem !important;}
|
||||
.mr-n5,.mx-n5 {margin-right: -3rem !important;}
|
||||
.mb-n5,.my-n5 { margin-bottom: -3rem !important;}
|
||||
.ml-n5,.mx-n5 {margin-left: -3rem !important;}
|
||||
.m-auto {margin: auto !important;}
|
||||
.mt-auto,.my-auto {margin-top: auto !important;}
|
||||
.mr-auto,.mx-auto {margin-right: auto !important;}
|
||||
.mb-auto,.my-auto {margin-bottom: auto !important;}
|
||||
.ml-auto,.mx-auto {margin-left: auto !important;}
|
||||
|
||||
.clearfix::after {display: block;clear: both;content: "";}
|
||||
.float-left {float: left !important;}
|
||||
.float-right {float: right !important;}
|
||||
.float-none {float: none !important;}
|
||||
|
||||
.stretched-link::after {position: absolute;top: 0;right: 0;bottom: 0;left: 0;z-index: 1;content: "";}
|
||||
.position-static {position: static !important;}
|
||||
.position-relative {position: relative !important;}
|
||||
.position-absolute {position: absolute !important;}
|
||||
.position-fixed {position: fixed !important;}
|
||||
|
||||
.d-inline {display: inline !important;}
|
||||
.d-inline-block {display: inline-block !important;}
|
||||
.d-block {display: block !important;}
|
||||
.d-grid {display: grid !important;}
|
||||
.d-table {display: table !important;}
|
||||
.d-table-row {display: table-row !important;}
|
||||
.d-table-cell {display: table-cell !important;}
|
||||
.d-flex {display: flex !important;}
|
||||
.d-inline-flex {display: inline-flex !important;}
|
||||
.d-none {display: none !important;}
|
||||
.display-none {display: none;}
|
||||
|
||||
.flex-row {flex-direction: row !important;}
|
||||
.flex-column {flex-direction: column !important;}
|
||||
.flex-row-reverse {flex-direction: row-reverse !important;}
|
||||
.flex-column-reverse {flex-direction: column-reverse !important;}
|
||||
.flex-wrap {flex-wrap: wrap !important;}
|
||||
.flex-nowrap {flex-wrap: nowrap !important;}
|
||||
.flex-wrap-reverse {flex-wrap: wrap-reverse !important;}
|
||||
.flex-fill {flex: 1 1 auto !important;}
|
||||
.flex-grow-0 {flex-grow: 0 !important;}
|
||||
.flex-grow-1 {flex-grow: 1 !important;}
|
||||
.flex-shrink-0 {flex-shrink: 0 !important;}
|
||||
.flex-shrink-1 {flex-shrink: 1 !important;}
|
||||
.justify-content-start {justify-content: flex-start !important;}
|
||||
.justify-content-end {justify-content: flex-end !important;}
|
||||
.justify-content-center {justify-content: center !important;}
|
||||
.justify-content-between {justify-content: space-between !important;}
|
||||
.justify-content-around {justify-content: space-around !important;}
|
||||
.align-items-start {align-items: flex-start !important;}
|
||||
.align-items-end {align-items: flex-end !important;}
|
||||
.align-items-center {align-items: center !important;}
|
||||
.align-items-baseline {align-items: baseline !important;}
|
||||
.align-items-stretch {align-items: stretch !important;}
|
||||
.align-content-start {align-content: flex-start !important;}
|
||||
.align-content-end {align-content: flex-end !important;}
|
||||
.align-content-center {align-content: center !important;}
|
||||
.align-content-between {align-content: space-between !important;}
|
||||
.align-content-around {align-content: space-around !important;}
|
||||
.align-content-stretch {align-content: stretch !important;}
|
||||
.align-self-auto {align-self: auto !important;}
|
||||
.align-self-start {align-self: flex-start !important;}
|
||||
.align-self-end {align-self: flex-end !important;}
|
||||
.align-self-center {align-self: center !important;}
|
||||
.align-self-baseline {align-self: baseline !important;}
|
||||
.align-self-stretch {align-self: stretch !important;}
|
||||
|
||||
.border {border: 1px solid #dee2e6 !important;}
|
||||
.border-top {border-top: 1px solid #dee2e6 !important;}
|
||||
.border-right {border-right: 1px solid #dee2e6 !important;}
|
||||
.border-bottom {border-bottom: 1px solid #dee2e6 !important;}
|
||||
.border-left {border-left: 1px solid #dee2e6 !important;}
|
||||
.border-0 {border: 0 !important;}
|
||||
.border-top-0 {border-top: 0 !important;}
|
||||
.border-right-0 {border-right: 0 !important;}
|
||||
.border-dark {border-color: #aaa !important;}
|
||||
|
||||
.stretched-link::after { position: absolute; top: 0;right: 0;bottom: 0;left: 0;z-index: 1;pointer-events: auto;content: "";background-color: rgba(0, 0, 0, 0);}
|
||||
|
||||
/* autocomplete */
|
||||
.autocomplete-w1 {position:absolute; top:0px; left:0px; margin:6px 0 0 6px;}
|
||||
.autocomplete { border:1px solid #999; background:#FFF; cursor:default; text-align:left; overflow:auto; min-width: 300px; margin:-2px 6px 6px -6px;}
|
||||
.autocomplete .selected { background:#F0F0F0; }
|
||||
.autocomplete div { padding:2px 5px; white-space:nowrap; }
|
||||
.autocomplete strong { font-weight:normal; color:#3399FF; }
|
||||
|
||||
.autocomplete-suggestions {
|
||||
overflow: auto;
|
||||
/*overflow-y: auto;*/
|
||||
min-width: 300px;
|
||||
border:1px solid #999;
|
||||
background: #fff;
|
||||
margin:-1px 0 0 0;
|
||||
}
|
||||
.autocomplete-suggestions strong { color:#3399FF; }
|
||||
.autocomplete-suggestion {
|
||||
cursor: pointer;
|
||||
margin:6px 5px;
|
||||
white-space:nowrap;
|
||||
}
|
||||
|
||||
/* формы */
|
||||
form .form-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-top: .5rem;
|
||||
}
|
||||
form .required:after {
|
||||
content: '*';
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
}
|
||||
.form-group label {
|
||||
width: 50%;
|
||||
}
|
||||
.form-group input[type=text] {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
46
simpla/design/html/action_photo.tpl
Normal file
@@ -0,0 +1,46 @@
|
||||
{literal}
|
||||
|
||||
|
||||
<link href="/js/file2/file.css?v=2" media="all" rel="stylesheet" type="text/css" />
|
||||
<script src="/js/file2/uploader.js"></script>
|
||||
<script src="/js/file2/file.js?v=21"></script>
|
||||
<div class="clearfix" style="clear: both;"></div>
|
||||
<hr />
|
||||
<span class="btn fileinput-btn btn-info button_green" style="display: inline-block;" id="art-files-input"><i class="fa fa-plus"> Добавить файл</i>
|
||||
<input type="file" multiple name="file"></span>
|
||||
<div class="well2" style="margin-top: 10px;width: 90%;">
|
||||
|
||||
|
||||
<div class="sx-form-images" style="margin-top: 20px;">
|
||||
{/literal}
|
||||
{foreach from=$action_photos item=ph}
|
||||
<div class="sx-form-preview" style="" data-id="{$ph->id}">
|
||||
<img src="{$ph->img}" style3="width: 120px">
|
||||
|
||||
<div class="sx-move-photo">
|
||||
<img src="/images/move.png">
|
||||
</div>
|
||||
|
||||
<div class="sx-remove-photo">
|
||||
<button type="button" class="btn btn-danger btn-xs sx-form-image-remove" data-id="{$ph->id}"><b>X</b></button>
|
||||
</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
{literal}
|
||||
|
||||
</div>
|
||||
<div class="clearfix" style="clear:both"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(function(){
|
||||
var sxFile = new sxFormFile();
|
||||
{/literal}
|
||||
sxFile.init({$post->id}, '/simpla/ajax/file_action.php');
|
||||
{literal}
|
||||
})
|
||||
</script>
|
||||
|
||||
{/literal}
|
||||
152
simpla/design/html/actions.tpl
Normal file
@@ -0,0 +1,152 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
|
||||
<li><a href="index.php?module=BlogAdmin">Блог</a></li>
|
||||
<li><a href="index.php?module=ArticlesAdmin">Примеры работ</a></li>
|
||||
<li><a href="index.php?module=ArticleCategoriesAdmin">Категории примеров работ</a></li>
|
||||
<li class="active"><a href="{url module=ActionsAdmin id=null page=null}">Акции</a></li>
|
||||
<li><a href="{url module=MarkasAdmin id=null page=null}">Марки и модели</a></li>
|
||||
{/capture}
|
||||
{* Title *}
|
||||
{$meta_title='Акции' scope=parent}
|
||||
|
||||
{* Поиск *}
|
||||
{if $posts || $keyword}
|
||||
<form method="get">
|
||||
<div id="search">
|
||||
<input type="hidden" name="module" value='BlogAdmin'>
|
||||
<input class="search" type="text" name="keyword" value="{$keyword|escape}" />
|
||||
<input class="search_button" type="submit" value=""/>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
{if $keyword && $posts_count}
|
||||
<h1>{$posts_count|plural:'Нашлась':'Нашлись':'Нашлись'} {$posts_count} {$posts_count|plural:'запись':'записей':'записи'}</h1>
|
||||
{elseif $posts_count}
|
||||
<h1>{$posts_count} {$posts_count|plural:'запись':'записей':'записи'} в акциях</h1>
|
||||
{else}
|
||||
<h1>Нет записей</h1>
|
||||
{/if}
|
||||
<a class="add" href="{url module=ActionsPostAdmin return=$smarty.server.REQUEST_URI}">Добавить запись</a>
|
||||
</div>
|
||||
|
||||
{if $posts}
|
||||
<div id="main_list">
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
<form id="form_list" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list">
|
||||
{foreach $posts as $post}
|
||||
<div class="{if !$post->visible}invisible{/if} row">
|
||||
<input type="hidden" name="positions[{$post->id}]" value="{$post->position}">
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$post->id}" />
|
||||
</div>
|
||||
<div class="name cell">
|
||||
<a href="{url module=ActionsPostAdmin id=$post->id return=$smarty.server.REQUEST_URI}">{$post->name|escape}</a>
|
||||
<br>
|
||||
{$post->date|date}
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="preview" title="Предпросмотр в новом окне" href="../actions/{$post->url}" target="_blank"></a>
|
||||
<a class="enable" title="Активна" href="#"></a>
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="enable">Сделать видимыми</option>
|
||||
<option value="disable">Сделать невидимыми</option>
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', 1-$('#list input[type="checkbox"][name*="check"]').attr('checked'));
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Скрыт/Видим
|
||||
$("a.enable").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest(".row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = line.hasClass('invisible')?1:0;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'actions', 'id': id, 'values': {'visible': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
line.removeClass('invisible');
|
||||
else
|
||||
line.addClass('invisible');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form").submit(function() {
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
212
simpla/design/html/actions_post.tpl
Normal file
@@ -0,0 +1,212 @@
|
||||
{capture name=tabs}
|
||||
<li class="active"><a href="{url module=ActionsAdmin id=null page=null}">Акции</a></li>
|
||||
{/capture}
|
||||
|
||||
{if $post->id}
|
||||
{$meta_title = $post->name scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новая акция' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Подключаем Tiny MCE *}
|
||||
{include file='tinymce_init.tpl'}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script src="design/js/jquery/datepicker/jquery.ui.datepicker-ru.js"></script>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
$('input[name="date"]').datepicker({
|
||||
regional:'ru'
|
||||
});
|
||||
|
||||
// Автозаполнение мета-тегов
|
||||
meta_title_touched = true;
|
||||
meta_keywords_touched = true;
|
||||
meta_description_touched = true;
|
||||
url_touched = true;
|
||||
update = {/literal}{if $post->url}true;{else}false;{/if}{literal}
|
||||
|
||||
if($('input[name="meta_title"]').val() == generate_meta_title() || $('input[name="meta_title"]').val() == '')
|
||||
meta_title_touched = false;
|
||||
if($('input[name="meta_keywords"]').val() == generate_meta_keywords() || $('input[name="meta_keywords"]').val() == '')
|
||||
meta_keywords_touched = false;
|
||||
if($('textarea[name="meta_description"]').val() == generate_meta_description() || $('textarea[name="meta_description"]').val() == '')
|
||||
meta_description_touched = false;
|
||||
if($('input[name="url"]').val() == generate_url() || $('input[name="url"]').val() == '')
|
||||
url_touched = false;
|
||||
|
||||
$('input[name="meta_title"]').change(function() { meta_title_touched = true; });
|
||||
$('input[name="meta_keywords"]').change(function() { meta_keywords_touched = true; });
|
||||
$('textarea[name="meta_description"]').change(function() { meta_description_touched = true; });
|
||||
$('input[name="url"]').change(function() { url_touched = true; });
|
||||
|
||||
$('input[name="name"]').keyup(function() { set_meta(); });
|
||||
$('select[name="brand_id"]').change(function() { set_meta(); });
|
||||
$('select[name="categories[]"]').change(function() { set_meta(); });
|
||||
|
||||
});
|
||||
|
||||
function set_meta()
|
||||
{
|
||||
if(!meta_title_touched && !update)
|
||||
// $('input[name="meta_title"]').val(generate_meta_title());
|
||||
if(!meta_keywords_touched && !update)
|
||||
// $('input[name="meta_keywords"]').val(generate_meta_keywords());
|
||||
if(!meta_description_touched && !update)
|
||||
{
|
||||
descr = $('textarea[name="meta_description"]');
|
||||
descr.val(generate_meta_description());
|
||||
descr.scrollTop(descr.outerHeight());
|
||||
}
|
||||
if(!url_touched && !update)
|
||||
$('input[name="url"]').val(generate_url());
|
||||
}
|
||||
|
||||
function generate_meta_title()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_keywords()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_description()
|
||||
{
|
||||
if(typeof(tinyMCE.get("annotation")) =='object')
|
||||
{
|
||||
description = tinyMCE.get("annotation").getContent().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
|
||||
return description;
|
||||
}
|
||||
else
|
||||
return $('textarea[name=annotation]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
|
||||
}
|
||||
|
||||
function generate_url()
|
||||
{
|
||||
url = $('input[name="name"]').val();
|
||||
url = url.replace(/[\s]+/gi, '-');
|
||||
url = translit(url);
|
||||
url = url.replace(/[^0-9a-z_\-]+/gi, '').toLowerCase();
|
||||
return url;
|
||||
}
|
||||
|
||||
function translit(str)
|
||||
{
|
||||
var ru=("А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я").split("-")
|
||||
var en=("A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch-'-'-Y-y-'-'-E-e-YU-yu-YA-ya").split("-")
|
||||
var res = '';
|
||||
for(var i=0, l=str.length; i<l; i++)
|
||||
{
|
||||
var s = str.charAt(i), n = ru.indexOf(s);
|
||||
if(n >= 0) { res += en[n]; }
|
||||
else { res += s; }
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success == 'added'}Запись добавлена{elseif $message_success == 'updated'}Запись обновлена{/if}</span>
|
||||
<a class="link" target="_blank" href="../blog/{$post->url}">Открыть запись на сайте</a>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error == 'url_exists'}Запись с таким адресом уже существует{/if}</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div id="name">
|
||||
<input class="name" name=name type="text" value="{$post->name|escape}"/>
|
||||
<input name=id type="hidden" value="{$post->id|escape}"/>
|
||||
<div class="checkbox">
|
||||
<input name=visible value='1' type="checkbox" id="active_checkbox" {if $post->visible}checked{/if}/> <label for="active_checkbox">Активна</label>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block">
|
||||
<ul>
|
||||
<li><label class=property>Дата</label><input type=text name=date value='{$post->date|date}'></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="block layer">
|
||||
<!-- Параметры страницы (The End)-->
|
||||
<h2>Параметры страницы</h2>
|
||||
<!-- Параметры страницы -->
|
||||
<ul>
|
||||
<li><label class=property>Адрес</label><div class="page_url"> /actions/</div><input name="url" class="page_url" type="text" value="{$post->url|escape}" /></li>
|
||||
<li><label class=property>Заголовок</label><input name="meta_title" type="text" value="{$post->meta_title|escape}" /></li>
|
||||
<li><label class=property>Ключевые слова</label><input name="meta_keywords" type="text" value="{$post->meta_keywords|escape}" /></li>
|
||||
<li><label class=property>Описание</label><textarea name="meta_description" />{$post->meta_description|escape}</textarea></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Правая колонка свойств товара -->
|
||||
<div id="column_right">
|
||||
<!-- Изображение категории -->
|
||||
<div class="block layer images">
|
||||
<h2>Изображение</h2>
|
||||
<input class='upload_image' name=image type=file>
|
||||
<input type=hidden name="delete_image" value="">
|
||||
{if $post->image}
|
||||
<ul>
|
||||
<li>
|
||||
<a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a>
|
||||
<img src="{$post->image|resizepost:100:100}" alt="" />
|
||||
</li>
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
<!-- Правая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Описагние товара -->
|
||||
<div class="block layer">
|
||||
<h2>Краткое описание</h2>
|
||||
<textarea name="annotation" class='editor_small'>{$post->annotation|escape}</textarea>
|
||||
</div>
|
||||
|
||||
<div class="block">
|
||||
<h2>Полное описание</h2>
|
||||
<textarea name="body" class='editor_large'>{$post->text|escape}</textarea>
|
||||
</div>
|
||||
<!-- Описание товара (The End)-->
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
{if $post->id}{include file="action_photo.tpl"}{/if}
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
606
simpla/design/html/article.tpl
Normal file
@@ -0,0 +1,606 @@
|
||||
{capture name=tabs}
|
||||
<li><a href="index.php?module=BlogAdmin">Блог</a></li>
|
||||
<li class="active"><a href="index.php?module=ArticlesAdmin">Статьи</a></li>
|
||||
<li><a href="index.php?module=ArticleCategoriesAdmin">Категории статей</a></li>
|
||||
<li><a href="{url module=MarkasAdmin id=null page=null}">Марки и модели</a></li>
|
||||
{/capture}
|
||||
|
||||
{if $article->id}
|
||||
{$meta_title = $article->name scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новая статья' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Подключаем Tiny MCE *}
|
||||
{include file='tinymce_init.tpl'}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script src="design/js/jquery/datepicker/jquery.ui.datepicker-ru.js"></script>
|
||||
<script src="design/js/autocomplete/jquery.autocomplete-min.js"></script>
|
||||
<style>
|
||||
.autocomplete-w1 {position:absolute; top:0px; left:0px; margin:6px 0 0 6px; /* IE6 fix: */ _background:none; _margin:1px 0 0 0; }
|
||||
.autocomplete { border:1px solid #999; background:#FFF; cursor:default; text-align:left; overflow-x:auto; min-width: 300px; overflow-y: auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; }
|
||||
.autocomplete .selected { background:#F0F0F0; }
|
||||
.autocomplete div { padding:2px 5px; white-space:nowrap; }
|
||||
.autocomplete strong { font-weight:normal; color:#3399FF; }
|
||||
</style>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
// Удаление изображений
|
||||
$(".images a.delete").click( function() {
|
||||
$("input[name='delete_image']").val('1');
|
||||
$(this).closest("ul").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
// Добавление категории
|
||||
$('#product_categories .add').click(function() {
|
||||
$("#product_categories ul li:last").clone(false).appendTo('#product_categories ul').fadeIn('slow').find("select[name*=categories]:last").focus();
|
||||
$("#product_categories ul li:last span.add").hide();
|
||||
$("#product_categories ul li:last span.delete").show();
|
||||
return false;
|
||||
});
|
||||
|
||||
// Удаление категории
|
||||
$("#product_categories .delete").live('click', function() {
|
||||
$(this).closest("li").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
// Удаление связанноq статьи
|
||||
$(".related_articles a.delete").live('click', function() {
|
||||
$(this).closest("div.row").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
$(".related_markas a.delete").live('click', function() {
|
||||
$(this).closest("div.row").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
$(".related_models a.delete").live('click', function() {
|
||||
$(this).closest("div.row").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
// Добавление связанной статьи
|
||||
var new_related_article = $('#new_related_article').clone(true);
|
||||
$('#new_related_article').remove().removeAttr('id');
|
||||
|
||||
$("input#related_articles").autocomplete({
|
||||
serviceUrl:'ajax/search_articles.php',
|
||||
minChars:0,
|
||||
noCache: false,
|
||||
onSelect:
|
||||
function(value, data){
|
||||
new_item = new_related_article.clone().appendTo('.related_articles');
|
||||
new_item.removeAttr('id');
|
||||
new_item.find('a.related_article_name').html(data.name);
|
||||
new_item.find('a.related_article_name').attr('href', 'index.php?module=ArticleAdmin&id='+data.id);
|
||||
new_item.find('input[name*="related_articles"]').val(data.id);
|
||||
$("#related_articles").val('');
|
||||
new_item.show();
|
||||
},
|
||||
fnFormatResult:
|
||||
function(value, data, currentValue){
|
||||
var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
|
||||
var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
|
||||
return value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
var new_related_marka = $('#new_related_marka').clone(true);
|
||||
$('#new_related_marka').remove().removeAttr('id');
|
||||
|
||||
$("input#related_markas").autocomplete({
|
||||
serviceUrl:'ajax/search_markas.php',
|
||||
minChars:0,
|
||||
noCache: false,
|
||||
onSelect:
|
||||
function(value, data){
|
||||
new_item = new_related_marka.clone().appendTo('.related_markas');
|
||||
new_item.removeAttr('id');
|
||||
new_item.find('a.related_marka_name').html(data.name);
|
||||
new_item.find('a.related_marka_name').attr('href', 'index.php?module=MarkaAdmin&id='+data.id);
|
||||
new_item.find('input[name*="related_markas"]').val(data.id);
|
||||
$("#related_markas").val('');
|
||||
new_item.show();
|
||||
},
|
||||
fnFormatResult:
|
||||
function(value, data, currentValue){
|
||||
var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
|
||||
var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
|
||||
return value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
var new_related_model = $('#new_related_model').clone(true);
|
||||
$('#new_related_model').remove().removeAttr('id');
|
||||
|
||||
$("input#related_models").autocomplete({
|
||||
serviceUrl:'ajax/search_models.php',
|
||||
minChars:0,
|
||||
noCache: false,
|
||||
onSelect:
|
||||
function(value, data){
|
||||
new_item = new_related_model.clone().appendTo('.related_models');
|
||||
new_item.removeAttr('id');
|
||||
new_item.find('a.related_model_name').html(data.name);
|
||||
new_item.find('a.related_model_name').attr('href', 'index.php?module=ModelAdmin&id='+data.id);
|
||||
new_item.find('input[name*="related_models"]').val(data.id);
|
||||
$("#related_models").val('');
|
||||
new_item.show();
|
||||
},
|
||||
fnFormatResult:
|
||||
function(value, data, currentValue){
|
||||
var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
|
||||
var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
|
||||
return value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$(".related_pages a.delete").live('click', function() {
|
||||
$(this).closest("div.row").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
// Добавление связанной статьи
|
||||
var new_related_page = $('#new_related_page').clone(true);
|
||||
$('#new_related_page').remove().removeAttr('id');
|
||||
|
||||
$("input#related_pages").autocomplete({
|
||||
serviceUrl:'ajax/search_services.php',
|
||||
minChars:0,
|
||||
noCache: false,
|
||||
onSelect:
|
||||
function(value, data){
|
||||
new_item = new_related_page.clone().appendTo('.related_pages');
|
||||
new_item.removeAttr('id');
|
||||
new_item.find('a.related_page_name').html(data.name);
|
||||
new_item.find('a.related_page_name').attr('href', 'index.php?module=pageAdmin&id='+data.id);
|
||||
new_item.find('input[name*="related_pages"]').val(data.id);
|
||||
$("#related_pages").val('');
|
||||
new_item.show();
|
||||
},
|
||||
fnFormatResult:
|
||||
function(value, data, currentValue){
|
||||
var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
|
||||
var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
|
||||
return value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
// Удаление связанного товара
|
||||
$(".related_products a.delete").live('click', function() {
|
||||
$(this).closest("div.row").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
// Добавление связанного товара
|
||||
var new_related_product = $('#new_related_product').clone(true);
|
||||
$('#new_related_product').remove().removeAttr('id');
|
||||
|
||||
$("input#related_products").autocomplete({
|
||||
serviceUrl:'ajax/search_products.php',
|
||||
minChars:0,
|
||||
noCache: false,
|
||||
onSelect:
|
||||
function(value, data){
|
||||
new_item = new_related_product.clone().appendTo('.related_products');
|
||||
new_item.removeAttr('id');
|
||||
new_item.find('a.related_product_name').html(data.name);
|
||||
new_item.find('a.related_product_name').attr('href', 'index.php?module=ProductAdmin&id='+data.id);
|
||||
new_item.find('input[name*="related_products"]').val(data.id);
|
||||
$("#related_products").val('');
|
||||
new_item.show();
|
||||
},
|
||||
fnFormatResult:
|
||||
function(value, data, currentValue){
|
||||
var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
|
||||
var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
|
||||
return value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
$('input[name="date"]').datepicker({
|
||||
regional:'ru'
|
||||
});
|
||||
|
||||
// Автозаполнение мета-тегов
|
||||
meta_title_touched = true;
|
||||
meta_keywords_touched = true;
|
||||
meta_description_touched = true;
|
||||
url_touched = false;
|
||||
update = {/literal}{if $article->url}true;{else}false;{/if}{literal}
|
||||
|
||||
if($('input[name="meta_title"]').val() == generate_meta_title() || $('input[name="meta_title"]').val() == '')
|
||||
meta_title_touched = false;
|
||||
if($('input[name="meta_keywords"]').val() == generate_meta_keywords() || $('input[name="meta_keywords"]').val() == '')
|
||||
meta_keywords_touched = false;
|
||||
if($('textarea[name="meta_description"]').val() == generate_meta_description() || $('textarea[name="meta_description"]').val() == '')
|
||||
meta_description_touched = false;
|
||||
if($('input[name="url"]').val() == generate_url() || $('input[name="url"]').val() == '')
|
||||
url_touched = false;
|
||||
|
||||
$('input[name="meta_title"]').change(function() { meta_title_touched = true; });
|
||||
$('input[name="meta_keywords"]').change(function() { meta_keywords_touched = true; });
|
||||
$('textarea[name="meta_description"]').change(function() { meta_description_touched = true; });
|
||||
$('input[name="url"]').change(function() { url_touched = true; });
|
||||
|
||||
$('input[name="name"]').keyup(function() { set_meta(); });
|
||||
$('select[name="brand_id"]').change(function() { set_meta(); });
|
||||
$('select[name="categories[]"]').change(function() { set_meta(); });
|
||||
|
||||
});
|
||||
|
||||
function set_meta()
|
||||
{
|
||||
if(!meta_title_touched)
|
||||
// $('input[name="meta_title"]').val(generate_meta_title());
|
||||
if(!meta_keywords_touched)
|
||||
// $('input[name="meta_keywords"]').val(generate_meta_keywords());
|
||||
if(!meta_description_touched)
|
||||
{
|
||||
descr = $('textarea[name="meta_description"]');
|
||||
// descr.val(generate_meta_description());
|
||||
descr.scrollTop(descr.outerHeight());
|
||||
}
|
||||
if(!url_touched && !update)
|
||||
$('input[name="url"]').val(generate_url());
|
||||
}
|
||||
|
||||
function generate_meta_title()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_keywords()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_description()
|
||||
{
|
||||
if(typeof(tinyMCE.get("annotation")) =='object')
|
||||
{
|
||||
description = tinyMCE.get("annotation").getContent().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
|
||||
return description;
|
||||
}
|
||||
else
|
||||
return $('textarea[name=annotation]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
|
||||
}
|
||||
|
||||
function generate_url()
|
||||
{
|
||||
url = $('input[name="name"]').val();
|
||||
url = url.replace(/[\s]+/gi, '-');
|
||||
url = translit(url);
|
||||
url = url.replace(/[^0-9a-z_\-]+/gi, '').toLowerCase();
|
||||
return url;
|
||||
}
|
||||
|
||||
function translit(str)
|
||||
{
|
||||
var ru=("А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я").split("-")
|
||||
var en=("A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch-'-'-Y-y-'-'-E-e-YU-yu-YA-ya").split("-")
|
||||
var res = '';
|
||||
for(var i=0, l=str.length; i<l; i++)
|
||||
{
|
||||
var s = str.charAt(i), n = ru.indexOf(s);
|
||||
if(n >= 0) { res += en[n]; }
|
||||
else { res += s; }
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success == 'added'}Запись добавлена{elseif $message_success == 'updated'}Запись обновлена{/if}</span>
|
||||
<a class="link" target="_blank" href="../article/{$article->url}">Открыть запись на сайте</a>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error == 'url_exists'}Запись с таким адресом уже существует{/if}</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div id="name">
|
||||
<input class="name" name=name type="text" value="{$article->name|escape}"/>
|
||||
<input name=id type="hidden" value="{$article->id|escape}"/>
|
||||
<div class="checkbox">
|
||||
<input name=visible value='1' type="checkbox" id="active_checkbox" {if $article->visible}checked{/if}/> <label for="active_checkbox">Активна</label>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{if $article->id && $article->firstCategory && $article->firstCategory->id == 3}
|
||||
<div style="margin-top: -15px;margin-bottom: 10px;">
|
||||
с формой заказа <a target="_blank" href="/{$config->worksUrl}/{$article->url|escape}/?showform=1">https://atomicgarage.ru/{$config->worksUrl}/{$article->url|escape}/?showform=1</a>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div id="product_categories" {if !$categories}style='display:none;'{/if}>
|
||||
<label>Категория</label>
|
||||
<div>
|
||||
<ul>
|
||||
{foreach name=categories from=$article_categories item=product_category}
|
||||
<li>
|
||||
<select name="categories[]">
|
||||
{function name=category_select level=0}
|
||||
{foreach from=$categories item=category}
|
||||
<option {if !$category->visible}style="color:#999"{/if} value='{$category->id}' {if $category->id == $selected_id}selected{/if} category_name='{$category->name|escape}'>{section name=sp loop=$level} {/section}{$category->name|escape}</option>
|
||||
{category_select categories=$category->subcategories selected_id=$selected_id level=$level+1}
|
||||
{/foreach}
|
||||
{/function}
|
||||
{category_select categories=$categories selected_id=$product_category->id}
|
||||
</select>
|
||||
<span {if not $smarty.foreach.categories.first}style='display:none;'{/if} class="add"><i class="dash_link">Дополнительная категория</i></span>
|
||||
<span {if $smarty.foreach.categories.first}style='display:none;'{/if} class="delete"><i class="dash_link">Удалить</i></span>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block">
|
||||
<ul>
|
||||
<li><label class=property>Дата</label><input type=text name=date value='{$article->date|date}'></li>
|
||||
<!--<li><label class=property>Категория</label>
|
||||
<select name="category_id">
|
||||
<option value='0'>Корневая категория</option>
|
||||
{function name=category_select level=0}
|
||||
{foreach from=$cats item=cat}
|
||||
{if $category->id != $cat->id}
|
||||
<option value='{$cat->id}' {if $article->category_id == $cat->id}selected{/if}>{section name=sp loop=$level} {/section}{$cat->name}</option>
|
||||
{category_select cats=$cat->subcategories level=$level+1}
|
||||
{/if}
|
||||
{/foreach}
|
||||
{/function}
|
||||
{category_select cats=$categories}
|
||||
</select>
|
||||
</li>-->
|
||||
</ul>
|
||||
</div>
|
||||
<div class="block layer">
|
||||
<!-- Параметры страницы (The End)-->
|
||||
<h2>Параметры страницы</h2>
|
||||
<!-- Параметры страницы -->
|
||||
<ul>
|
||||
<li>
|
||||
<label class=property>Адрес</label><div class="page_url"> /article/</div><input name="url" class="page_url" type="text" value="{$article->url|escape}" />
|
||||
|
||||
</li>
|
||||
<li><label class=property>Заголовок</label><input name="meta_title" type="text" value="{$article->meta_title|escape}" /></li>
|
||||
<li><label class=property>Ключевые слова</label><input name="meta_keywords" type="text" value="{$article->meta_keywords|escape}" /></li>
|
||||
<li><label class=property>Описание</label><textarea name="meta_description" />{$article->meta_description|escape}</textarea></li>
|
||||
</ul>
|
||||
|
||||
<div class="block layer">
|
||||
<h2>Связанные марки</h2>
|
||||
<div id=list class="related_markas">
|
||||
{foreach from=$related_markas item=related_article}
|
||||
<div class="row">
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_markas[] value='{$related_article->id}'>
|
||||
<a href="{url id=$related_article->id}">{$related_article->name}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
<div id="new_related_marka" class="row" style='display:none;'>
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_markas[] value=''>
|
||||
<a class="related_marka_name" href=""></a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<input type=text name="" id='related_markas' class="input_autocomplete" placeholder='Выберите марку чтобы добавить ее'>
|
||||
</div>
|
||||
<div class="block layer">
|
||||
<h2>Связанные модели</h2>
|
||||
<div id=list class="related_models">
|
||||
{foreach from=$related_models item=related_article}
|
||||
<div class="row">
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_models[] value='{$related_article->id}'>
|
||||
<a href="{url id=$related_article->id}">{$related_article->name}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
<div id="new_related_model" class="row" style='display:none;'>
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_models[] value=''>
|
||||
<a class="related_model_name" href=""></a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<input type=text name="" id='related_models' class="input_autocomplete" placeholder='Выберите модель чтобы добавить ее'>
|
||||
</div>
|
||||
<div class="block layer">
|
||||
<h2>Связанные услуги</h2>
|
||||
<div id=list class="related_pages">
|
||||
{foreach from=$related_pages item=related_page}
|
||||
<div class="row">
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_pages[] value='{$related_page->id}'>
|
||||
<a href="{url id=$related_page->id}">{$related_page->name}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
<div id="new_related_page" class="row" style='display:none;'>
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_pages[] value=''>
|
||||
<a class="related_page_name" href=""></a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<input type=text name=related id='related_pages' class="input_autocomplete" placeholder='Выберите статью чтобы добавить ее'>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Правая колонка свойств товара -->
|
||||
<div id="column_right">
|
||||
|
||||
<!-- Изображение категории -->
|
||||
<div class="block layer images">
|
||||
<h2>Изображение</h2>
|
||||
<input class='upload_image' name=image type=file>
|
||||
<input type=hidden name="delete_image" value="">
|
||||
{if $article->image}
|
||||
<ul>
|
||||
<li>
|
||||
<a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a>
|
||||
<img src="{$article->image|resizepost:100:100}" alt="" />
|
||||
</li>
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="block">
|
||||
<h2>Связанные товары</h2>
|
||||
<div id=list class="related_products">
|
||||
{foreach from=$related_products item=related_product}
|
||||
<div class="row">
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_products[] value='{$related_product->id}'>
|
||||
<a href="/simpla/index.php?module=ProductAdmin&id={$related_product->id}">{$related_product->name}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
<div id="new_related_product" class="row" style='display:none;'>
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_products[] value=''>
|
||||
<a class="related_product_name" href=""></a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<input type=text name=related id='related_products' class="input_autocomplete" placeholder='Выберите товар чтобы добавить его'>
|
||||
</div>
|
||||
|
||||
<div class="block layer">
|
||||
<h2>Связанные статьи</h2>
|
||||
<div id=list class="related_articles">
|
||||
{foreach from=$related_articles item=related_article}
|
||||
<div class="row">
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_articles[] value='{$related_article->id}'>
|
||||
<a href="{url id=$related_article->id}">{$related_article->name}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
<div id="new_related_article" class="row" style='display:none;'>
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_articles[] value=''>
|
||||
<a class="related_article_name" href=""></a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<input type=text name=related id='related_articles' class="input_autocomplete" placeholder='Выберите статью чтобы добавить ее'>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
</div>
|
||||
<!-- Правая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Описагние товара -->
|
||||
<div class="block layer">
|
||||
<h2>Краткое описание</h2>
|
||||
<textarea name="annotation" class='editor_small'>{$article->annotation|escape}</textarea>
|
||||
</div>
|
||||
|
||||
<div class="block">
|
||||
<h2>Полное описание</h2>
|
||||
<textarea name="body" class='editor_large'>{$article->text|escape}</textarea>
|
||||
</div>
|
||||
<!-- Описание товара (The End)-->
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
{if $article->id}{include file="article_photo.tpl"}{/if}
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
142
simpla/design/html/article_categories.tpl
Normal file
@@ -0,0 +1,142 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li><a href="index.php?module=BlogAdmin">Блог</a></li>
|
||||
<li><a href="index.php?module=ArticlesAdmin">Примеры работ</a></li>
|
||||
<li class="active"><a href="index.php?module=ArticleCategoriesAdmin">Категории примеров работ</a></li>
|
||||
<li><a href="{url module=ActionsAdmin id=null page=null}">Акции</a></li>
|
||||
<li><a href="{url module=MarkasAdmin id=null page=null}">Марки и модели</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Категории' scope=parent}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1>Категории примеров работ</h1>
|
||||
<a class="add" href="{url module=ArticleCategoryAdmin return=$smarty.server.REQUEST_URI}">Добавить категорию</a>
|
||||
</div>
|
||||
<!-- Заголовок (The End) -->
|
||||
|
||||
{if $categories}
|
||||
<div id="main_list" class="categories">
|
||||
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
{function name=categories_tree level=0}
|
||||
{if $categories}
|
||||
<div id="list" class="sortable">
|
||||
|
||||
{foreach $categories as $category}
|
||||
<div class="{if !$category->visible}invisible{/if} row">
|
||||
<div class="tree_row">
|
||||
<input type="hidden" name="positions[{$category->id}]" value="{$category->position}">
|
||||
<div class="move cell" style="margin-left:{$level*20}px"><div class="move_zone"></div></div>
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$category->id}" />
|
||||
</div>
|
||||
<div class="cell">
|
||||
<a href="{url module=ArticleCategoryAdmin id=$category->id return=$smarty.server.REQUEST_URI}">{$category->name|escape}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="preview" title="Предпросмотр в новом окне" href="../articles/{$category->url}" target="_blank"></a>
|
||||
<a class="enable" title="Активна" href="#"></a>
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{categories_tree categories=$category->subcategories level=$level+1}
|
||||
</div>
|
||||
{/foreach}
|
||||
|
||||
</div>
|
||||
{/if}
|
||||
{/function}
|
||||
{categories_tree categories=$categories}
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="enable">Сделать видимыми</option>
|
||||
<option value="disable">Сделать невидимыми</option>
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
{else}
|
||||
Нет категорий
|
||||
{/if}
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Сортировка списка
|
||||
$(".sortable").sortable({
|
||||
items:".row",
|
||||
handle: ".move_zone",
|
||||
tolerance:"pointer",
|
||||
scrollSensitivity:40,
|
||||
opacity:0.7,
|
||||
axis: "y",
|
||||
update:function()
|
||||
{
|
||||
$("#list_form input[name*='check']").attr('checked', false);
|
||||
$("#list_form").ajaxSubmit();
|
||||
}
|
||||
});
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', 1-$('#list input[type="checkbox"][name*="check"]').attr('checked'));
|
||||
});
|
||||
|
||||
// Показать категорию
|
||||
$("a.enable").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest(".row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = line.hasClass('invisible')?1:0;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'article_category', 'id': id, 'values': {'visible': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
line.removeClass('invisible');
|
||||
else
|
||||
line.addClass('invisible');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest("div.row").find('input[type="checkbox"][name*="check"]:first').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
|
||||
// Подтвердить удаление
|
||||
$("form").submit(function() {
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
233
simpla/design/html/article_category.tpl
Normal file
@@ -0,0 +1,233 @@
|
||||
{capture name=tabs}
|
||||
<li><a href="index.php?module=BlogAdmin">Блог</a></li>
|
||||
<li><a href="index.php?module=ArticlesAdmin">Статьи</a></li>
|
||||
<li class="active"><a href="index.php?module=ArticleCategoriesAdmin">Категории статей</a></li>
|
||||
<li><a href="{url module=MarkasAdmin id=null page=null}">Марки и модели</a></li>
|
||||
{/capture}
|
||||
{if $category->id}
|
||||
{$meta_title = $category->name scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новая категория' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Подключаем Tiny MCE *}
|
||||
{include file='tinymce_init.tpl'}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script src="design/js/jquery/jquery.js"></script>
|
||||
<script src="design/js/jquery/jquery-ui.min.js"></script>
|
||||
<script src="design/js/autocomplete/jquery.autocomplete-min.js"></script>
|
||||
<style>
|
||||
.autocomplete-w1 { background:url(img/shadow.png) no-repeat bottom right; position:absolute; top:0px; left:0px; margin:6px 0 0 6px; /* IE6 fix: */ _background:none; _margin:1px 0 0 0; }
|
||||
.autocomplete { border:1px solid #999; background:#FFF; cursor:default; text-align:left; overflow-x:auto; min-width: 300px; overflow-y: auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; }
|
||||
.autocomplete .selected { background:#F0F0F0; }
|
||||
.autocomplete div { padding:2px 5px; white-space:nowrap; }
|
||||
.autocomplete strong { font-weight:normal; color:#3399FF; }
|
||||
</style>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
|
||||
// Удаление изображений
|
||||
$(".images a.delete").click( function() {
|
||||
$("input[name='delete_image']").val('1');
|
||||
$(this).closest("ul").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
// Автозаполнение мета-тегов
|
||||
meta_title_touched = true;
|
||||
meta_keywords_touched = true;
|
||||
meta_description_touched = true;
|
||||
url_touched = false;
|
||||
update = {/literal}{if $category->url}true;{else}false;{/if}{literal}
|
||||
|
||||
if($('input[name="meta_title"]').val() == generate_meta_title() || $('input[name="meta_title"]').val() == '')
|
||||
meta_title_touched = false;
|
||||
if($('input[name="meta_keywords"]').val() == generate_meta_keywords() || $('input[name="meta_keywords"]').val() == '')
|
||||
meta_keywords_touched = false;
|
||||
if($('textarea[name="meta_description"]').val() == generate_meta_description() || $('textarea[name="meta_description"]').val() == '')
|
||||
meta_description_touched = false;
|
||||
if($('input[name="url"]').val() == generate_url() || $('input[name="url"]').val() == '')
|
||||
url_touched = false;
|
||||
|
||||
$('input[name="meta_title"]').change(function() { meta_title_touched = true; });
|
||||
$('input[name="meta_keywords"]').change(function() { meta_keywords_touched = true; });
|
||||
$('textarea[name="meta_description"]').change(function() { meta_description_touched = true; });
|
||||
$('input[name="url"]').change(function() { url_touched = true; });
|
||||
|
||||
$('input[name="name"]').keyup(function() { set_meta(); });
|
||||
|
||||
});
|
||||
|
||||
function set_meta()
|
||||
{
|
||||
if(!meta_title_touched)
|
||||
// $('input[name="meta_title"]').val(generate_meta_title());
|
||||
if(!meta_keywords_touched)
|
||||
// $('input[name="meta_keywords"]').val(generate_meta_keywords());
|
||||
if(!meta_description_touched)
|
||||
$('textarea[name="meta_description"]').val(generate_meta_description());
|
||||
if(!url_touched && !update)
|
||||
$('input[name="url"]').val(generate_url());
|
||||
}
|
||||
|
||||
function generate_meta_title()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_keywords()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_description()
|
||||
{
|
||||
if(typeof(tinyMCE.get("description")) =='object')
|
||||
{
|
||||
description = tinyMCE.get("description").getContent().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
|
||||
return description;
|
||||
}
|
||||
else
|
||||
return $('textarea[name=description]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
|
||||
}
|
||||
|
||||
function generate_url()
|
||||
{
|
||||
url = $('input[name="name"]').val();
|
||||
url = url.replace(/[\s]+/gi, '-');
|
||||
url = translit(url);
|
||||
url = url.replace(/[^0-9a-z_\-]+/gi, '').toLowerCase();
|
||||
return url;
|
||||
}
|
||||
|
||||
function translit(str)
|
||||
{
|
||||
var ru=("А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я").split("-")
|
||||
var en=("A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch-'-'-Y-y-'-'-E-e-YU-yu-YA-ya").split("-")
|
||||
var res = '';
|
||||
for(var i=0, l=str.length; i<l; i++)
|
||||
{
|
||||
var s = str.charAt(i), n = ru.indexOf(s);
|
||||
if(n >= 0) { res += en[n]; }
|
||||
else { res += s; }
|
||||
}
|
||||
return res;
|
||||
}
|
||||
</script>
|
||||
|
||||
{/literal}
|
||||
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success=='added'}Категория добавлена{elseif $message_success=='updated'}Категория обновлена{else}{$message_success}{/if}</span>
|
||||
<a class="link" target="_blank" href="../articles/{$category->url}">Открыть категорию на сайте</a>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error=='url_exists'}Категория с таким адресом уже существует{else}{$message_error}{/if}</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div id="name">
|
||||
<input class="name" name=name type="text" value="{$category->name|escape}"/>
|
||||
<input name=id type="hidden" value="{$category->id|escape}"/>
|
||||
<div class="checkbox">
|
||||
<input name=visible value='1' type="checkbox" id="active_checkbox" {if $category->visible}checked{/if}/> <label for="active_checkbox">Активна</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="product_categories">
|
||||
<select name="parent_id">
|
||||
<option value='0'>Корневая категория</option>
|
||||
{function name=category_select level=0}
|
||||
{foreach from=$cats item=cat}
|
||||
{if $category->id != $cat->id}
|
||||
<option value='{$cat->id}' {if $category->parent_id == $cat->id}selected{/if}>{section name=sp loop=$level} {/section}{$cat->name}</option>
|
||||
{category_select cats=$cat->subcategories level=$level+1}
|
||||
{/if}
|
||||
{/foreach}
|
||||
{/function}
|
||||
{category_select cats=$categories}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block layer">
|
||||
<h2>Параметры страницы</h2>
|
||||
<ul>
|
||||
<li><label class=property>Адрес</label><div class="page_url">/articles/</div><input name="url" class="page_url" type="text" value="{$category->url|escape}" /></li>
|
||||
<li><label class=property>Заголовок</label><input name="meta_title" class="simpla_inp" type="text" value="{$category->meta_title|escape}" /></li>
|
||||
<li><label class=property>Ключевые слова</label><input name="meta_keywords" class="simpla_inp" type="text" value="{$category->meta_keywords|escape}" /></li>
|
||||
<li><label class=property>Описание</label><textarea name="meta_description" class="simpla_inp" />{$category->meta_description|escape}</textarea></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
{*
|
||||
<!-- Экспорт-->
|
||||
<div class="block">
|
||||
<h2>Экспорт товара</h2>
|
||||
<ul>
|
||||
<li><input id="exp_yad" type="checkbox" /> <label for="exp_yad">Яндекс Маркет</label> Бид <input class="simpla_inp" type="" name="" value="12" /> руб.</li>
|
||||
<li><input id="exp_goog" type="checkbox" /> <label for="exp_goog">Google Base</label> </li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Свойства товара (The End)-->
|
||||
*}
|
||||
|
||||
</div>
|
||||
|
||||
<div id="column_right">
|
||||
|
||||
<!-- Изображение категории -->
|
||||
<div class="block layer images">
|
||||
<h2>Изображение</h2>
|
||||
<input class='upload_image' name=image type=file>
|
||||
<input type=hidden name="delete_image" value="">
|
||||
{if $category->image}
|
||||
<ul>
|
||||
<li>
|
||||
<a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a>
|
||||
<img src="{$category->image|resizepost:100:100}" alt="" />
|
||||
</li>
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Описагние категории -->
|
||||
<div class="block layer">
|
||||
<h2>Описание</h2>
|
||||
<textarea name="description" class="editor_large">{$category->description|escape}</textarea>
|
||||
</div>
|
||||
<!-- Описание категории (The End)-->
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
|
||||
46
simpla/design/html/article_photo.tpl
Normal file
@@ -0,0 +1,46 @@
|
||||
{literal}
|
||||
|
||||
|
||||
<link href="/js/file2/file.css?v=2" media="all" rel="stylesheet" type="text/css" />
|
||||
<script src="/js/file2/uploader.js"></script>
|
||||
<script src="/js/file2/file.js?v=3"></script>
|
||||
<div class="clearfix" style="clear: both;"></div>
|
||||
<hr />
|
||||
<span class="btn fileinput-btn btn-info button_green" style="display: inline-block;" id="art-files-input"><i class="fa fa-plus"> Добавить файл</i>
|
||||
<input type="file" multiple name="file"></span>
|
||||
<div class="well2" style="margin-top: 10px;width: 90%;">
|
||||
|
||||
|
||||
<div class="sx-form-images" style="margin-top: 20px;">
|
||||
{/literal}
|
||||
{foreach from=$article_photos item=ph}
|
||||
<div class="sx-form-preview" style="" data-id="{$ph->id}">
|
||||
<img src="{$ph->img}" style3="width: 120px">
|
||||
|
||||
<div class="sx-move-photo">
|
||||
<img src="/images/move.png">
|
||||
</div>
|
||||
|
||||
<div class="sx-remove-photo">
|
||||
<button type="button" class="btn btn-danger btn-xs sx-form-image-remove" data-id="{$ph->id}"><b>X</b></button>
|
||||
</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
{literal}
|
||||
|
||||
</div>
|
||||
<div class="clearfix" style="clear:both"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(function(){
|
||||
var sxFile = new sxFormFile();
|
||||
{/literal}
|
||||
sxFile.init({$article->id});
|
||||
{literal}
|
||||
})
|
||||
</script>
|
||||
|
||||
{/literal}
|
||||
173
simpla/design/html/articles.tpl
Normal file
@@ -0,0 +1,173 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li><a href="index.php?module=BlogAdmin">Блог</a></li>
|
||||
<li class="active"><a href="index.php?module=ArticlesAdmin">Примеры работ</a></li>
|
||||
<li><a href="index.php?module=ArticleCategoriesAdmin">Категории примеров работ</a></li>
|
||||
<li><a href="{url module=ActionsAdmin id=null page=null}">Акции</a></li>
|
||||
<li><a href="{url module=MarkasAdmin id=null page=null}">Марки и модели</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Статьи' scope=parent}
|
||||
|
||||
{* Поиск *}
|
||||
{if $articles || $keyword}
|
||||
<form method="get">
|
||||
<div id="search">
|
||||
<input type="hidden" name="module" value='ArticlesAdmin'>
|
||||
<input class="search" type="text" name="keyword" value="{$keyword|escape}" />
|
||||
<input class="search_button" type="submit" value=""/>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
{if $keyword && $articles_count}
|
||||
<h1>{$articles_count|plural:'Нашлась':'Нашлись':'Нашлись'} {$articles_count} {$articles_count|plural:'статья':'статье':'статьи'}</h1>
|
||||
{elseif $articles_count}
|
||||
<h1>{$articles_count} {$articles_count|plural:'статья':'статье':'статьи'}</h1>
|
||||
{else}
|
||||
<h1>Нет примеров работ</h1>
|
||||
{/if}
|
||||
<a class="add" href="{url module=ArticleAdmin return=$smarty.server.REQUEST_URI}">Добавить статью</a>
|
||||
</div>
|
||||
|
||||
{if $articles}
|
||||
<div id="main_list">
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
<form id="form_list" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list">
|
||||
{foreach $articles as $article}
|
||||
<div class="{if !$article->visible}invisible{/if} row">
|
||||
<input type="hidden" name="positions[{$article->id}]" value="{$article->position}">
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$article->id}" />
|
||||
</div>
|
||||
<div class="name cell">
|
||||
<a href="{url module=ArticleAdmin id=$article->id return=$smarty.server.REQUEST_URI}">{$article->name|escape}</a>
|
||||
<br>
|
||||
{$article->date|date} → {$article->category} просмотров: {$article->visited}
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="preview" title="Предпросмотр в новом окне" href="../article/{$article->url}" target="_blank"></a>
|
||||
<a class="enable" title="Активна" href="#"></a>
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="enable">Сделать видимыми</option>
|
||||
<option value="disable">Сделать невидимыми</option>
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div id="right_menu">
|
||||
|
||||
<!-- Категории товаров -->
|
||||
{function name=categories_tree}
|
||||
{if $categories}
|
||||
<ul>
|
||||
{if $categories[0]->parent_id == 0}
|
||||
<li {if !$category->id}class="selected"{/if}><a href="{url category_id=null brand_id=null}">Все категории</a></li>
|
||||
{/if}
|
||||
{foreach $categories as $c}
|
||||
<li category_id="{$c->id}" {if $category->id == $c->id}class="selected"{else}class="droppable category"{/if}><a href='{url keyword=null brand_id=null page=null category_id={$c->id}}'>{$c->name}</a></li>
|
||||
{categories_tree categories=$c->subcategories}
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
{/function}
|
||||
{categories_tree categories=$categories}
|
||||
<!-- Категории товаров (The End)-->
|
||||
|
||||
</div>
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', 1-$('#list input[type="checkbox"][name*="check"]').attr('checked'));
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Скрыт/Видим
|
||||
$("a.enable").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest(".row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = line.hasClass('invisible')?1:0;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'article', 'id': id, 'values': {'visible': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
line.removeClass('invisible');
|
||||
else
|
||||
line.addClass('invisible');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form").submit(function() {
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
0
simpla/design/html/articlesTabs.tpl
Normal file
152
simpla/design/html/backup.tpl
Normal file
@@ -0,0 +1,152 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('import', $manager->permissions)}<li><a href="index.php?module=ImportAdmin">Импорт</a></li>{/if}
|
||||
{if in_array('export', $manager->permissions)}<li><a href="index.php?module=ExportAdmin">Экспорт</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=BackupAdmin">Бекап</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Бекап' scope=parent}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1>Бекап</h1>
|
||||
{if $message_error != 'no_permission'}
|
||||
<a class="add" href="">Создать бекап</a>
|
||||
<form id="hidden" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
<input type="hidden" name="action" value="">
|
||||
<input type="hidden" name="name" value="">
|
||||
</form>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success == 'created'}Бекап создан{elseif $message_success == 'restored'}Бекап восстановлен{/if}</span>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>
|
||||
{if $message_error == 'no_permission'}Установите права на запись в папку {$backup_files_dir}
|
||||
{else}{$message_error}{/if}
|
||||
</span>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $backups}
|
||||
<div id="main_list">
|
||||
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list">
|
||||
{foreach $backups as $backup}
|
||||
<div class="row">
|
||||
{if $message_error != 'no_permission'}
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$backup->name}"/>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="name cell">
|
||||
<a href="files/backup/{$backup->name}">{$backup->name}</a>
|
||||
({if $backup->size>1024*1024}{($backup->size/1024/1024)|round:2} МБ{else}{($backup->size/1024)|round:2} КБ{/if})
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
{if $message_error != 'no_permission'}
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="restore" title="Восстановить этот бекап" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
{if $message_error != 'no_permission'}
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
</form>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:checked)').length>0);
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Восстановить
|
||||
$("a.restore").click(function() {
|
||||
file = $(this).closest(".row").find('[name*="check"]').val();
|
||||
$('form#hidden input[name="action"]').val('restore');
|
||||
$('form#hidden input[name="name"]').val(file);
|
||||
$('form#hidden').submit();
|
||||
return false;
|
||||
});
|
||||
|
||||
// Создать бекап
|
||||
$("a.add").click(function() {
|
||||
$('form#hidden input[name="action"]').val('create');
|
||||
$('form#hidden').submit();
|
||||
return false;
|
||||
});
|
||||
|
||||
$("form#hidden").submit(function() {
|
||||
if($('input[name="action"]').val()=='restore' && !confirm('Текущие данные будут потеряны. Подтвердите восстановление'))
|
||||
return false;
|
||||
});
|
||||
|
||||
$("form#list_form").submit(function() {
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
136
simpla/design/html/banners.add.edit.tpl
Normal file
@@ -0,0 +1,136 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li><a href="index.php?module=BannersAdmin&do=groups">Группы баннеров</a></li>
|
||||
<li><a href="{$smarty.get.return}">Группа » {$banners_group->name}</a></li>
|
||||
<li class="active"><a href="{$smarty.server.REQUEST_URI}">{if $banner->image}Изменить баннер » "{$banner->name}"{else}Добавить баннер{/if}</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Добавить баннер' scope=parent}
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1>{if $banner->image}Изменить баннер "{$banner->name}"{else}Добавить баннер{/if}</h1>{if $smarty.get.return and !$message_success and !$message_error}<a class="button_yellow" href="{$smarty.get.return}">Вернуться</a>{/if}
|
||||
</div>
|
||||
|
||||
<link href="design/css/banners.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success=='added'}Баннер добавлен{elseif $message_success=='updated'}Баннер изменен{else}{$message_success|escape}{/if}</span>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error=='error_uploading_image'}Ошибка загрузки изображения баннера{elseif $message_error=='empty_name'}Введите название баннера{elseif $message_error=='not_image'}Вы не указалии изображение баннера{elseif $message_error=='empty_url'}Вы не указали URL страницы на которую должен ссылаться баннер{else}{$message_error|escape}{/if}</span>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if !$message_success}
|
||||
{* Основная форма *}
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
{if $banner->image}<input type=hidden name="image_exist" value="yes">{/if}
|
||||
<table><tr><td valign="top" style="padding:5px;">
|
||||
<div class="checkbox">
|
||||
<input name="visible" value="1" type="checkbox" {if $banner->visible}checked{/if}/> <label for="active_checkbox">Активен</label>
|
||||
</div>
|
||||
<div class="block layer">
|
||||
<ul>
|
||||
<li><label class=property>Название</label> <input type="text" class="simpla_inp" value="{$banner->name}" name="name"/></li>
|
||||
<li><label class=property>Ссылка</label> <input type="text" class="simpla_inp" value="{$banner->url}" name="url"/></li>
|
||||
<li><label class=property>Изображение баннера</label> <input type="file" class="simpla_inp" value="" name="image"" id="imageFile"/></li>
|
||||
{if $smarty.get.group==1}<li>Ширина баннера 260px!</li>{/if}
|
||||
<li><label class=property>Описание</label> <textarea class="simpla_inp" name="description"/>{$banner->description}</textarea></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td><td id="imageThumb">{if $banner->image}<img src="/{$config->banners_images_dir}{$banner->image}" alt="">{else}БАННЕР<span>изображение отсутсвует</span>{/if}
|
||||
</td></tr></table>
|
||||
|
||||
<br />
|
||||
<div class="block layer">
|
||||
<table><tr><td valign="top" style="padding:5px;">
|
||||
<h2>Баннер отображать на:</h2>
|
||||
<input name="show_all_pages" value="1" type="checkbox" {if $banner->show_all_pages}checked{/if} id="show_all_pages"/> <label for="show_all_pages" class="property" style="display:inline;float:none;color:black;">Показывать на всех страницах сайта</label>
|
||||
<br/><br/>
|
||||
<ul>
|
||||
<li>
|
||||
<label class=property>На страницах:</label>
|
||||
<select name="pages[]" multiple="multiple" size="10" style="width:450px;height:150px;">
|
||||
<option value='0' {if !$banner->page_selected OR 0|in_array:$banner->page_selected}selected{/if}>Не показывать на страницах</option>
|
||||
{foreach from=$pages item=page}
|
||||
{if $page->name != ''}<option value='{$page->id}' {if $banner->page_selected AND $page->id|in_array:$banner->page_selected}selected{/if}>{$page->name|escape}</option>{/if}
|
||||
{/foreach}
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<label class=property>В брендах:</label>
|
||||
<select name="brands[]" multiple="multiple" size="10" style="width:450px;height:150px;">
|
||||
<option value='0' {if !$banner->brand_selected OR 0|in_array:$banner->brand_selected}selected{/if}>Не показывать в брендах</option>
|
||||
{foreach from=$brands item=brand}
|
||||
<option value='{$brand->id}' {if $banner->brand_selected AND $brand->id|in_array:$banner->brand_selected}selected{/if}>{$brand->name|escape}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</li>
|
||||
</ul>
|
||||
</td><td valign="top" style="padding-top:75px; width:50%">
|
||||
<ul><li><label class=property>В категориях:</label>
|
||||
<select name="categories[]" multiple="multiple" size="10" style="width:450px;height:325px;">
|
||||
<option value='0' {if !$banner->category_selected OR 0|in_array:$banner->category_selected}selected{/if}>Не показывать в категориях</option>
|
||||
{function name=category_select level=0}
|
||||
{foreach from=$categories item=category}
|
||||
<option value='{$category->id}' {if $selected AND $category->id|in_array:$selected}selected{/if}>{section name=sp loop=$level} {/section}{$category->name|escape}</option>
|
||||
{category_select categories=$category->subcategories selected=$banner->category_selected level=$level+1}
|
||||
{/foreach}
|
||||
{/function}
|
||||
{category_select categories=$categories selected=$banner->category_selected}
|
||||
</select></li></ul>
|
||||
</td></tr></table>
|
||||
</div>
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
</form>
|
||||
{literal}
|
||||
<script>
|
||||
function handleFileSelect(evt) {
|
||||
var files = evt.target.files; // FileList object
|
||||
|
||||
// Loop through the FileList and render image files as thumbnails.
|
||||
for (var i = 0, f; f = files[i]; i++) {
|
||||
|
||||
// Only process image files.
|
||||
if (!f.type.match('image.*')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var reader = new FileReader();
|
||||
|
||||
// Closure to capture the file information.
|
||||
reader.onload = (function(theFile) {
|
||||
return function(e) {
|
||||
// Render thumbnail.
|
||||
$("#imageThumb").html('<img valign="absmiddle" src="'+e.target.result+'" title="'+escape(theFile.name)+'"/>');
|
||||
};
|
||||
})(f);
|
||||
|
||||
// Read in the image file as a data URL.
|
||||
reader.readAsDataURL(f);
|
||||
}
|
||||
}
|
||||
|
||||
document.getElementById('imageFile').addEventListener('change', handleFileSelect, false);
|
||||
</script>
|
||||
{/literal}
|
||||
{/if}
|
||||
|
||||
56
simpla/design/html/banners.groups.add.edit.tpl
Normal file
@@ -0,0 +1,56 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li><a href="index.php?module=BannersAdmin&do=groups">Группы баннеров</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Добавить/редактировать группу баннеров' scope=parent}
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
{if $smarty.get.return and !$message_success}<a class="button_yellow" href="{$smarty.get.return}">Вернуться</a>{/if}
|
||||
</div>
|
||||
|
||||
<link href="design/css/banners.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success=='added'}Группа "{$group->name}" добавлена{elseif $message_success=='updated'}Группа "{$group->name}" изменена{else}{$message_success|escape}{/if}</span>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error=='empty_name'}Введите название группы баннеров{else}{$message_error|escape}{/if}</span>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if !$message_success}
|
||||
<form method=post enctype="multipart/form-data">
|
||||
<div class="cell group">
|
||||
<div class="banner_wrapper">
|
||||
<div class="group title"><a href="#">{if $action == 'add'}Добавить баннер{else}Редактировать баннер "{$group->name}"{/if}</a></div>
|
||||
<form method="get">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div style="padding:10px 0;">
|
||||
<label for="group_name" class="property">Название группы:</label> <input type="text" style="width:300px;" value="{$group->name}" name="name">
|
||||
</div>
|
||||
<div class="tip">
|
||||
<input type="submit" style="float:none;" value="{if $action == 'add'}Добавить баннер{else}Редактировать"{/if}" id="submit" class="button_green button_save">
|
||||
<input type="button" style="float:none;" value="Отменить" id="submit" class="button_red button_save" onclick="javascript:location.href='{$smarty.get.return}'">
|
||||
</div></form>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
119
simpla/design/html/banners.groups.tpl
Normal file
@@ -0,0 +1,119 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li class="active"><a href="index.php?module=BannersAdmin&do=groups">Группы баннеров</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Управление баннерами сайта' scope=parent}
|
||||
|
||||
<link href="design/css/banners.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<div id="header">
|
||||
{if !$function}
|
||||
<a class="add" href="{url module=BannersAdmin do=groups action=add return=$smarty.server.REQUEST_URI}">Создать группу баннеров</a><br/><br/><br/>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
{* Основная форма *}
|
||||
{if $groups}
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list">
|
||||
{foreach $groups as $group}
|
||||
<div class="row">
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$group->id}"/>
|
||||
</div>
|
||||
|
||||
<div class="cell group">
|
||||
<div class="banner_wrapper" style="cursor:pointer;" onclick="javascript:location.href='{url module=BannersAdmin do=banners group=$group->id return=$smarty.server.REQUEST_URI}';">
|
||||
<div class="group title">
|
||||
<a href="{url module=BannersAdmin do=banners group=$group->id return=$smarty.server.REQUEST_URI}">{$group->name|escape}</a>
|
||||
<span>Для отображения группы баннеров используйте вызов в шаблоне <span style="margin;0;padding:0;color:#000000">{literal}{get_banners group={/literal}{$group->id}}{literal}{if $banners_id{/literal}{$group->id}}...{literal}{/if}{/literal}</span></span>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
Для вставки галлереи пиши {literal}{{/literal}gallery id={$group->id}{literal}}{/literal}
|
||||
</div>
|
||||
|
||||
{if $group->banner}
|
||||
<!--<div class="banner">
|
||||
<img src="/{$config->banners_images_dir}{$group->banner->image}" alt="">
|
||||
</div>-->
|
||||
{/if}
|
||||
<div class="tip">
|
||||
{if !$group->banner_count}<span style="color:#b61919">{/if}В группе находится: {$group->banner_count} {$group->banner_count|plural:'баннер':'баннеров':'баннера'}{if !$group->banner_count}</span>{/if}<br>
|
||||
{if $group->banner}
|
||||
{$img_url=$config->root_url|cat:'/'|cat:$config->banners_images_dir|cat:$group->banner->image}{assign var="info" value=$img_url|getimagesize}
|
||||
размер изображений баннеров:{$info.0}px X {$info.1}px
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="edit" title="Изменить название группы" href="{url module=BannersAdmin do=groups action=edit id=$group->id return=$smarty.server.REQUEST_URI}"></a>
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
</div>
|
||||
</form>{/if}
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script>
|
||||
|
||||
$(function() {
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:checked)').length>0);
|
||||
});
|
||||
|
||||
// Удалить группу
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest("div.row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form").submit(function() {
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
210
simpla/design/html/banners.show.list.tpl
Normal file
@@ -0,0 +1,210 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li><a href="index.php?module=BannersAdmin&do=groups">Группы баннеров</a></li><li class="active"><a href="index.php?module=BannersAdmin&do=banners">Группа » {$banners_group->name}</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Группа » '|cat:$banners_group->name|cat:' « Управление баннерами сайта' scope=parent}
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
{if !$function}
|
||||
<a class="add" href="{url module=BannersAdmin action=add return=$smarty.server.REQUEST_URI}">Добавить баннер</a><br/><br/><br/>
|
||||
{/if}
|
||||
{if $banners_count}
|
||||
<h1>В группе {$banners_count} {$banners_count|plural:'баннер':'баннеров':'баннера'}</h1>{if $smarty.get.return and !$message_success and !$message_error}<a class="button_yellow" href="{$smarty.get.return}">Вернуться</a>{/if}
|
||||
{else}
|
||||
<h1>Нет баннеров</h1>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<link href="design/css/banners.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
{* Основная форма *}
|
||||
{if $banners}
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list">
|
||||
{foreach $banners as $banner}
|
||||
<div class="{if !$banner->visible}invisible{/if} row">
|
||||
<input type="hidden" name="positions[{$banner->id}]" value="{$banner->position}">
|
||||
<div class="move cell"><div class="move_zone"></div></div>
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$banner->id}"/>
|
||||
</div>
|
||||
|
||||
<div class="cell banner">
|
||||
<div class="banner_wrapper" style="cursor:pointer;" onclick="javascript:location.href='{url module=BannersAdmin action=edit id=$banner->id return=$smarty.server.REQUEST_URI}';">
|
||||
<div class="title">
|
||||
<a href="{url module=BannersAdmin action=edit id=$banner->id return=$smarty.server.REQUEST_URI}">
|
||||
{$banner->name|escape}
|
||||
</a>
|
||||
</div>
|
||||
<div class="banner">
|
||||
{if $banner->image}
|
||||
<img src="/{$banners_images_dir}{$banner->image}" alt="">
|
||||
{/if}
|
||||
</div>
|
||||
{if $banner->image}
|
||||
<div class="tip">
|
||||
Размер изображения: {$img_url=$config->root_url|cat:'/'|cat:$config->banners_images_dir|cat:$banner->image}
|
||||
|
||||
{*assign var="info" value=$img_url|getimagesize*}
|
||||
{*$info.0}px X {$info.1}px<br /> *}
|
||||
Ссылается на страницу: <a href="{$banner->url}" title="">{$banner->url}</a>
|
||||
{if $banner->show_all_pages}<br/><span style="font-family:Arial;font-weight:bold;color:green;">Отображается на всех страницах сайта</span>
|
||||
{else}{if $banner->pages_count OR $banner->categories_count OR $banner->brands_count}Отображается:{/if}
|
||||
{if $banner->pages_count}на {$banner->pages_count} {$banner->pages_count|plural:'странице':'страницах':'страницах'}, {/if}
|
||||
{if $banner->categories_count}в {$banner->categories_count} {$banner->categories_count|plural:'категории':'категориях':'категориях'}, {/if}
|
||||
{if $banner->brands_count}в {$banner->brands_count} {$banner->brands_count|plural:'бренде':'брендах':'брендах'}{/if}
|
||||
{if !$banner->pages_count AND !$banner->categories_count AND !$banner->brands_count}<br/><span style="font-family:Arial;font-weight:bold;color:red">не отображается</span>{/if}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="enable" {if $banner->visible == 1}title="Активен{else}Выключен{/if}" href="#"></a>
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="enable">Сделать видимыми</option>
|
||||
<option value="disable">Сделать невидимыми</option>
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
</div>
|
||||
</form>{/if}
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script>
|
||||
|
||||
$(function() {
|
||||
|
||||
// Сортировка списка
|
||||
$("#list").sortable({
|
||||
items: ".row",
|
||||
tolerance: "pointer",
|
||||
handle: ".move_zone",
|
||||
scrollSensitivity: 40,
|
||||
opacity: 0.7,
|
||||
|
||||
helper: function(event, ui){
|
||||
if($('input[type="checkbox"][name*="check"]:checked').size()<1) return ui;
|
||||
var helper = $('<div/>');
|
||||
$('input[type="checkbox"][name*="check"]:checked').each(function(){
|
||||
var item = $(this).closest('.row');
|
||||
helper.height(helper.height()+item.innerHeight());
|
||||
if(item[0]!=ui[0]) {
|
||||
helper.append(item.clone());
|
||||
$(this).closest('.row').remove();
|
||||
}
|
||||
else {
|
||||
helper.append(ui.clone());
|
||||
item.find('input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
}
|
||||
});
|
||||
return helper;
|
||||
},
|
||||
start: function(event, ui) {
|
||||
if(ui.helper.children('.row').size()>0)
|
||||
$('.ui-sortable-placeholder').height(ui.helper.height());
|
||||
},
|
||||
beforeStop:function(event, ui){
|
||||
if(ui.helper.children('.row').size()>0){
|
||||
ui.helper.children('.row').each(function(){
|
||||
$(this).insertBefore(ui.item);
|
||||
});
|
||||
ui.item.remove();
|
||||
}
|
||||
},
|
||||
update:function(event, ui)
|
||||
{
|
||||
$("#list_form input[name*='check']").attr('checked', false);
|
||||
$("#list_form").ajaxSubmit(function() {
|
||||
colorize();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:checked)').length>0);
|
||||
});
|
||||
|
||||
// Удалить товар
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest("div.row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Показать баннер
|
||||
$("a.enable").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest("div.row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = line.hasClass('invisible')?1:0;
|
||||
icon.addClass('loading_icon');
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'banner', 'id': id, 'values': {'visible': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
line.removeClass('invisible');
|
||||
else
|
||||
line.addClass('invisible');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form").submit(function() {
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
152
simpla/design/html/blog.tpl
Normal file
@@ -0,0 +1,152 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li class="active"><a href="index.php?module=BlogAdmin">Блог</a></li>
|
||||
<li><a href="index.php?module=ArticlesAdmin">Примеры работ</a></li>
|
||||
<li><a href="index.php?module=ArticleCategoriesAdmin">Категории примеров работ</a></li>
|
||||
<li><a href="{url module=ActionsAdmin id=null page=null}">Акции</a></li>
|
||||
<li><a href="{url module=MarkasAdmin id=null page=null}">Марки и модели</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Блог' scope=parent}
|
||||
|
||||
{* Поиск *}
|
||||
{if $posts || $keyword}
|
||||
<form method="get">
|
||||
<div id="search">
|
||||
<input type="hidden" name="module" value='BlogAdmin'>
|
||||
<input class="search" type="text" name="keyword" value="{$keyword|escape}" />
|
||||
<input class="search_button" type="submit" value=""/>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
{if $keyword && $posts_count}
|
||||
<h1>{$posts_count|plural:'Нашлась':'Нашлись':'Нашлись'} {$posts_count} {$posts_count|plural:'запись':'записей':'записи'}</h1>
|
||||
{elseif $posts_count}
|
||||
<h1>{$posts_count} {$posts_count|plural:'запись':'записей':'записи'} в блоге</h1>
|
||||
{else}
|
||||
<h1>Нет записей</h1>
|
||||
{/if}
|
||||
<a class="add" href="{url module=PostAdmin return=$smarty.server.REQUEST_URI}">Добавить запись</a>
|
||||
</div>
|
||||
|
||||
{if $posts}
|
||||
<div id="main_list">
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
<form id="form_list" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list">
|
||||
{foreach $posts as $post}
|
||||
<div class="{if !$post->visible}invisible{/if} row">
|
||||
<input type="hidden" name="positions[{$post->id}]" value="{$post->position}">
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$post->id}" />
|
||||
</div>
|
||||
<div class="name cell">
|
||||
<a href="{url module=PostAdmin id=$post->id return=$smarty.server.REQUEST_URI}">{$post->name|escape}</a>
|
||||
<br>
|
||||
{$post->date|date}
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="preview" title="Предпросмотр в новом окне" href="../blog/{$post->url}" target="_blank"></a>
|
||||
<a class="enable" title="Активна" href="#"></a>
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="enable">Сделать видимыми</option>
|
||||
<option value="disable">Сделать невидимыми</option>
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', 1-$('#list input[type="checkbox"][name*="check"]').attr('checked'));
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Скрыт/Видим
|
||||
$("a.enable").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest(".row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = line.hasClass('invisible')?1:0;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'blog', 'id': id, 'values': {'visible': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
line.removeClass('invisible');
|
||||
else
|
||||
line.addClass('invisible');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form").submit(function() {
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
206
simpla/design/html/brand.tpl
Normal file
@@ -0,0 +1,206 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('products', $manager->permissions)}<li><a href="index.php?module=ProductsAdmin">Товары</a></li>{/if}
|
||||
{if in_array('categories', $manager->permissions)}<li><a href="index.php?module=CategoriesAdmin">Категории</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=BrandsAdmin">Бренды</a></li>
|
||||
{if in_array('features', $manager->permissions)}<li><a href="index.php?module=FeaturesAdmin">Свойства</a></li>{/if}
|
||||
{/capture}
|
||||
|
||||
{if $brand->id}
|
||||
{$meta_title = $brand->name scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новый бренд' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Подключаем Tiny MCE *}
|
||||
{include file='tinymce_init.tpl'}
|
||||
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Удаление изображений
|
||||
$(".images a.delete").click( function() {
|
||||
$("input[name='delete_image']").val('1');
|
||||
$(this).closest("ul").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
// Автозаполнение мета-тегов
|
||||
meta_title_touched = true;
|
||||
meta_keywords_touched = true;
|
||||
meta_description_touched = true;
|
||||
url_touched = true;
|
||||
|
||||
if($('input[name="meta_title"]').val() == generate_meta_title() || $('input[name="meta_title"]').val() == '')
|
||||
meta_title_touched = false;
|
||||
if($('input[name="meta_keywords"]').val() == generate_meta_keywords() || $('input[name="meta_keywords"]').val() == '')
|
||||
meta_keywords_touched = false;
|
||||
if($('textarea[name="meta_description"]').val() == generate_meta_description() || $('textarea[name="meta_description"]').val() == '')
|
||||
meta_description_touched = false;
|
||||
if($('input[name="url"]').val() == generate_url() || $('input[name="url"]').val() == '')
|
||||
url_touched = false;
|
||||
|
||||
$('input[name="meta_title"]').change(function() { meta_title_touched = true; });
|
||||
$('input[name="meta_keywords"]').change(function() { meta_keywords_touched = true; });
|
||||
$('input[textarea="meta_description"]').change(function() { meta_description_touched = true; });
|
||||
$('input[name="url"]').change(function() { url_touched = true; });
|
||||
|
||||
$('input[name="name"]').keyup(function() { set_meta(); });
|
||||
|
||||
function set_meta()
|
||||
{
|
||||
if(!meta_title_touched)
|
||||
$('input[name="meta_title"]').val(generate_meta_title());
|
||||
if(!meta_keywords_touched)
|
||||
$('input[name="meta_keywords"]').val(generate_meta_keywords());
|
||||
if(!meta_description_touched)
|
||||
$('textarea[name="meta_description"]').val(generate_meta_description());
|
||||
if(!url_touched)
|
||||
$('input[name="url"]').val(generate_url());
|
||||
}
|
||||
|
||||
function generate_meta_title()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_keywords()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_description()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_url()
|
||||
{
|
||||
url = $('input[name="name"]').val();
|
||||
url = url.replace(/[\s]+/gi, '-');
|
||||
url = translit(url);
|
||||
url = url.replace(/[^0-9a-z_\-]+/gi, '').toLowerCase();
|
||||
return url;
|
||||
}
|
||||
|
||||
function translit(str)
|
||||
{
|
||||
var ru=("А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я").split("-")
|
||||
var en=("A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch-'-'-Y-y-'-'-E-e-YU-yu-YA-ya").split("-")
|
||||
var res = '';
|
||||
for(var i=0, l=str.length; i<l; i++)
|
||||
{
|
||||
var s = str.charAt(i), n = ru.indexOf(s);
|
||||
if(n >= 0) { res += en[n]; }
|
||||
else { res += s; }
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
{/literal}
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success=='added'}Бренд добавлен{elseif $message_success=='updated'}Бренд обновлен{else}{$message_success}{/if}</span>
|
||||
<a class="link" target="_blank" href="../brands/{$brand->url}">Открыть бренд на сайте</a>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error=='url_exists'}Бренд с таким адресом уже существует{else}{$message_error}{/if}</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div id="name">
|
||||
<input class="name" name=name type="text" value="{$brand->name|escape}"/>
|
||||
<input name=id type="hidden" value="{$brand->id|escape}"/>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block layer">
|
||||
<h2>Параметры страницы</h2>
|
||||
<ul>
|
||||
<li><label class=property>Адрес</label><div class="page_url"> /brands/</div><input name="url" class="page_url" type="text" value="{$brand->url|escape}" /></li>
|
||||
<li><label class=property>Заголовок</label><input name="meta_title" class="simpla_inp" type="text" value="{$brand->meta_title|escape}" /></li>
|
||||
<li><label class=property>Ключевые слова</label><input name="meta_keywords" class="simpla_inp" type="text" value="{$brand->meta_keywords|escape}" /></li>
|
||||
<li><label class=property>Описание</label><textarea name="meta_description" class="simpla_inp" />{$brand->meta_description|escape}</textarea></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
{*
|
||||
<!-- Экспорт-->
|
||||
<div class="block">
|
||||
<h2>Экспорт товара</h2>
|
||||
<ul>
|
||||
<li><input id="exp_yad" type="checkbox" /> <label for="exp_yad">Яндекс Маркет</label> Бид <input class="simpla_inp" type="" name="" value="12" /> руб.</li>
|
||||
<li><input id="exp_goog" type="checkbox" /> <label for="exp_goog">Google Base</label> </li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Свойства товара (The End)-->
|
||||
*}
|
||||
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Правая колонка свойств товара -->
|
||||
<div id="column_right">
|
||||
|
||||
<!-- Изображение категории -->
|
||||
<div class="block layer images">
|
||||
<h2>Изображение бренда</h2>
|
||||
<input class='upload_image' name=image type=file>
|
||||
<input type=hidden name="delete_image" value="">
|
||||
{if $brand->image}
|
||||
<ul>
|
||||
<li>
|
||||
<a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a>
|
||||
<img src="../{$config->brands_images_dir}{$brand->image}" alt="" />
|
||||
</li>
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- Правая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Описагние бренда -->
|
||||
<div class="block layer">
|
||||
<h2>Описание</h2>
|
||||
<textarea name="description" class="editor_large">{$brand->description|escape}</textarea>
|
||||
</div>
|
||||
<!-- Описание бренда (The End)-->
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
|
||||
119
simpla/design/html/brands.tpl
Normal file
@@ -0,0 +1,119 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('products', $manager->permissions)}<li><a href="index.php?module=ProductsAdmin">Товары</a></li>{/if}
|
||||
{if in_array('categories', $manager->permissions)}<li><a href="index.php?module=CategoriesAdmin">Категории</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=BrandsAdmin">Бренды</a></li>
|
||||
{if in_array('features', $manager->permissions)}<li><a href="index.php?module=FeaturesAdmin">Свойства</a></li>{/if}
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Бренды' scope=parent}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1>Бренды</h1>
|
||||
<a class="add" href="{url module=BrandAdmin return=$smarty.server.REQUEST_URI}">Добавить бренд</a>
|
||||
</div>
|
||||
|
||||
{if $brands}
|
||||
<div id="main_list" class="brands">
|
||||
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list" class="brands">
|
||||
{foreach $brands as $brand}
|
||||
<div class="row {if !$brand->visible}invisible{/if}">
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$brand->id}" />
|
||||
</div>
|
||||
<div class="cell">
|
||||
<a href="{url module=BrandAdmin id=$brand->id return=$smarty.server.REQUEST_URI}">{$brand->name|escape}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="enable" title="Активна" href="#"></a>
|
||||
<a class="preview" title="Предпросмотр в новом окне" href="../brands/{$brand->url}" target="_blank"></a>
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
{else}
|
||||
Нет брендов
|
||||
{/if}
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
|
||||
$("a.enable").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest(".row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = line.hasClass('invisible')?1:0;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'brands', 'id': id, 'values': {'visible': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
line.removeClass('invisible');
|
||||
else
|
||||
line.addClass('invisible');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:checked)').length>0);
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest("div.row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form").submit(function() {
|
||||
if($('#list input[type="checkbox"][name*="check"]:checked').length>0)
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
125
simpla/design/html/callbacks.tpl
Normal file
@@ -0,0 +1,125 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('comments', $manager->permissions)}<li><a href="index.php?module=CommentsAdmin">Комментарии</a></li>{/if}
|
||||
{if in_array('feedbacks', $manager->permissions)}<li><a href="index.php?module=FeedbacksAdmin">Обратная связь</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=CallbacksAdmin">Заказ обратного звонка</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Заказ обратного звонка' scope=parent}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
{if $callbacks_count}
|
||||
<h1>{$callbacks_count} {$callbacks_count|plural:'заказ':'заказа':'заказов'}</h1>
|
||||
{else}
|
||||
<h1>Нет заказов</h1>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div id="main_list">
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
{if $callbacks}
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list" style="width:100%;">
|
||||
|
||||
{foreach $callbacks as $callback}
|
||||
<div class="row">
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$callback->id}" />
|
||||
</div>
|
||||
<div class="name cell">
|
||||
<div class='comment_name'>
|
||||
{$callback->name|escape}
|
||||
</div>
|
||||
<div class='comment_text'>
|
||||
Телефон: {$callback->phone|escape|nl2br}
|
||||
</div>
|
||||
<div class='comment_text'>
|
||||
Сообщение: {$callback->message|escape|nl2br}
|
||||
</div>
|
||||
<div class='comment_info'>
|
||||
Заявка отправлена {$callback->date|date} в {$callback->date|time}
|
||||
</div>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' title='Удалить' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id='check_all' class='dash_link'>Выбрать все</label>
|
||||
|
||||
<span id=select>
|
||||
<select name="action">
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id='apply_action' class="button_green" type=submit value="Применить">
|
||||
|
||||
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{else}
|
||||
Нет сообщений
|
||||
{/if}
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Меню -->
|
||||
<div id="right_menu">
|
||||
|
||||
</div>
|
||||
<!-- Меню (The End) -->
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:checked)').length>0);
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form#list_form").submit(function() {
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
198
simpla/design/html/categories.tpl
Normal file
@@ -0,0 +1,198 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('products', $manager->permissions)}<li><a href="index.php?module=ProductsAdmin">Товары</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=CategoriesAdmin">Категории</a></li>
|
||||
{if in_array('brands', $manager->permissions)}<li><a href="index.php?module=BrandsAdmin">Бренды</a></li>{/if}
|
||||
{if in_array('features', $manager->permissions)}<li><a href="index.php?module=FeaturesAdmin">Свойства</a></li>{/if}
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Категории' scope=parent}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1>Категории товаров</h1>
|
||||
<a class="add" href="{url module=CategoryAdmin return=$smarty.server.REQUEST_URI}">Добавить категорию</a>
|
||||
</div>
|
||||
<!-- Заголовок (The End) -->
|
||||
|
||||
{if $categories}
|
||||
<div id="main_list" class="categories">
|
||||
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
{function name=categories_tree level=0}
|
||||
{if $categories}
|
||||
<div id="list" class="sortable">
|
||||
|
||||
{foreach $categories as $category}
|
||||
<div class="{if !$category->visible}invisible{/if} row">
|
||||
<div class="tree_row">
|
||||
<input type="hidden" name="positions[{$category->id}]" value="{$category->position}">
|
||||
<div class="move cell" style="margin-left:{$level*20}px"><div class="move_zone"></div></div>
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$category->id}" />
|
||||
</div>
|
||||
<div class="cell">
|
||||
<a href="{url module=CategoryAdmin id=$category->id return=$smarty.server.REQUEST_URI}">{$category->name|escape}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="preview" title="Предпросмотр в новом окне" href="../catalog/{$category->url}" target="_blank"></a>
|
||||
<!-- ЯМ -->
|
||||
<input type="hidden" value="{$category->ym}" data="{$category->id}" name="ym[{$category->id}]" class="yandex{if $category->ym==1} enabled{/if}"/>
|
||||
<a class="yandex" title="ЯМ" href="#"></a>
|
||||
<a class="view{if !$category->menu} no{/if}" title="В меню" href="#"></a>
|
||||
<a class="enable {$category->__css_class}" title="Активна" href="#"></a>
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{categories_tree categories=$category->subcategories level=$level+1}
|
||||
</div>
|
||||
{/foreach}
|
||||
|
||||
</div>
|
||||
{/if}
|
||||
{/function}
|
||||
{categories_tree categories=$categories}
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="enable">Сделать видимыми</option>
|
||||
<option value="disable">Сделать невидимыми</option>
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
{else}
|
||||
Нет категорий
|
||||
{/if}
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Сортировка списка
|
||||
$(".sortable").sortable({
|
||||
items:".row",
|
||||
handle: ".move_zone",
|
||||
tolerance:"pointer",
|
||||
scrollSensitivity:40,
|
||||
opacity:0.7,
|
||||
axis: "y",
|
||||
update:function()
|
||||
{
|
||||
$("#list_form input[name*='check']").attr('checked', false);
|
||||
$("#list_form").ajaxSubmit();
|
||||
}
|
||||
});
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]:not(:disabled)').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:disabled):not(:checked)').length>0);
|
||||
});
|
||||
|
||||
// Показать категорию
|
||||
$("a.enable").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest(".row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = line.hasClass('invisible')?1:0;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'category', 'id': id, 'values': {'visible': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
line.find('a.enable').toggleClass('a-invisible').toggleClass('a-visible');
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
line.removeClass('invisible');
|
||||
else
|
||||
line.addClass('invisible');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
$("a.view").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest(".row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = icon.hasClass('no')?1:0;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'categoryview', 'id': id, 'values': {'menu': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
icon.removeClass('no');
|
||||
else
|
||||
icon.addClass('no');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest("div.row").find('input[type="checkbox"][name*="check"]:first').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
|
||||
// Подтвердить удаление
|
||||
$("form").submit(function() {
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
|
||||
// ЯМ от bwdesign.ru
|
||||
function YMchangeRow(row){
|
||||
var input = $(row).find("input.yandex");
|
||||
if($(input).val()==1){
|
||||
$(input).val(0);
|
||||
$(input).removeClass('enabled')
|
||||
}else{
|
||||
$(input).val(1);
|
||||
$(input).addClass('enabled')
|
||||
}
|
||||
updateYM();
|
||||
}
|
||||
function updateYM(){
|
||||
var icon = $("a.yandex");
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/ym.php?type=cat',
|
||||
data: $('form#list_form').serialize(),
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
}
|
||||
$("a.yandex").click(function() {
|
||||
var th = $(this);
|
||||
var row = $(th).closest("div.row");
|
||||
YMchangeRow(row);
|
||||
return false;
|
||||
})
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
264
simpla/design/html/category.tpl
Normal file
@@ -0,0 +1,264 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('products', $manager->permissions)}<li><a href="index.php?module=ProductsAdmin">Товары</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=CategoriesAdmin">Категории</a></li>
|
||||
{if in_array('brands', $manager->permissions)}<li><a href="index.php?module=BrandsAdmin">Бренды</a></li>{/if}
|
||||
{if in_array('features', $manager->permissions)}<li><a href="index.php?module=FeaturesAdmin">Свойства</a></li>{/if}
|
||||
{/capture}
|
||||
|
||||
{if $category->id}
|
||||
{$meta_title = $category->name scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новая категория' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Подключаем Tiny MCE *}
|
||||
{include file='tinymce_init.tpl'}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script src="design/js/jquery/jquery.js"></script>
|
||||
<script src="design/js/jquery/jquery-ui.min.js"></script>
|
||||
<script src="design/js/autocomplete/jquery.autocomplete-min.js"></script>
|
||||
<style>
|
||||
.autocomplete-w1 { background:url(img/shadow.png) no-repeat bottom right; position:absolute; top:0px; left:0px; margin:6px 0 0 6px; /* IE6 fix: */ _background:none; _margin:1px 0 0 0; }
|
||||
.autocomplete { border:1px solid #999; background:#FFF; cursor:default; text-align:left; overflow-x:auto; min-width: 300px; overflow-y: auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; }
|
||||
.autocomplete .selected { background:#F0F0F0; }
|
||||
.autocomplete div { padding:2px 5px; white-space:nowrap; }
|
||||
.autocomplete strong { font-weight:normal; color:#3399FF; }
|
||||
</style>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
|
||||
// Удаление изображений
|
||||
$(".images a.delete").click( function() {
|
||||
$("input[name='delete_image']").val('1');
|
||||
$(this).closest("ul").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
// Автозаполнение мета-тегов
|
||||
meta_title_touched = true;
|
||||
meta_keywords_touched = true;
|
||||
meta_description_touched = true;
|
||||
url_touched = true;
|
||||
update = {/literal}{if $category->url}true;{else}false;{/if}{literal}
|
||||
|
||||
if($('input[name="meta_title"]').val() == generate_meta_title() || $('input[name="meta_title"]').val() == '')
|
||||
meta_title_touched = false;
|
||||
if($('input[name="meta_keywords"]').val() == generate_meta_keywords() || $('input[name="meta_keywords"]').val() == '')
|
||||
meta_keywords_touched = false;
|
||||
if($('textarea[name="meta_description"]').val() == generate_meta_description() || $('textarea[name="meta_description"]').val() == '')
|
||||
meta_description_touched = false;
|
||||
if($('input[name="url"]').val() == generate_url() || $('input[name="url"]').val() == '')
|
||||
url_touched = false;
|
||||
|
||||
$('input[name="meta_title"]').change(function() { meta_title_touched = true; });
|
||||
$('input[name="meta_keywords"]').change(function() { meta_keywords_touched = true; });
|
||||
$('textarea[name="meta_description"]').change(function() { meta_description_touched = true; });
|
||||
$('input[name="url"]').change(function() { url_touched = true; });
|
||||
|
||||
$('input[name="name"]').keyup(function() { set_meta(); });
|
||||
|
||||
});
|
||||
|
||||
function set_meta()
|
||||
{
|
||||
if(!meta_title_touched)
|
||||
// $('input[name="meta_title"]').val(generate_meta_title());
|
||||
if(!meta_keywords_touched)
|
||||
// $('input[name="meta_keywords"]').val(generate_meta_keywords());
|
||||
if(!meta_description_touched)
|
||||
// $('textarea[name="meta_description"]').val(generate_meta_description());
|
||||
if(!url_touched && !update)
|
||||
$('input[name="url"]').val(generate_url());
|
||||
}
|
||||
|
||||
function generate_meta_title()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_keywords()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_description()
|
||||
{
|
||||
if(typeof(tinyMCE.get("description")) =='object')
|
||||
{
|
||||
description = tinyMCE.get("description").getContent().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
|
||||
return description;
|
||||
}
|
||||
else
|
||||
return $('textarea[name=description]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
|
||||
}
|
||||
|
||||
function generate_url()
|
||||
{
|
||||
url = $('input[name="name"]').val();
|
||||
url = url.replace(/[\s]+/gi, '-');
|
||||
url = translit(url);
|
||||
url = url.replace(/[^0-9a-z_\-]+/gi, '').toLowerCase();
|
||||
return url;
|
||||
}
|
||||
|
||||
function translit(str)
|
||||
{
|
||||
var ru=("А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я").split("-")
|
||||
var en=("A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch-'-'-Y-y-'-'-E-e-YU-yu-YA-ya").split("-")
|
||||
var res = '';
|
||||
for(var i=0, l=str.length; i<l; i++)
|
||||
{
|
||||
var s = str.charAt(i), n = ru.indexOf(s);
|
||||
if(n >= 0) { res += en[n]; }
|
||||
else { res += s; }
|
||||
}
|
||||
return res;
|
||||
}
|
||||
</script>
|
||||
|
||||
{/literal}
|
||||
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success=='added'}Категория добавлена{elseif $message_success=='updated'}Категория обновлена{else}{$message_success}{/if}</span>
|
||||
<a class="link" target="_blank" href="../catalog/{$category->url}">Открыть категорию на сайте</a>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error=='url_exists'}Категория с таким адресом уже существует{else}{$message_error}{/if}</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div id="name">
|
||||
<input class="name" name=name type="text" value="{$category->name|escape}"/>
|
||||
<input name=id type="hidden" value="{$category->id|escape}"/>
|
||||
<div class="checkbox">
|
||||
<input name=visible value='1' type="checkbox" id="active_checkbox" {if $category->visible}checked{/if}/> <label for="active_checkbox">Активна</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<input name=ym value='1' type="checkbox" id="ym" {if $category->ym}checked{/if}/> <label for="ym">ЯМ</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<input name=menu value='1' type="checkbox" id="menu" {if $category->menu}checked{/if}/> <label for="menu">В меню</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="product_categories">
|
||||
<select name="parent_id">
|
||||
<option value='0'>Корневая категория</option>
|
||||
{function name=category_select level=0}
|
||||
{foreach from=$cats item=cat}
|
||||
{if $category->id != $cat->id}
|
||||
<option value='{$cat->id}' {if $category->parent_id == $cat->id}selected{/if}>{section name=sp loop=$level} {/section}{$cat->name}</option>
|
||||
{category_select cats=$cat->subcategories level=$level+1}
|
||||
{/if}
|
||||
{/foreach}
|
||||
{/function}
|
||||
{category_select cats=$categories}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block layer">
|
||||
<h2>Параметры страницы</h2>
|
||||
<ul>
|
||||
<li><label class=property>Адрес</label><div class="page_url">/catalog/</div><input name="url" class="page_url" type="text" value="{$category->url|escape}" /></li>
|
||||
<li><label class=property>Заголовок</label><input name="meta_title" class="simpla_inp" type="text" value="{$category->meta_title|escape}" /></li>
|
||||
<li><label class=property>H1</label><input name="category_h1" class="simpla_inp" type="text" value="{$category->category_h1|escape}" /></li>
|
||||
<li><label class=property>Ключевые слова</label><input name="meta_keywords" class="simpla_inp" type="text" value="{$category->meta_keywords|escape}" /></li>
|
||||
<li><label class=property>Описание</label><textarea name="meta_description" class="simpla_inp" />{$category->meta_description|escape}</textarea></li>
|
||||
<li><label class=property>Название в меню</label><input name="menu_name" class="simpla_inp" type="text" value="{$category->menu_name|escape}" /></li>
|
||||
<li><label class=property>Товары из подразделов</label>
|
||||
<input name="from_subs" value='1' type="checkbox" id="from_subs" {if $category->from_subs}checked{/if} />
|
||||
</li>
|
||||
<li><label class=property>Вид подразделов</label>
|
||||
<select name="how2show">
|
||||
<option value="1" {if $category->how2show == 1}selected{/if}>большие блоки</option>
|
||||
<option value="2" {if $category->how2show == 2}selected{/if}>маленькие блоки</option>
|
||||
<option value="3" {if $category->how2show == 3}selected{/if}>список</option>
|
||||
</select>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
{*
|
||||
<!-- Экспорт-->
|
||||
<div class="block">
|
||||
<h2>Экспорт товара</h2>
|
||||
<ul>
|
||||
<li><input id="exp_yad" type="checkbox" /> <label for="exp_yad">Яндекс Маркет</label> Бид <input class="simpla_inp" type="" name="" value="12" /> руб.</li>
|
||||
<li><input id="exp_goog" type="checkbox" /> <label for="exp_goog">Google Base</label> </li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Свойства товара (The End)-->
|
||||
*}
|
||||
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Правая колонка свойств товара -->
|
||||
<div id="column_right">
|
||||
|
||||
<!-- Изображение категории -->
|
||||
<div class="block layer images">
|
||||
<h2>Изображение категории</h2>
|
||||
<input class='upload_image' name=image type=file>
|
||||
<input type=hidden name="delete_image" value="">
|
||||
{if $category->image}
|
||||
<ul>
|
||||
<li>
|
||||
<a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a>
|
||||
<img src="../{$config->categories_images_dir}{$category->image}" alt="" />
|
||||
</li>
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
<!-- Правая колонка свойств товара (The End)-->
|
||||
|
||||
<div class="block layer">
|
||||
<h2>Анонс</h2>
|
||||
<textarea name="anons" style="width: 100%;height:150px" >{$category->anons|escape}</textarea>
|
||||
</div>
|
||||
|
||||
<!-- Описагние категории -->
|
||||
<div class="block layer">
|
||||
<h2>Описание</h2>
|
||||
<textarea name="description" class="editor_large">{$category->description|escape}</textarea>
|
||||
</div>
|
||||
<!-- Описание категории (The End)-->
|
||||
<div class="block layer">
|
||||
<h2>Текст внизу</h2>
|
||||
<textarea name="text_bottom" class="editor_large">{$category->text_bottom|escape}</textarea>
|
||||
</div>
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
|
||||
178
simpla/design/html/comments.tpl
Normal file
@@ -0,0 +1,178 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li class="active"><a href="index.php?module=CommentsAdmin">Комментарии</a></li>
|
||||
<li><a href="index.php?module=FeedbacksAdmin">Обратная связь</a></li>
|
||||
{/capture}
|
||||
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Комментарии' scope=parent}
|
||||
|
||||
{* Поиск *}
|
||||
{if $comments || $keyword}
|
||||
<form method="get">
|
||||
<div id="search">
|
||||
<input type="hidden" name="module" value='CommentsAdmin'>
|
||||
<input class="search" type="text" name="keyword" value="{$keyword|escape}" />
|
||||
<input class="search_button" type="submit" value=""/>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
{if $keyword && $comments_count}
|
||||
<h1>{$comments_count|plural:'Нашелся':'Нашлось':'Нашлись'} {$comments_count} {$comments_count|plural:'комментарий':'комментариев':'комментария'}</h1>
|
||||
{elseif !$type}
|
||||
<h1>{$comments_count} {$comments_count|plural:'комментарий':'комментариев':'комментария'}</h1>
|
||||
{elseif $type=='product'}
|
||||
<h1>{$comments_count} {$comments_count|plural:'комментарий':'комментариев':'комментария'} к товарам</h1>
|
||||
{elseif $type=='blog'}
|
||||
<h1>{$comments_count} {$comments_count|plural:'комментарий':'комментариев':'комментария'} к записям в блоге</h1>
|
||||
{elseif $type=='article'}
|
||||
<h1>{$comments_count} {$comments_count|plural:'комментарий':'комментариев':'комментария'} к статьям</h1>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
|
||||
{if $comments}
|
||||
<div id="main_list">
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list" class="sortable">
|
||||
{foreach $comments as $comment}
|
||||
<div class="{if !$comment->approved}unapproved{/if} row">
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$comment->id}"/>
|
||||
</div>
|
||||
<div class="name cell">
|
||||
<div class="comment_name">
|
||||
{$comment->name|escape}
|
||||
<a class="approve" href="#">Одобрить</a>
|
||||
</div>
|
||||
<div class="comment_text">
|
||||
{$comment->text|escape|nl2br}
|
||||
</div>
|
||||
<div class="comment_info">
|
||||
Комментарий оставлен {$comment->date|date} в {$comment->date|time}
|
||||
{if $comment->type == 'product'}
|
||||
к товару <a target="_blank" href="{$config->root_url}/products/{$comment->product->url}#comment_{$comment->id}">{$comment->product->name}</a>
|
||||
{elseif $comment->type == 'blog'}
|
||||
к записи <a target="_blank" href="{$config->root_url}/blog/{$comment->post->url}#comment_{$comment->id}">{$comment->post->name}</a>
|
||||
{elseif $comment->type == 'article'}
|
||||
к статье <a target="_blank" href="{$config->root_url}/article/{$comment->article->url}#comment_{$comment->id}">{$comment->article->name}</a>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
Выбрать <label id="check_all" class="dash_link">все</label> или <label id="check_unapproved" class="dash_link">ожидающие</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="approve">Одобрить</option>
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
</div>
|
||||
{else}
|
||||
Нет комментариев
|
||||
{/if}
|
||||
|
||||
<!-- Меню -->
|
||||
<div id="right_menu">
|
||||
|
||||
<!-- Категории товаров -->
|
||||
<ul>
|
||||
<li {if !$type}class="selected"{/if}><a href="{url type=null}">Все комментарии</a></li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li {if $type == 'product'}class="selected"{/if}><a href='{url keyword=null type=product}'>К товарам</a></li>
|
||||
<li {if $type == 'blog'}class="selected"{/if}><a href='{url keyword=null type=blog}'>К блогу</a></li>
|
||||
<li {if $type == 'article'}class="selected"{/if}><a href='{url keyword=null type=article}'>К статьям</a></li>
|
||||
</ul>
|
||||
<!-- Категории товаров (The End)-->
|
||||
|
||||
</div>
|
||||
<!-- Меню (The End) -->
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', 1-$('#list input[type="checkbox"][name*="check"]').attr('checked'));
|
||||
});
|
||||
|
||||
// Выделить ожидающие
|
||||
$("#check_unapproved").click(function() {
|
||||
$('#list .unapproved input[type="checkbox"][name*="check"]').attr('checked', 1-$('#list .unapproved input[type="checkbox"][name*="check"]').attr('checked'));
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Одобрить
|
||||
$("a.approve").click(function() {
|
||||
var line = $(this).closest(".row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'comment', 'id': id, 'values': {'approved': 1}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
line.removeClass('unapproved');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
$("form#list_form").submit(function() {
|
||||
if($('#list_form select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
110
simpla/design/html/coupon.tpl
Normal file
@@ -0,0 +1,110 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('users', $manager->permissions)}<li><a href="index.php?module=UsersAdmin">Покупатели</a></li>{/if}
|
||||
{if in_array('groups', $manager->permissions)}<li><a href="index.php?module=GroupsAdmin">Группы</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=CouponsAdmin">Купоны</a></li>
|
||||
{/capture}
|
||||
|
||||
{if $coupon->code}
|
||||
{$meta_title = $coupon->code scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новый купон' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Подключаем Tiny MCE *}
|
||||
{include file='tinymce_init.tpl'}
|
||||
|
||||
<script src="design/js/jquery/datepicker/jquery.ui.datepicker-ru.js"></script>
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
$('input[name="expire"]').datepicker({
|
||||
regional:'ru'
|
||||
});
|
||||
$('input[name="end"]').datepicker({
|
||||
regional:'ru'
|
||||
});
|
||||
|
||||
// On change date
|
||||
$('input[name="expire"]').focus(function() {
|
||||
|
||||
$('input[name="expires"]').attr('checked', true);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success == 'added'}Купон добавлен{elseif $message_success == 'updated'}Купон изменен{/if}</span>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error == 'code_exists'}Купон с таким кодом уже существует{/if}</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div id="name">
|
||||
<input class="name" name="code" type="text" value="{$coupon->code|escape}"/>
|
||||
<input name="id" class="name" type="hidden" value="{$coupon->id|escape}"/>
|
||||
</div>
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
|
||||
<div class="block layer">
|
||||
<ul>
|
||||
<li>
|
||||
<label class=property>Скидка</label><input name="value" class="coupon_value" type="text" value="{$coupon->value|escape}" />
|
||||
<select class="coupon_type" name="type">
|
||||
<option value="percentage" {if $coupon->type=='percentage'}selected{/if}>%</option>
|
||||
<option value="absolute" {if $coupon->type=='absolute'}selected{/if}>{$currency->sign}</option>
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<label class=property>Для заказов от</label>
|
||||
<input class="coupon_value" type="text" name="min_order_price" value="{$coupon->min_order_price|escape}"> {$currency->sign}
|
||||
</li>
|
||||
<li>
|
||||
<label class=property for="single"></label>
|
||||
<input type="checkbox" name="single" id="single" value="1" {if $coupon->single==1}checked{/if}> <label for="single">одноразовый</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Правая колонка свойств товара -->
|
||||
<div id="column_right">
|
||||
|
||||
<div class="block layer">
|
||||
<ul>
|
||||
<li><label class=property><input type=checkbox name="expires" value="1" {if $coupon->expire}checked{/if}>Истекает</label><input type=text name=expire value='{$coupon->expire|date}'></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- Правая колонка свойств товара (The End)-->
|
||||
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
141
simpla/design/html/coupons.tpl
Normal file
@@ -0,0 +1,141 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('users', $manager->permissions)}<li><a href="index.php?module=UsersAdmin">Покупатели</a></li>{/if}
|
||||
{if in_array('groups', $manager->permissions)}<li><a href="index.php?module=GroupsAdmin">Группы</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=CouponsAdmin">Купоны</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Купоны' scope=parent}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
{if $coupons_count}
|
||||
<h1>{$coupons_count} {$coupons_count|plural:'купон':'купонов':'купона'}</h1>
|
||||
{else}
|
||||
<h1>Нет купонов</h1>
|
||||
{/if}
|
||||
<a class="add" href="{url module=CouponAdmin return=$smarty.server.REQUEST_URI}">Новый купон</a>
|
||||
</div>
|
||||
|
||||
{if $coupons}
|
||||
<div id="main_list">
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
<form id="form_list" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list">
|
||||
{foreach $coupons as $coupon}
|
||||
<div class="{if $coupon->valid}green{/if} row">
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$coupon->id}"/>
|
||||
</div>
|
||||
<div class="coupon_name cell">
|
||||
<a href="{url module=CouponAdmin id=$coupon->id return=$smarty.server.REQUEST_URI}">{$coupon->code}</a>
|
||||
</div>
|
||||
<div class="coupon_discount cell">
|
||||
Скидка {$coupon->value*1} {if $coupon->type=='absolute'}{$currency->sign}{else}%{/if}<br>
|
||||
{if $coupon->min_order_price>0}
|
||||
<div class="detail">
|
||||
Для заказов от {$coupon->min_order_price|escape} {$currency->sign}
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="coupon_details cell">
|
||||
{if $coupon->single}
|
||||
<div class="detail">
|
||||
Одноразовый
|
||||
</div>
|
||||
{/if}
|
||||
{if $coupon->usages>0}
|
||||
<div class="detail">
|
||||
Использован {$coupon->usages|escape} {$coupon->usages|plural:'раз':'раз':'раза'}
|
||||
</div>
|
||||
{/if}
|
||||
{if $coupon->expire}
|
||||
<div class="detail">
|
||||
{if $smarty.now|date_format:'%Y%m%d' <= $coupon->expire|date_format:'%Y%m%d'}
|
||||
Действует до {$coupon->expire|date}
|
||||
{else}
|
||||
Истёк {$coupon->expire|date}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class=delete></a>
|
||||
</div>
|
||||
<div class="name cell" style='white-space:nowrap;'>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', 1-$('#list input[type="checkbox"][name*="check"]').attr('checked'));
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form").submit(function() {
|
||||
if($('#list input[type="checkbox"][name*="check"]:checked').length>0)
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
192
simpla/design/html/currency.tpl
Normal file
@@ -0,0 +1,192 @@
|
||||
{capture name=tabs}
|
||||
{if in_array('settings', $manager->permissions)}<li><a href="index.php?module=SettingsAdmin">Настройки</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=CurrencyAdmin">Валюты</a></li>
|
||||
{if in_array('delivery', $manager->permissions)}<li><a href="index.php?module=DeliveriesAdmin">Доставка</a></li>{/if}
|
||||
{if in_array('payment', $manager->permissions)}<li><a href="index.php?module=PaymentMethodsAdmin">Оплата</a></li>{/if}
|
||||
{if in_array('managers', $manager->permissions)}<li><a href="index.php?module=ManagersAdmin">Менеджеры</a></li>{/if}
|
||||
{if in_array('maillist', $manager->permissions)}<li><a href="index.php?module=MailingMethodsAdmin">Рассылка</a></li>{/if}
|
||||
{/capture}
|
||||
|
||||
{$meta_title = 'Валюты' scope=parent}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script src="design/js/jquery/jquery.js"></script>
|
||||
<script src="design/js/jquery/jquery-ui.min.js"></script>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Сортировка списка
|
||||
// Сортировка вариантов
|
||||
$("#currencies_block").sortable({ items: 'ul.sortable' , axis: 'y', cancel: '#header', handle: '.move_zone' });
|
||||
|
||||
// Добавление валюты
|
||||
var curr = $('#new_currency').clone(true);
|
||||
$('#new_currency').remove().removeAttr('id');
|
||||
$('a#add_currency').click(function() {
|
||||
$(curr).clone(true).appendTo('#currencies').fadeIn('slow').find("input[name*=currency][name*=name]").focus();
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
// Скрыт/Видим
|
||||
$("a.enable").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest("ul");
|
||||
var id = line.find('input[name*="currency[id]"]').val();
|
||||
var state = line.hasClass('invisible')?1:0;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'currency', 'id': id, 'values': {'enabled': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
line.removeClass('invisible');
|
||||
else
|
||||
line.addClass('invisible');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Центы
|
||||
$("a.cents").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest("ul");
|
||||
var id = line.find('input[name*="currency[id]"]').val();
|
||||
var state = line.hasClass('cents')?0:2;
|
||||
icon.addClass('loading_icon');
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'currency', 'id': id, 'values': {'cents': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(!state)
|
||||
line.removeClass('cents');
|
||||
else
|
||||
line.addClass('cents');
|
||||
},
|
||||
error: function (xhr, ajaxOptions, thrownError){
|
||||
alert(xhr.status);
|
||||
alert(thrownError);
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Показать центы
|
||||
$("a.delete").click(function() {
|
||||
$('input[type="hidden"][name="action"]').val('delete');
|
||||
$('input[type="hidden"][name="action_id"]').val($(this).closest("ul").find('input[type="hidden"][name*="currency[id]"]').val());
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Запоминаем id первой валюты, чтобы определить изменение базовой валюты
|
||||
var base_currency_id = $('input[name*="currency[id]"]').val();
|
||||
|
||||
$("form").submit(function() {
|
||||
if($('input[type="hidden"][name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
if(base_currency_id != $('input[name*="currency[id]"]:first').val() && confirm('Пересчитать все цены в '+$('input[name*="name"]:first').val()+' по текущему курсу?', 'msgBox Title'))
|
||||
$('input[name="recalculate"]').val(1);
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
|
||||
<!-- Заголовок -->
|
||||
<div id="header">
|
||||
<h1>Валюты</h1>
|
||||
<a class="add" id="add_currency" href="#">Добавить</a>
|
||||
<!-- Заголовок (The End) -->
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<form method=post>
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
|
||||
<!-- Валюты -->
|
||||
<div id="currencies_block">
|
||||
<ul id="header">
|
||||
<li class="move"></li>
|
||||
<li class="name">Название валюты</li>
|
||||
<li class="icons"></li>
|
||||
<li class="sign">Знак</li>
|
||||
<li class="iso">Код ISO</li>
|
||||
</ul>
|
||||
<div id="currencies">
|
||||
{foreach from=$currencies item=c}
|
||||
<ul class="sortable {if !$c->enabled}invisible{/if} {if $c->cents == 2}cents{/if}">
|
||||
<li class="move"><div class="move_zone"></div></li>
|
||||
<li class="name">
|
||||
<input name="currency[id][{$c->id}]" type="hidden" value="{$c->id|escape}" /><input name="currency[name][{$c->id}]" type="" value="{$c->name|escape}" />
|
||||
</li>
|
||||
<li class="icons">
|
||||
<a class="cents" href="#" title="Выводить копейки"></a>
|
||||
<a class="enable" href="#" title="Показывать на сайте"></a>
|
||||
</li>
|
||||
<li class="sign"> <input name="currency[sign][{$c->id}]" type="text" value="{$c->sign|escape}" /></li>
|
||||
<li class="iso"> <input name="currency[code][{$c->id}]" type="text" value="{$c->code|escape}" /></li>
|
||||
<li class="rate">
|
||||
{if !$c@first}
|
||||
<div class=rate_from><input name="currency[rate_from][{$c->id}]" type="text" value="{$c->rate_from|escape}" /> {$c->sign}</div>
|
||||
<div class=rate_to>= <input name="currency[rate_to][{$c->id}]" type="text" value="{$c->rate_to|escape}" /> {$currency->sign}</div>
|
||||
{else}
|
||||
<input name="currency[rate_from][{$c->id}]" type="hidden" value="{$c->rate_from|escape}" />
|
||||
<input name="currency[rate_to][{$c->id}]" type="hidden" value="{$c->rate_to|escape}" />
|
||||
{/if}
|
||||
</li>
|
||||
<li class="icons">
|
||||
{if !$c@first}
|
||||
<a class="delete" href="#" title="Удалить"></a>
|
||||
{/if}
|
||||
</li>
|
||||
</ul>
|
||||
{/foreach}
|
||||
<ul id="new_currency" style='display:none;'>
|
||||
<li class="move"><div class="move_zone"></div></li>
|
||||
<li class="name"><input name="currency[id][]" type="hidden" value="" /><input name="currency[name][]" type="" value="" /></li>
|
||||
<li class="icons">
|
||||
</li>
|
||||
<li class="sign"><input name="currency[sign][]" type="" value="" /></li>
|
||||
<li class="iso"><input name="currency[code][]" type="" value="" /></li>
|
||||
<li class="rate">
|
||||
<div class=rate_from><input name="currency[rate_from][]" type="text" value="1" /> </div>
|
||||
<div class=rate_to>= <input name="currency[rate_to][]" type="text" value="1" /> {$currency->sign|escape}</div>
|
||||
</li>
|
||||
<li class="icons">
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- Валюты (The End)-->
|
||||
|
||||
|
||||
<div id="action">
|
||||
|
||||
<input type=hidden name=recalculate value='0'>
|
||||
<input type=hidden name=action value=''>
|
||||
<input type=hidden name=action_id value=''>
|
||||
<input id='apply_action' class="button_green" type=submit value="Применить">
|
||||
|
||||
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
171
simpla/design/html/deliveries.tpl
Normal file
@@ -0,0 +1,171 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('settings', $manager->permissions)}<li><a href="index.php?module=SettingsAdmin">Настройки</a></li>{/if}
|
||||
{if in_array('currency', $manager->permissions)}<li><a href="index.php?module=CurrencyAdmin">Валюты</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=DeliveriesAdmin">Доставка</a></li>
|
||||
{if in_array('payment', $manager->permissions)}<li><a href="index.php?module=PaymentMethodsAdmin">Оплата</a></li>{/if}
|
||||
{if in_array('managers', $manager->permissions)}<li><a href="index.php?module=ManagersAdmin">Менеджеры</a></li>{/if}
|
||||
{if in_array('maillist', $manager->permissions)}<li><a href="index.php?module=MailingMethodsAdmin">Рассылка</a></li>{/if}
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Доставка' scope=parent}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1>Доставка</h1>
|
||||
<a class="add" href="{url module=DeliveryAdmin}">Добавить способ доставки</a>
|
||||
</div>
|
||||
|
||||
<div id="main_list">
|
||||
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list">
|
||||
|
||||
{foreach $deliveries as $delivery}
|
||||
<div class="{if !$delivery->enabled}invisible{/if} row">
|
||||
<input type="hidden" name="positions[{$delivery->id}]" value="{$delivery->position}">
|
||||
<div class="move cell"><div class="move_zone"></div></div>
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$delivery->id}" />
|
||||
</div>
|
||||
<div class="name cell">
|
||||
<a href="{url module=DeliveryAdmin id=$delivery->id return=$smarty.server.REQUEST_URI}">{$delivery->name|escape}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="enable" title="Активен" href="#"></a>
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class='dash_link'>Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="enable">Включить</option>
|
||||
<option value="disable">Выключить</option>
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Сортировка списка
|
||||
$("#list").sortable({
|
||||
items: ".row",
|
||||
tolerance: "pointer",
|
||||
handle: ".move_zone",
|
||||
scrollSensitivity: 40,
|
||||
opacity: 0.7,
|
||||
forcePlaceholderSize: true,
|
||||
axis: 'y',
|
||||
|
||||
helper: function(event, ui){
|
||||
if($('input[type="checkbox"][name*="check"]:checked').size()<1) return ui;
|
||||
var helper = $('<div/>');
|
||||
$('input[type="checkbox"][name*="check"]:checked').each(function(){
|
||||
var item = $(this).closest('.row');
|
||||
helper.height(helper.height()+item.innerHeight());
|
||||
if(item[0]!=ui[0]) {
|
||||
helper.append(item.clone());
|
||||
$(this).closest('.row').remove();
|
||||
}
|
||||
else {
|
||||
helper.append(ui.clone());
|
||||
item.find('input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
}
|
||||
});
|
||||
return helper;
|
||||
},
|
||||
start: function(event, ui) {
|
||||
if(ui.helper.children('.row').size()>0)
|
||||
$('.ui-sortable-placeholder').height(ui.helper.height());
|
||||
},
|
||||
beforeStop:function(event, ui){
|
||||
if(ui.helper.children('.row').size()>0){
|
||||
ui.helper.children('.row').each(function(){
|
||||
$(this).insertBefore(ui.item);
|
||||
});
|
||||
ui.item.remove();
|
||||
}
|
||||
},
|
||||
update:function(event, ui)
|
||||
{
|
||||
$("#list_form input[name*='check']").attr('checked', false);
|
||||
$("#list_form").ajaxSubmit(function() {
|
||||
colorize();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:checked)').length>0);
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Скрыт/Видим
|
||||
$("a.enable").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest(".row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = line.hasClass('invisible')?1:0;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'delivery', 'id': id, 'values': {'enabled': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
line.removeClass('invisible');
|
||||
else
|
||||
line.addClass('invisible');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
$("form").submit(function() {
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
115
simpla/design/html/delivery.tpl
Normal file
@@ -0,0 +1,115 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('settings', $manager->permissions)}<li><a href="index.php?module=SettingsAdmin">Настройки</a></li>{/if}
|
||||
{if in_array('currency', $manager->permissions)}<li><a href="index.php?module=CurrencyAdmin">Валюты</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=DeliveriesAdmin">Доставка</a></li>
|
||||
{if in_array('payment', $manager->permissions)}<li><a href="index.php?module=PaymentMethodsAdmin">Оплата</a></li>{/if}
|
||||
{if in_array('managers', $manager->permissions)}<li><a href="index.php?module=ManagersAdmin">Менеджеры</a></li>{/if}
|
||||
{/capture}
|
||||
|
||||
{if $delivery->id}
|
||||
{$meta_title = $delivery->name scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новый способ доставки' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Подключаем Tiny MCE *}
|
||||
{include file='tinymce_init.tpl'}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script src="design/js/jquery/jquery.js"></script>
|
||||
<script src="design/js/jquery/jquery-ui.min.js"></script>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
$('select[name=module]').change(function(){
|
||||
$('div#module_settings').hide();
|
||||
$('div#module_settings[module='+$(this).val()+']').show();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
{/literal}
|
||||
|
||||
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success == 'added'}Способ доставки добавлен{elseif $message_success == 'updated'}Способ доставки изменен{/if}</span>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{$message_error}</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div id="name">
|
||||
<input class="name" name=name type="text" value="{$delivery->name|escape}"/>
|
||||
<input name=id type="hidden" value="{$delivery->id}"/>
|
||||
<div class="checkbox">
|
||||
<input name=enabled value='1' type="checkbox" id="active_checkbox" {if $delivery->enabled}checked{/if}/> <label for="active_checkbox">Активен</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block layer">
|
||||
<h2>Стоимость доставки</h2>
|
||||
<ul>
|
||||
<li><label class=property>Стоимость</label><input name="price" class="simpla_small_inp" type="text" value="{$delivery->price}" /> {$currency->sign}</li>
|
||||
<li><label class=property>Бесплатна от</label><input name="free_from" class="simpla_small_inp" type="text" value="{$delivery->free_from}" /> {$currency->sign}</li>
|
||||
<li><label class=property for="separate_payment">Оплачивается отдельно</label><input id="separate_payment" name="separate_payment" type="checkbox" value="1" {if $delivery->separate_payment}checked{/if} /></li>
|
||||
<li><label class=property for="ems">EMS форма</label><input id="ems" name="ems" type="checkbox" value="1" {if $delivery->ems}checked{/if} /></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_right">
|
||||
<div class="block layer">
|
||||
<h2>Возможные способы оплаты</h2>
|
||||
<ul>
|
||||
{foreach $payment_methods as $payment_method}
|
||||
<li>
|
||||
<input type=checkbox name="delivery_payments[]" id="payment_{$payment_method->id}" value='{$payment_method->id}' {if in_array($payment_method->id, $delivery_payments)}checked{/if}> <label for="payment_{$payment_method->id}">{$payment_method->name}</label><br>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Описагние товара -->
|
||||
<div class="block layer">
|
||||
<h2>Описание</h2>
|
||||
<textarea name="description" class="editor_small">{$delivery->description|escape}</textarea>
|
||||
</div>
|
||||
<!-- Описание товара (The End)-->
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
|
||||
28
simpla/design/html/email_callback_admin.tpl
Normal file
@@ -0,0 +1,28 @@
|
||||
{$subject="Заявка на обратный звонок от `$callback->name|escape`" scope=parent}
|
||||
<h1 style='font-weight:normal;font-family:arial;'>Заявка на обратный звонок от {$callback->name|escape}</h1>
|
||||
<table cellpadding=6 cellspacing=0 style='border-collapse: collapse;'>
|
||||
<tr>
|
||||
<td style='padding:6px; width:170; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;'>
|
||||
Имя
|
||||
</td>
|
||||
<td style='padding:6px; width:330; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;'>
|
||||
{$callback->name|escape}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='padding:6px; width:170; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;'>
|
||||
Телефон
|
||||
</td>
|
||||
<td style='padding:6px; width:330; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;'>
|
||||
{$callback->phone|escape}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='padding:6px; width:170; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;'>
|
||||
Сообщение:
|
||||
</td>
|
||||
<td style='padding:6px; width:330; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;'>
|
||||
{$callback->message|escape|nl2br}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
51
simpla/design/html/email_comment_admin.tpl
Normal file
@@ -0,0 +1,51 @@
|
||||
{if $comment->approved}
|
||||
{$subject="Новый комментарий от `$comment->name|escape`" scope=parent}
|
||||
{else}
|
||||
{$subject="Комментарий от `$comment->name|escape` ожидает одобрения" scope=parent}
|
||||
{/if}
|
||||
{if $comment->approved}
|
||||
<h1 style="font-weight:normal;font-family:arial;"><a href="{$config->root_url}/simpla/index.php?module=CommentsAdmin">Новый комментарий</a> от {$comment->name|escape}</h1>
|
||||
{else}
|
||||
<h1 style="font-weight:normal;font-family:arial;"><a href="{$config->root_url}/simpla/index.php?module=CommentsAdmin">Комментарий</a> от {$comment->name|escape} ожидает одобрения</h1>
|
||||
{/if}
|
||||
|
||||
<table cellpadding="6" cellspacing="0" style="border-collapse: collapse;">
|
||||
<tr>
|
||||
<td style="padding:6px; width:170; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
|
||||
Имя
|
||||
</td>
|
||||
<td style="padding:6px; width:330; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
|
||||
{$comment->name|escape}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
|
||||
Комментарий
|
||||
</td>
|
||||
<td style="padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
|
||||
{$comment->text|escape|nl2br}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
|
||||
Время
|
||||
</td>
|
||||
<td style="padding:6px; width:170; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
|
||||
{$comment->date|date} {$comment->date|time}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:6px; width:170; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
|
||||
Статус
|
||||
</td>
|
||||
<td style="padding:6px; width:330; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
|
||||
{if $comment->approved}
|
||||
Одобрен
|
||||
{else}
|
||||
Ожидает одобрения
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
Приятной работы с <a href='http://simp.la'>Simpla</a>!
|
||||
38
simpla/design/html/email_feedback_admin.tpl
Normal file
@@ -0,0 +1,38 @@
|
||||
{$subject="Вопрос от пользователя `$feedback->name|escape`" scope=parent}
|
||||
<h1 style='font-weight:normal;font-family:arial;'>Вопрос от пользователя {$feedback->name|escape}</h1>
|
||||
<table cellpadding=6 cellspacing=0 style='border-collapse: collapse;'>
|
||||
<tr>
|
||||
<td style='padding:6px; width:170; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;'>
|
||||
Имя
|
||||
</td>
|
||||
<td style='padding:6px; width:330; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;'>
|
||||
{$feedback->name|escape}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='padding:6px; width:170; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;'>
|
||||
Email
|
||||
</td>
|
||||
<td style='padding:6px; width:330; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;'>
|
||||
<a href='mailto:{$feedback->email|escape}?subject={$settings->site_name}'>{$feedback->email|escape}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;'>
|
||||
IP
|
||||
</td>
|
||||
<td style='padding:6px; width:170; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;'>
|
||||
{$feedback->ip|escape} (<a href='http://www.ip-adress.com/ip_tracer/{$feedback->ip}/'>где это?</a>)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='padding:6px; width:170; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;'>
|
||||
Сообщение:
|
||||
</td>
|
||||
<td style='padding:6px; width:330; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;'>
|
||||
{$feedback->message|escape|nl2br}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
Приятной работы с <a href='http://simp.la'>Simpla</a>!
|
||||
177
simpla/design/html/email_order_admin.tpl
Normal file
@@ -0,0 +1,177 @@
|
||||
{if $order->paid}
|
||||
{$subject = "Заказ №`$order->id` оплачен" scope=parent}
|
||||
{else}
|
||||
{$subject = "Новый заказ №`$order->id`" scope=parent}
|
||||
{/if}
|
||||
<h1 style="font-weight:normal;font-family:arial;">
|
||||
<a href="{$config->root_url}/simpla/index.php?module=OrderAdmin&id={$order->id}">Заказ №{$order->id}</a>
|
||||
на сумму {$order->total_price|convert:$main_currency->id} {$main_currency->sign}
|
||||
{if $order->paid == 1}оплачен{else}еще не оплачен{/if},
|
||||
{if $order->status == 0}ждет обработки{elseif $order->status == 1}в обработке{elseif $order->status == 2}выполнен{/if}
|
||||
</h1>
|
||||
<table cellpadding="6" cellspacing="0" style="border-collapse: collapse;">
|
||||
<tr>
|
||||
<td style="padding:6px; width:170; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
|
||||
Статус
|
||||
</td>
|
||||
<td style="padding:6px; width:330; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
|
||||
{if $order->status == 0}
|
||||
ждет обработки
|
||||
{elseif $order->status == 1}
|
||||
в обработке
|
||||
{elseif $order->status == 2}
|
||||
выполнен
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:6px; width:170; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
|
||||
Оплата
|
||||
</td>
|
||||
<td style="padding:6px; width:330; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
|
||||
{if $order->paid == 1}
|
||||
<font color="green">оплачен</font>
|
||||
{else}
|
||||
не оплачен
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{if $order->name}
|
||||
<tr>
|
||||
<td style="padding:6px; width:170; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
|
||||
Имя, фамилия
|
||||
</td>
|
||||
<td style="padding:6px; width:330; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
|
||||
{$order->name|escape} {$order->name2|escape}
|
||||
{if $user}(<a href="{$config->root_url}/simpla/index.php?module=UserAdmin&id={$user->id}">зарегистрированный пользователь</a>){/if}
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
{if $order->email}
|
||||
<tr>
|
||||
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
|
||||
Email
|
||||
</td>
|
||||
<td style="padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
|
||||
{$order->email|escape}
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
{if $order->phone}
|
||||
<tr>
|
||||
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
|
||||
Телефон
|
||||
</td>
|
||||
<td style="padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
|
||||
{$order->phone|escape}
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
{if $order->address}
|
||||
<tr>
|
||||
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
|
||||
Страна, Регион, Город, адрес доставки
|
||||
</td>
|
||||
<td style="padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
|
||||
{$order->country|escape}, {$order->region|escape}, {$order->city|escape}, {$order->address|escape}, {$order->index|escape}
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
{if $order->comment}
|
||||
<tr>
|
||||
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
|
||||
Комментарий
|
||||
</td>
|
||||
<td style="padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
|
||||
{$order->comment|escape|nl2br}
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
<tr>
|
||||
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
|
||||
Дата
|
||||
</td>
|
||||
<td style="padding:6px; width:170; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
|
||||
{$order->date|date} {$order->date|time}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h1 style="font-weight:normal;font-family:arial;">Покупатель заказал:</h1>
|
||||
|
||||
<table cellpadding="6" cellspacing="0" style="border-collapse: collapse;">
|
||||
|
||||
{foreach name=purchases from=$purchases item=purchase}
|
||||
<tr>
|
||||
<td align="center" style="padding:6px; width:100; padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
|
||||
{$image = $purchase->product->images[0]}
|
||||
<a href="{$config->root_url}/products/{$purchase->product->url}"><img border="0" src="{$image->filename|resize:50:50}"></a>
|
||||
</td>
|
||||
<td style="padding:6px; width:250; padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
|
||||
<a href="{$config->root_url}/products/{$purchase->product->url}">{$purchase->product_name}</a>
|
||||
{$purchase->variant_name}
|
||||
<div class="features">
|
||||
{foreach from=$purchase->options item=opt key=ok}
|
||||
{assign var=f value=$features[$ok]}
|
||||
<p>
|
||||
<label>{$f->name} </label>
|
||||
<span>
|
||||
{$opt}
|
||||
</span>
|
||||
</p>
|
||||
|
||||
{/foreach}
|
||||
</div>
|
||||
</td>
|
||||
<td align=right style="padding:6px; text-align:right; width:150; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
|
||||
{$purchase->amount} {$settings->units} × {$purchase->price|convert:$main_currency->id} {$main_currency->sign}
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
|
||||
{if $order->discount}
|
||||
<tr>
|
||||
<td style="padding:6px; width:100; padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;"></td>
|
||||
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
|
||||
Скидка
|
||||
</td>
|
||||
<td align=right style="padding:6px; text-align:right; width:170; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
|
||||
{$order->discount} %
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
{if $order->coupon_discount>0}
|
||||
<tr>
|
||||
<td style="padding:6px; width:100; padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;"></td>
|
||||
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
|
||||
Купон {$order->coupon_code}
|
||||
</td>
|
||||
<td align=right style="padding:6px; text-align:right; width:170; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
|
||||
−{$order->coupon_discount} {$currency->sign}
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
{if $delivery && !$order->separate_delivery}
|
||||
<tr>
|
||||
<td style="padding:6px; width:100; padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;"></td>
|
||||
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
|
||||
{$delivery->name}
|
||||
</td>
|
||||
<td align="right" style="padding:6px; text-align:right; width:170; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
|
||||
{$order->delivery_price|convert:$main_currency->id} {$main_currency->sign}
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
<tr>
|
||||
<td style="padding:6px; width:100; padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;"></td>
|
||||
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;font-weight:bold;">
|
||||
Итого
|
||||
</td>
|
||||
<td align="right" style="padding:6px; text-align:right; width:170; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;font-weight:bold;">
|
||||
{$order->total_price|convert:$main_currency->id} {$main_currency->sign}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
93
simpla/design/html/export.tpl
Normal file
@@ -0,0 +1,93 @@
|
||||
{capture name=tabs}
|
||||
{if in_array('import', $manager->permissions)}<li><a href="index.php?module=ImportAdmin">Импорт</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=ExportAdmin">Экспорт</a></li>
|
||||
{if in_array('backup', $manager->permissions)}<li><a href="index.php?module=BackupAdmin">Бекап</a></li>{/if}
|
||||
{/capture}
|
||||
{$meta_title='Экспорт товаров' scope=parent}
|
||||
|
||||
<script src="{$config->root_url}/simpla/design/js/piecon/piecon.js"></script>
|
||||
<script>
|
||||
{literal}
|
||||
|
||||
var in_process=false;
|
||||
|
||||
$(function() {
|
||||
|
||||
// On document load
|
||||
$('input#start').click(function() {
|
||||
|
||||
Piecon.setOptions({fallback: 'force'});
|
||||
Piecon.setProgress(0);
|
||||
$("#progressbar").progressbar({ value: 0 });
|
||||
|
||||
$("#start").hide('fast');
|
||||
do_export();
|
||||
|
||||
});
|
||||
|
||||
function do_export(page)
|
||||
{
|
||||
page = typeof(page) != 'undefined' ? page : 1;
|
||||
|
||||
$.ajax({
|
||||
url: "ajax/export.php",
|
||||
data: {page:page},
|
||||
dataType: 'json',
|
||||
success: function(data){
|
||||
|
||||
if(data && !data.end)
|
||||
{
|
||||
Piecon.setProgress(Math.round(100*data.page/data.totalpages));
|
||||
$("#progressbar").progressbar({ value: 100*data.page/data.totalpages });
|
||||
do_export(data.page*1+1);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(data && data.end)
|
||||
{
|
||||
Piecon.setProgress(100);
|
||||
$("#progressbar").hide('fast');
|
||||
window.location.href = 'files/export/export.csv';
|
||||
}
|
||||
}
|
||||
},
|
||||
error:function(xhr, status, errorThrown) {
|
||||
alert(errorThrown+'\n'+xhr.responseText);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
{/literal}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.ui-progressbar-value { background-image: url(design/images/progress.gif); background-position:left; border-color: #009ae2;}
|
||||
#progressbar{ clear: both; height:29px; }
|
||||
#result{ clear: both; width:100%;}
|
||||
#download{ display:none; clear: both; }
|
||||
</style>
|
||||
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>
|
||||
{if $message_error == 'no_permission'}Установите права на запись в папку {$export_files_dir}
|
||||
{else}{$message_error}{/if}
|
||||
</span>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
<div>
|
||||
<h1>Экспорт товаров</h1>
|
||||
{if $message_error != 'no_permission'}
|
||||
<div id='progressbar'></div>
|
||||
<input class="button_green" id="start" type="button" name="" value="Экспортировать" />
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
91
simpla/design/html/export_users.tpl
Normal file
@@ -0,0 +1,91 @@
|
||||
{capture name=tabs}
|
||||
{/capture}
|
||||
{$meta_title='Экспорт покупателей' scope=parent}
|
||||
|
||||
<script src="{$config->root_url}/simpla/design/js/piecon/piecon.js"></script>
|
||||
<script>
|
||||
var in_process=false;
|
||||
var group_id='{$group_id|escape}';
|
||||
var keyword='{$keyword|escape}';
|
||||
var sort='{$sort|escape}';
|
||||
|
||||
{literal}
|
||||
var in_process=false;
|
||||
|
||||
$(function() {
|
||||
|
||||
// On document load
|
||||
$('input#start').click(function() {
|
||||
|
||||
Piecon.setOptions({fallback: 'force'});
|
||||
Piecon.setProgress(0);
|
||||
$("#progressbar").progressbar({ value: 0 });
|
||||
|
||||
$("#start").hide('fast');
|
||||
do_export();
|
||||
|
||||
});
|
||||
|
||||
function do_export(page)
|
||||
{
|
||||
page = typeof(page) != 'undefined' ? page : 1;
|
||||
|
||||
$.ajax({
|
||||
url: "ajax/export_users.php",
|
||||
data: {page:page, group_id:group_id, keyword:keyword, sort:sort},
|
||||
dataType: 'json',
|
||||
success: function(data){
|
||||
|
||||
if(data && !data.end)
|
||||
{
|
||||
Piecon.setProgress(Math.round(100*data.page/data.totalpages));
|
||||
$("#progressbar").progressbar({ value: 100*data.page/data.totalpages });
|
||||
do_export(data.page*1+1);
|
||||
}
|
||||
else
|
||||
{
|
||||
Piecon.setProgress(100);
|
||||
$("#progressbar").hide('fast');
|
||||
window.location.href = 'files/export_users/users.csv';
|
||||
|
||||
}
|
||||
},
|
||||
error:function(xhr, status, errorThrown) {
|
||||
alert(errorThrown+'\n'+xhr.responseText);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
{/literal}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.ui-progressbar-value { background-image: url(design/images/progress.gif); background-position:left; border-color: #009ae2;}
|
||||
#progressbar{ clear: both; height:29px; }
|
||||
#result{ clear: both; width:100%;}
|
||||
#download{ display:none; clear: both; }
|
||||
</style>
|
||||
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>
|
||||
{if $message_error == 'no_permission'}Установите права на запись в папку {$export_files_dir}
|
||||
{else}{$message_error}{/if}
|
||||
</span>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
<div>
|
||||
<h1>Экспорт покупателей</h1>
|
||||
{if $message_error != 'no_permission'}
|
||||
<div id='progressbar'></div>
|
||||
<input class="button_green" id="start" type="button" name="" value="Экспортировать" />
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
93
simpla/design/html/feature.old
Normal file
@@ -0,0 +1,93 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('products', $manager->permissions)}<li><a href="index.php?module=ProductsAdmin">Товары</a></li>{/if}
|
||||
{if in_array('categories', $manager->permissions)}<li><a href="index.php?module=CategoriesAdmin">Категории</a></li>{/if}
|
||||
{if in_array('brands', $manager->permissions)}<li><a href="index.php?module=BrandsAdmin">Бренды</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=FeaturesAdmin">Свойства</a></li>
|
||||
{/capture}
|
||||
|
||||
{if $feature->id}
|
||||
{$meta_title = $feature->name scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новое свойство' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success=='added'}Свойство добавлено{elseif $message_success=='updated'}Свойство обновлено{else}{$message_success}{/if}</span>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{$message_error}</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product>
|
||||
|
||||
<div id="name">
|
||||
<input class="name" name=name type="text" value="{$feature->name|escape}"/>
|
||||
<input name=id type="hidden" value="{$feature->id|escape}"/>
|
||||
</div>
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
|
||||
<!-- Категории -->
|
||||
<div class="block">
|
||||
<h2>Использовать в категориях</h2>
|
||||
<select class=multiple_categories multiple name="feature_categories[]">
|
||||
{function name=category_select selected_id=$product_category level=0}
|
||||
{foreach from=$categories item=category}
|
||||
<option value='{$category->id}' {if in_array($category->id, $feature_categories)}selected{/if} category_name='{$category->single_name}'>{section name=sp loop=$level} {/section}{$category->name}</option>
|
||||
{category_select categories=$category->subcategories selected_id=$selected_id level=$level+1}
|
||||
{/foreach}
|
||||
{/function}
|
||||
{category_select categories=$categories}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Правая колонка свойств товара -->
|
||||
<div id="column_right">
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block">
|
||||
<h2>Настройки свойства</h2>
|
||||
<ul>
|
||||
<li><input type=checkbox name=in_filter id=in_filter {if $feature->in_filter}checked{/if} value="1"> <label for=in_filter>Использовать в фильтре</label></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
<input type=hidden name='session_id' value='{$smarty.session.id}'>
|
||||
<input class="button_green" type="submit" name="" value="Сохранить" />
|
||||
|
||||
</div>
|
||||
<!-- Правая колонка свойств товара (The End)-->
|
||||
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
|
||||
135
simpla/design/html/feature.tpl
Normal file
@@ -0,0 +1,135 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('products', $manager->permissions)}<li><a href="index.php?module=ProductsAdmin">Товары</a></li>{/if}
|
||||
{if in_array('categories', $manager->permissions)}<li><a href="index.php?module=CategoriesAdmin">Категории</a></li>{/if}
|
||||
{if in_array('brands', $manager->permissions)}<li><a href="index.php?module=BrandsAdmin">Бренды</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=FeaturesAdmin">Свойства</a></li>
|
||||
{/capture}
|
||||
|
||||
{if $feature->id}
|
||||
{$meta_title = $feature->name scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новое свойство' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
/* Удаление картинки*/
|
||||
$(".images a.delete").click( function() {
|
||||
$("input[name='delete_image']").val('1');
|
||||
$(this).closest("ul").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success=='added'}Свойство добавлено{elseif $message_success=='updated'}Свойство обновлено{else}{$message_success}{/if}</span>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{$message_error}</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
|
||||
<div id="name">
|
||||
<input class="name" name=name type="text" value="{$feature->name|escape}"/>
|
||||
<input name=id type="hidden" value="{$feature->id|escape}"/>
|
||||
</div>
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
|
||||
<!-- Категории -->
|
||||
<div class="block">
|
||||
<h2>Использовать в категориях</h2>
|
||||
<select class=multiple_categories multiple name="feature_categories[]">
|
||||
{function name=category_select selected_id=$product_category level=0}
|
||||
{foreach from=$categories item=category}
|
||||
<option value='{$category->id}' {if in_array($category->id, $feature_categories)}selected{/if} category_name='{$category->single_name}'>{section name=sp loop=$level} {/section}{$category->name}</option>
|
||||
{category_select categories=$category->subcategories selected_id=$selected_id level=$level+1}
|
||||
{/foreach}
|
||||
{/function}
|
||||
{category_select categories=$categories}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Правая колонка свойств товара -->
|
||||
<div id="column_right">
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block">
|
||||
<h2>Настройки свойства</h2>
|
||||
<ul>
|
||||
<!-- Добавлены свойства -->
|
||||
<li><input type=checkbox name=req id=req {if $feature->req}checked{/if} value="1"> <label for=req>Обязательно к заполнению</label></li>
|
||||
<li><input type=checkbox name=on_prod id=on_prod {if $feature->on_prod}checked{/if} value="1"> <label for=on_prod>Отображать на странице продукта</label></li>
|
||||
<li><input type=checkbox name=on_main id=on_main {if $feature->on_main}checked{/if} value="1"> <label for=on_main>Отображать на главной странице</label></li>
|
||||
<li><input type=checkbox name=multiselect id=multiselect {if $feature->multiselect}checked{/if} value="1"> <label for=multiselect>Множественный выбор</label></li>
|
||||
<li><input type=checkbox name=in_filter id=in_filter {if $feature->in_filter}checked{/if} value="1"> <label for=in_filter>Использовать в фильтре</label></li>
|
||||
<li><input type=checkbox name=in_variant id=in_variant {if $feature->in_variant}checked{/if} value="1"> <label for=in_variant>Использовать в вариантах</label></li>
|
||||
<li><input type=checkbox name=in_compare id=in_compare {if $feature->in_compare}checked{/if} value="1"> <label for=in_compare>Использовать в сравнении</label></li>
|
||||
<li><input type=checkbox name=isrange id=isrange {if $feature->isrange}checked{/if} value="1" /> <label for=isrange>Выбор диапазона (от... до...)</label>
|
||||
<ul>
|
||||
<li><input type=checkbox name=slider id=slider {if $feature->slider}checked{/if} value="1" /> <label for=slider>Ползунок</label></li>
|
||||
<li><label class=property for=unit>Единицы измерения</label><input name="unit" class="small_simpla_inp" type="text" id="unit" value="{$feature->unit|escape}" /></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><input type=checkbox name=istext id=istext {if $feature->istext}checked{/if} value="1" /> <label for=istext>Значение клиента</label>
|
||||
<li><label for=nameselect>Текст при выборе</label><input name="nameselect" class="small_simpla_inp" type="text" id="nameselect" value="{$feature->nameselect|escape}" /></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Изображение категории -->
|
||||
<div class="block layer images">
|
||||
<h2>Изображение свойства</h2>
|
||||
<input class='upload_image' name=image type=file>
|
||||
<input type=hidden name="delete_image" value="">
|
||||
{if $feature->image}
|
||||
<ul>
|
||||
<li>
|
||||
<a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a>
|
||||
<img src="../{$config->features_images_dir}{$feature->image}" alt="" />
|
||||
</li>
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- Параметры страницы (The End)-->
|
||||
<input type=hidden name='session_id' value='{$smarty.session.id}'>
|
||||
<input class="button_green" type="submit" name="" value="Сохранить" />
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<!-- Правая колонка свойств товара (The End)-->
|
||||
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
|
||||
195
simpla/design/html/features.tpl
Normal file
@@ -0,0 +1,195 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('products', $manager->permissions)}<li><a href="index.php?module=ProductsAdmin">Товары</a></li>{/if}
|
||||
{if in_array('categories', $manager->permissions)}<li><a href="index.php?module=CategoriesAdmin">Категории</a></li>{/if}
|
||||
{if in_array('brands', $manager->permissions)}<li><a href="index.php?module=BrandsAdmin">Бренды</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=FeaturesAdmin">Свойства</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Свойства' scope=parent}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1>Свойства</h1>
|
||||
<a class="add" href="{url module=FeatureAdmin return=$smarty.server.REQUEST_URI}">Добавить свойство</a>
|
||||
</div>
|
||||
|
||||
{if $features}
|
||||
<div id="main_list" class="features">
|
||||
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list">
|
||||
{foreach $features as $feature}
|
||||
<div class="{if $feature->in_filter}in_filter{/if} row">
|
||||
<input type="hidden" name="positions[{$feature->id}]" value="{$feature->position}">
|
||||
<div class="move cell"><div class="move_zone"></div></div>
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$feature->id}" />
|
||||
</div>
|
||||
<div class="cell">
|
||||
<a href="{url module=FeatureAdmin id=$feature->id return=$smarty.server.REQUEST_URI}">{$feature->name|escape}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a title="Использовать в фильтре" class="in_filter" href='#' ></a>
|
||||
<a title="Удалить" class="delete" href='#' ></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="set_in_filter">Использовать в фильтре</option>
|
||||
<option value="unset_in_filter">Не использовать в фильтре</option>
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
{else}
|
||||
Нет свойств
|
||||
{/if}
|
||||
|
||||
<!-- Меню -->
|
||||
<div id="right_menu">
|
||||
|
||||
<!-- Категории товаров -->
|
||||
{function name=categories_tree}
|
||||
{if $categories}
|
||||
<ul>
|
||||
{if $categories[0]->parent_id == 0}
|
||||
<li {if !$category->id}class="selected"{/if}><a href="{url category_id=null brand_id=null}">Все категории</a></li>
|
||||
{/if}
|
||||
{foreach item=c from=$categories}
|
||||
<li {if $category->id == $c->id}class="selected"{/if}><a href="index.php?module=FeaturesAdmin&category_id={$c->id}">{$c->name}</a></li>
|
||||
{categories_tree categories=$c->subcategories}
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
{/function}
|
||||
{categories_tree categories=$categories}
|
||||
<!-- Категории товаров (The End)-->
|
||||
|
||||
</div>
|
||||
<!-- Левое меню (The End) -->
|
||||
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Сортировка списка
|
||||
$("#list").sortable({
|
||||
items: ".row",
|
||||
tolerance: "pointer",
|
||||
handle: ".move_zone",
|
||||
axis: 'y',
|
||||
scrollSensitivity: 40,
|
||||
opacity: 0.7,
|
||||
forcePlaceholderSize: true,
|
||||
|
||||
helper: function(event, ui){
|
||||
if($('input[type="checkbox"][name*="check"]:checked').size()<1) return ui;
|
||||
var helper = $('<div/>');
|
||||
$('input[type="checkbox"][name*="check"]:checked').each(function(){
|
||||
var item = $(this).closest('.row');
|
||||
helper.height(helper.height()+item.innerHeight());
|
||||
if(item[0]!=ui[0]) {
|
||||
helper.append(item.clone());
|
||||
$(this).closest('.row').remove();
|
||||
}
|
||||
else {
|
||||
helper.append(ui.clone());
|
||||
item.find('input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
}
|
||||
});
|
||||
return helper;
|
||||
},
|
||||
start: function(event, ui) {
|
||||
if(ui.helper.children('.row').size()>0)
|
||||
$('.ui-sortable-placeholder').height(ui.helper.height());
|
||||
},
|
||||
beforeStop:function(event, ui){
|
||||
if(ui.helper.children('.row').size()>0){
|
||||
ui.helper.children('.row').each(function(){
|
||||
$(this).insertBefore(ui.item);
|
||||
});
|
||||
ui.item.remove();
|
||||
}
|
||||
},
|
||||
update:function(event, ui)
|
||||
{
|
||||
$("#list_form input[name*='check']").attr('checked', false);
|
||||
$("#list_form").ajaxSubmit(function() {
|
||||
colorize();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:checked)').length>0);
|
||||
});
|
||||
|
||||
// Указать "в фильтре"/"не в фильтре"
|
||||
$("a.in_filter").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest(".row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = line.hasClass('in_filter')?0:1;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'feature', 'id': id, 'values': {'in_filter': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(!state)
|
||||
line.removeClass('in_filter');
|
||||
else
|
||||
line.addClass('in_filter');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest("div.row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form").submit(function() {
|
||||
if($('#list input[type="checkbox"][name*="check"]:checked').length>0)
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
158
simpla/design/html/feedbacks.tpl
Normal file
@@ -0,0 +1,158 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('comments', $manager->permissions)}<li><a href="index.php?module=CommentsAdmin">Комментарии</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=FeedbacksAdmin">Обратная связь</a></li>
|
||||
|
||||
{if in_array('callbacks', $manager->permissions)}<li><a href="index.php?module=CallbacksAdmin">Заказ обратного звонка</a></li>{/if}
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Обратная связь' scope=parent}
|
||||
|
||||
|
||||
{* Поиск *}
|
||||
{if $feedbacks || $keyword}
|
||||
<form method="get">
|
||||
<div id="search">
|
||||
<input type="hidden" name="module" value='FeedbacksAdmin'>
|
||||
<input class="search" type="text" name="keyword" value="{$keyword|escape}" />
|
||||
<input class="search_button" type="submit" value=""/>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
{if $feedbacks_count}
|
||||
<h1>{$feedbacks_count} {$feedbacks_count|plural:'сообщение':'сообщений':'сообщения'}</h1>
|
||||
{else}
|
||||
<h1>Нет сообщений</h1>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div id="main_list">
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
{if $feedbacks}
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list" style="width:100%;">
|
||||
|
||||
{foreach $feedbacks as $feedback}
|
||||
<div class="row">
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$feedback->id}" />
|
||||
</div>
|
||||
<div class="name cell">
|
||||
<div class='comment_name'>
|
||||
<a href="mailto:{$feedback->name|escape}<{$feedback->email|escape}>?subject=Вопрос от пользователя {$feedback->name|escape}">{$feedback->name|escape}</a>
|
||||
</div>
|
||||
<div class='comment_text'>
|
||||
{$feedback->message|escape|nl2br}
|
||||
</div>
|
||||
<div class='comment_info'>
|
||||
Сообщение отправлено {$feedback->date|date} в {$feedback->date|time}
|
||||
</div>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' title='Удалить' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id='check_all' class='dash_link'>Выбрать все</label>
|
||||
|
||||
<span id=select>
|
||||
<select name="action">
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id='apply_action' class="button_green" type=submit value="Применить">
|
||||
|
||||
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{else}
|
||||
Нет сообщений
|
||||
{/if}
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Меню -->
|
||||
<div id="right_menu">
|
||||
|
||||
</div>
|
||||
<!-- Меню (The End) -->
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:checked)').length>0);
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Скрыт/Видим
|
||||
$("a.enable").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest(".row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = line.hasClass('invisible')?1:0;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'blog', 'id': id, 'values': {'visible': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
line.removeClass('invisible');
|
||||
else
|
||||
line.addClass('invisible');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form#list_form").submit(function() {
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
93
simpla/design/html/group.tpl
Normal file
@@ -0,0 +1,93 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('users', $manager->permissions)}<li><a href="index.php?module=UsersAdmin">Покупатели</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=GroupsAdmin">Группы</a></li>
|
||||
{if in_array('coupons', $manager->permissions)}<li><a href="index.php?module=CouponsAdmin">Купоны</a></li>{/if}
|
||||
{/capture}
|
||||
|
||||
{if $group->id}
|
||||
{$meta_title = $group->name scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новая группа' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script src="design/js/jquery/jquery.js"></script>
|
||||
<script src="design/js/jquery/jquery-ui.min.js"></script>
|
||||
|
||||
|
||||
<script type="text/javascript" src="design/js/autocomplete/jquery.autocomplete-min.js"></script>
|
||||
<style>
|
||||
.autocomplete-w1 { background:url(img/shadow.png) no-repeat bottom right; position:absolute; top:0px; left:0px; margin:6px 0 0 6px; /* IE6 fix: */ _background:none; _margin:1px 0 0 0; }
|
||||
.autocomplete { border:1px solid #999; background:#FFF; cursor:default; text-align:left; overflow-x:auto; min-width: 300px; overflow-y: auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; }
|
||||
.autocomplete .selected { background:#F0F0F0; }
|
||||
.autocomplete div { padding:2px 5px; white-space:nowrap; }
|
||||
.autocomplete strong { font-weight:normal; color:#3399FF; }
|
||||
</style>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
{/literal}
|
||||
|
||||
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success=='added'}Группа добавлена{elseif $message_success=='updated'}Группа изменена{else}{$message_success|escape}{/if}</span>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{$message_error}</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div id="name">
|
||||
<input class="name" name=name type="text" value="{$group->name|escape}"/>
|
||||
<input name=id type="hidden" value="{$group->id|escape}"/>
|
||||
</div>
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block">
|
||||
<ul>
|
||||
<li><label class=property>Скидка</label><input name="discount" class="simpla_inp" type="text" value="{$group->discount|escape}" />%</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
98
simpla/design/html/groups.tpl
Normal file
@@ -0,0 +1,98 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('users', $manager->permissions)}<li><a href="index.php?module=UsersAdmin">Покупатели</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=GroupsAdmin">Группы</a></li>
|
||||
{if in_array('coupons', $manager->permissions)}<li><a href="index.php?module=CouponsAdmin">Купоны</a></li>{/if}
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Группы пользователей' scope=parent}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1>Группы пользователей</h1>
|
||||
<a class="add" href="index.php?module=GroupAdmin">Добавить группу</a>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Основная часть -->
|
||||
<div id="main_list">
|
||||
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
<div id="list" class="groups">
|
||||
|
||||
{foreach $groups as $group}
|
||||
<div class="row">
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$group->id}"/>
|
||||
</div>
|
||||
<div class="group_name cell">
|
||||
<a href="index.php?module=GroupAdmin&id={$group->id}">{$group->name}</a>
|
||||
</div>
|
||||
<div class="group_discount cell">
|
||||
{$group->discount} %
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id=select>
|
||||
<select name="action">
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
</div>
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', 1-$('#list input[type="checkbox"][name*="check"]').attr('checked'));
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form").submit(function() {
|
||||
if($('#list input[type="checkbox"][name*="check"]:checked').length>0)
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
89
simpla/design/html/images.tpl
Normal file
@@ -0,0 +1,89 @@
|
||||
{capture name=tabs}
|
||||
<li><a href="index.php?module=ThemeAdmin">Тема</a></li>
|
||||
<li><a href="index.php?module=TemplatesAdmin">Шаблоны</a></li>
|
||||
<li><a href="index.php?module=StylesAdmin">Стили</a></li>
|
||||
<li class="active"><a href="index.php?module=ImagesAdmin">Изображения</a></li>
|
||||
{/capture}
|
||||
|
||||
{$meta_title = "Изображения" scope=parent}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Редактировать
|
||||
$("a.edit").click(function() {
|
||||
name = $(this).closest('li').attr('name');
|
||||
inp1 = $('<input type=hidden name="old_name[]">').val(name);
|
||||
inp2 = $('<input type=text name="new_name[]">').val(name);
|
||||
$(this).closest('li').find("p.name").html('').append(inp1).append(inp2);
|
||||
inp2.focus().select();
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
name = $(this).closest('li').attr('name');
|
||||
$('input[name=delete_image]').val(name);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Загрузить
|
||||
$("#upload_image").click(function() {
|
||||
$(this).closest('div').append($('<input type=file name=upload_images[]>'));
|
||||
});
|
||||
|
||||
$("form").submit(function() {
|
||||
if($('input[name="delete_image"]').val()!='' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
<h1>Изображения темы {$theme}</h1>
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error == 'permissions'}Установите права на запись для папки {$images_dir}
|
||||
{elseif $message_error == 'name_exists'}Файл с таким именем уже существует
|
||||
{elseif $message_error == 'theme_locked'}Текущая тема защищена от изменений. Создайте копию темы.
|
||||
{else}{$message_error}{/if}</span>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
<input type="hidden" name="delete_image" value="">
|
||||
<!-- Список файлов для выбора -->
|
||||
<div class="block layer">
|
||||
<ul class="theme_images">
|
||||
{foreach item=image from=$images}
|
||||
<li name='{$image->name|escape}'>
|
||||
<a href='#' class='delete' title="Удалить"><img src='design/images/delete.png'></a>
|
||||
<a href='#' class='edit' title="Переименовать"><img src='design/images/pencil.png'></a>
|
||||
<p class="name">{$image->name|escape|truncate:16:'...'}</p>
|
||||
<div class="theme_image">
|
||||
<a class='preview' href='../{$images_dir}{$image->name|escape}'><img src='../{$images_dir}{$image->name|escape}'></a>
|
||||
</div>
|
||||
<p class=size>{if $image->size>1024*1024}{($image->size/1024/1024)|round:2} МБ{elseif $image->size>1024}{($image->size/1024)|round:2} КБ{else}{$image->size} Байт{/if}, {$image->width}×{$image->height} px</p>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="block upload_image">
|
||||
<span id="upload_image"><i class="dash_link">Добавить изображение</i></span>
|
||||
</div>
|
||||
|
||||
<div class="block">
|
||||
<input class="button_green button_save" type="submit" name="save" value="Сохранить" />
|
||||
</div>
|
||||
|
||||
</form>
|
||||
148
simpla/design/html/import.tpl
Normal file
@@ -0,0 +1,148 @@
|
||||
{capture name=tabs}
|
||||
<li class="active"><a href="index.php?module=ImportAdmin">Импорт</a></li>
|
||||
{if in_array('export', $manager->permissions)}<li><a href="index.php?module=ExportAdmin">Экспорт</a></li>{/if}
|
||||
{if in_array('backup', $manager->permissions)}<li><a href="index.php?module=BackupAdmin">Бекап</a></li>{/if}
|
||||
{/capture}
|
||||
{$meta_title='Импорт товаров' scope=parent}
|
||||
|
||||
<script src="{$config->root_url}/simpla/design/js/piecon/piecon.js"></script>
|
||||
<script>
|
||||
{if $filename}
|
||||
{literal}
|
||||
|
||||
var in_process=false;
|
||||
var count=1;
|
||||
|
||||
// On document load
|
||||
$(function(){
|
||||
Piecon.setOptions({fallback: 'force'});
|
||||
Piecon.setProgress(0);
|
||||
$("#progressbar").progressbar({ value: 1 });
|
||||
in_process=true;
|
||||
do_import();
|
||||
});
|
||||
|
||||
function do_import(from)
|
||||
{
|
||||
from = typeof(from) != 'undefined' ? from : 0;
|
||||
$.ajax({
|
||||
url: "ajax/import.php",
|
||||
data: {from:from},
|
||||
dataType: 'json',
|
||||
success: function(data){
|
||||
for(var key in data.items)
|
||||
{
|
||||
$('ul#import_result').prepend('<li><span class=count>'+count+'</span> <span title='+data.items[key].status+' class="status '+data.items[key].status+'"></span> <a target=_blank href="index.php?module=ProductAdmin&id='+data.items[key].product.id+'">'+data.items[key].product.name+'</a> '+data.items[key].variant.name+'</li>');
|
||||
count++;
|
||||
}
|
||||
|
||||
Piecon.setProgress(Math.round(100*data.from/data.totalsize));
|
||||
$("#progressbar").progressbar({ value: 100*data.from/data.totalsize });
|
||||
|
||||
if(data != false && !data.end)
|
||||
{
|
||||
do_import(data.from);
|
||||
}
|
||||
else
|
||||
{
|
||||
Piecon.setProgress(100);
|
||||
$("#progressbar").hide('fast');
|
||||
in_process = false;
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, errorThrown) {
|
||||
alert(errorThrown+'\n'+xhr.responseText);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
{/literal}
|
||||
{/if}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.ui-progressbar-value { background-color:#b4defc; background-image: url(design/images/progress.gif); background-position:left; border-color: #009ae2;}
|
||||
#progressbar{ clear: both; height:29px;}
|
||||
#result{ clear: both; width:100%;}
|
||||
</style>
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>
|
||||
{if $message_error == 'no_permission'}Установите права на запись в папку {$import_files_dir}
|
||||
{elseif $message_error == 'convert_error'}Не получилось сконвертировать файл в кодировку UTF8
|
||||
{elseif $message_error == 'locale_error'}На сервере не установлена локаль {$locale}, импорт может работать некорректно
|
||||
{else}{$message_error}{/if}
|
||||
</span>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error != 'no_permission'}
|
||||
|
||||
{if $filename}
|
||||
<div>
|
||||
<h1>Импорт {$filename|escape}</h1>
|
||||
</div>
|
||||
<div id='progressbar'></div>
|
||||
<ul id='import_result'></ul>
|
||||
{else}
|
||||
|
||||
<h1>Импорт товаров</h1>
|
||||
|
||||
<div class="block">
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<input name="file" class="import_file" type="file" value="" />
|
||||
<input class="button_green" type="submit" name="" value="Загрузить" />
|
||||
<p>
|
||||
(максимальный размер файла — {if $config->max_upload_filesize>1024*1024}{$config->max_upload_filesize/1024/1024|round:'2'} МБ{else}{$config->max_upload_filesize/1024|round:'2'} КБ{/if})
|
||||
</p>
|
||||
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="block block_help">
|
||||
<p>
|
||||
Создайте бекап на случай неудачного импорта.
|
||||
</p>
|
||||
<p>
|
||||
Сохраните таблицу в формате CSV
|
||||
</p>
|
||||
<p>
|
||||
В первой строке таблицы должны быть указаны названия колонок в таком формате:
|
||||
|
||||
<ul>
|
||||
<li><label>Товар</label> название товара</li>
|
||||
<li><label>Категория</label> категория товара</li>
|
||||
<li><label>Бренд</label> бренд товара</li>
|
||||
<li><label>Вариант</label> название варианта</li>
|
||||
<li><label>Цена</label> цена товара</li>
|
||||
<li><label>Старая цена</label> старая цена товара</li>
|
||||
<li><label>Склад</label> количество товара на складе</li>
|
||||
<li><label>Артикул</label> артикул товара</li>
|
||||
<li><label>Видим</label> отображение товара на сайте (0 или 1)</li>
|
||||
<li><label>Рекомендуемый</label> является ли товар рекомендуемым (0 или 1)</li>
|
||||
<li><label>Аннотация</label> краткое описание товара</li>
|
||||
<li><label>Адрес</label> адрес страницы товара</li>
|
||||
<li><label>Описание</label> полное описание товара</li>
|
||||
<li><label>Изображения</label> имена локальных файлов или url изображений в интернете, через запятую</li>
|
||||
<li><label>Заголовок страницы</label> заголовок страницы товара (Meta title)</li>
|
||||
<li><label>Ключевые слова</label> ключевые слова (Meta keywords)</li>
|
||||
<li><label>Описание страницы</label> описание страницы товара (Meta description)</li>
|
||||
</ul>
|
||||
</p>
|
||||
<p>
|
||||
Любое другое название колонки трактуется как название свойства товара
|
||||
</p>
|
||||
<p>
|
||||
<a href='files/import/example.csv'>Скачать пример файла</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/if}
|
||||
|
||||
|
||||
{/if}
|
||||
265
simpla/design/html/index.tpl
Normal file
@@ -0,0 +1,265 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="https://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
|
||||
<META HTTP-EQUIV="Expires" CONTENT="-1">
|
||||
<title>{$meta_title}</title>
|
||||
<link rel="icon" href="design/images/favicon.ico" type="image/x-icon">
|
||||
<link href="design/css/style.css" rel="stylesheet" type="text/css" />
|
||||
<link href="design/css/utils.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script src="design/js/jquery/jquery.js"></script>
|
||||
<script src="design/js/jquery/jquery.form.js"></script>
|
||||
<script src="design/js/jquery/jquery-ui.min.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="design/js/jquery/jquery-ui.css" media="screen" />
|
||||
|
||||
<meta name="viewport" content="width=1024">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<a href='{$config->root_url}' class='admin_bookmark'></a>
|
||||
|
||||
<!-- Вся страница -->
|
||||
<div id="main">
|
||||
<!-- Главное меню -->
|
||||
<ul id="main_menu" class="d-flex">
|
||||
|
||||
{if in_array('products', $manager->permissions)}
|
||||
<li><a href="index.php?module=ProductsAdmin"><img src="design/images/menu/catalog.png"><b>Каталог</b></a></li>
|
||||
{elseif in_array('categories', $manager->permissions)}
|
||||
<li><a href="index.php?module=CategoriesAdmin"><img src="design/images/menu/catalog.png"><b>Каталог</b></a></li>
|
||||
{elseif in_array('brands', $manager->permissions)}
|
||||
<li><a href="index.php?module=BrandsAdmin"><img src="design/images/menu/catalog.png"><b>Каталог</b></a></li>
|
||||
{elseif in_array('features', $manager->permissions)}
|
||||
<li><a href="index.php?module=FeaturesAdmin"><img src="design/images/menu/catalog.png"><b>Каталог</b></a></li>
|
||||
{/if}
|
||||
|
||||
{if in_array('orders', $manager->permissions)}
|
||||
<li><a href="index.php?module=OrdersAdmin"><img src="design/images/menu/orders.png"><b>Заказы</b></a>
|
||||
{if $new_orders_counter}<div class='counter'><span>{$new_orders_counter}</span></div>{/if}
|
||||
{elseif in_array('labels', $manager->permissions)}
|
||||
<li><a href="index.php?module=OrdersLabelsAdmin"><img src="design/images/menu/orders.png"><b>Заказы</b></a>
|
||||
{/if}
|
||||
</li>
|
||||
|
||||
{if in_array('users', $manager->permissions)}
|
||||
<li><a href="index.php?module=UsersAdmin"><img src="design/images/menu/users.png"><b>Покупатели</b></a></li>
|
||||
{elseif in_array('groups', $manager->permissions)}
|
||||
<li><a href="index.php?module=GroupsAdmin"><img src="design/images/menu/users.png"><b>Покупатели</b></a></li>
|
||||
{elseif in_array('coupons', $manager->permissions)}
|
||||
<li><a href="index.php?module=CouponsAdmin"><img src="design/images/menu/users.png"><b>Покупатели</b></a></li>
|
||||
{/if}
|
||||
|
||||
{if in_array('pages', $manager->permissions)}
|
||||
<li><a href="index.php?module=ServicesAdmin"><img src="design/images/menu/wrench.png"><b>Услуги</b></a></li>
|
||||
{/if}
|
||||
|
||||
{if in_array('pages', $manager->permissions)}
|
||||
<li><a href="index.php?module=PagesAdmin"><img src="design/images/menu/pages.png"><b>Страницы</b></a></li>
|
||||
{/if}
|
||||
|
||||
{if in_array('blog', $manager->permissions)}
|
||||
<li><a href="index.php?module=BlogAdmin"><img src="design/images/menu/blog.png"><b>Блог</b></a></li>
|
||||
{/if}
|
||||
|
||||
{if in_array('comments', $manager->permissions)}
|
||||
<li><a href="index.php?module=CommentsAdmin"><img src="design/images/menu/comments.png"><b>Комментарии</b></a>
|
||||
{if $new_comments_counter}<div class='counter'><span>{$new_comments_counter}</span></div>{/if}</li>
|
||||
{elseif in_array('feedbacks', $manager->permissions)}
|
||||
<li><a href="index.php?module=FeedbacksAdmin"><img src="design/images/menu/comments.png"><b>Комментарии</b></a>
|
||||
{/if}
|
||||
|
||||
{if in_array('import', $manager->permissions)}
|
||||
<li><a href="index.php?module=ImportAdmin"><img src="design/images/menu/wizards.png"><b>Автоматизация</b></a></li>
|
||||
{elseif in_array('export', $manager->permissions)}
|
||||
<li><a href="index.php?module=ExportAdmin"><img src="design/images/menu/wizards.png"><b>Автоматизация</b></a></li>
|
||||
{elseif in_array('backup', $manager->permissions)}
|
||||
<li><a href="index.php?module=BackupAdmin"><img src="design/images/menu/wizards.png"><b>Автоматизация</b></a></li>
|
||||
{/if}
|
||||
|
||||
{if in_array('stats', $manager->permissions)}
|
||||
<li><a href="index.php?module=StatsAdmin"><img src="design/images/menu/statistics.png"><b>Статистика</b></a></li>
|
||||
{/if}
|
||||
|
||||
{if in_array('design', $manager->permissions)}
|
||||
<li><a href="index.php?module=ThemeAdmin"><img src="design/images/menu/design.png"><b>Дизайн</b></a></li>
|
||||
{/if}
|
||||
|
||||
{if in_array('settings', $manager->permissions)}
|
||||
<li><a href="index.php?module=SettingsAdmin"><img src="design/images/menu/settings.png"><b>Настройки</b></a></li>
|
||||
{elseif in_array('delivery', $manager->permissions)}
|
||||
<li><a href="index.php?module=DeliveriesAdmin"><img src="design/images/menu/settings.png"><b>Настройки</b></a></li>
|
||||
{elseif in_array('payment', $manager->permissions)}
|
||||
<li><a href="index.php?module=PaymentMethodsAdmin"><img src="design/images/menu/settings.png"><b>Настройки</b></a></li>
|
||||
{elseif in_array('managers', $manager->permissions)}
|
||||
<li><a href="index.php?module=ManagersAdmin"><img src="design/images/menu/settings.png"><b>Настройки</b></a></li>
|
||||
{/if}
|
||||
|
||||
{if in_array('banners', $manager->permissions)}
|
||||
<li><a href="index.php?module=BannersAdmin"><img src="design/images/menu/banners.png"><b>Баннеры</b></a></li>
|
||||
{/if}
|
||||
</ul>
|
||||
<!-- Главное меню (The End)-->
|
||||
|
||||
|
||||
<!-- Таб меню -->
|
||||
<ul id="tab_menu">
|
||||
{$smarty.capture.tabs}
|
||||
</ul>
|
||||
<!-- Таб меню (The End)-->
|
||||
|
||||
|
||||
|
||||
<!-- Основная часть страницы -->
|
||||
<div id="middle">
|
||||
{$content}
|
||||
</div>
|
||||
<!-- Основная часть страницы (The End) -->
|
||||
|
||||
<!-- Подвал сайта -->
|
||||
<div id="footer">
|
||||
© 2013 <a href='https://simplacms.ru'>Simpla {$config->version}</a>
|
||||
{if in_array('license', $manager->permissions)}
|
||||
{if $license->valid}
|
||||
Лицензия действительна {if $license->expiration != '*'}до {$license->expiration}{/if} для домен{$license->domains|count|plural:'а':'ов'} {foreach $license->domains as $d}{$d}{if !$d@last}, {/if}{/foreach}.
|
||||
<a href='index.php?module=LicenseAdmin'>Управление лицензией</a>.
|
||||
{else}
|
||||
Лицензия недействительна. <a href='index.php?module=LicenseAdmin'>Управление лицензией</a>.
|
||||
{/if}
|
||||
{/if}
|
||||
Вы вошли как {$manager->login}.
|
||||
<a href='{$config->root_url}?logout' id="logout">Выход</a>
|
||||
</div>
|
||||
<!-- Подвал сайта (The End)-->
|
||||
|
||||
</div>
|
||||
<!-- Вся страница (The End)-->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
{* Интеграция с ПростымиЗвонками *}
|
||||
{if $settings->pz_server && $settings->pz_phones[$manager->login]}
|
||||
<script src="design/js/prostiezvonki/prostiezvonki.min.js"></script>
|
||||
<script>
|
||||
var pz_type = 'simpla';
|
||||
var pz_password = '{$settings->pz_password}';
|
||||
var pz_server = '{$settings->pz_server}';
|
||||
var pz_phone = '{$settings->pz_phones[$manager->login]}';
|
||||
{literal}
|
||||
function NotificationBar(message)
|
||||
{
|
||||
ttop = $('body').height()-110;
|
||||
var HTMLmessage = "<div class='notification-message' style=' text-align:center; line-height: 40px;'> " + message + " </div>";
|
||||
if ($('#notification-bar').size() == 0)
|
||||
{
|
||||
$('body').prepend("<div id='notification-bar' style='-moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px; display:none; height: 40px; padding: 20px; background-color: #fff; position: fixed; top:"+ttop+"px; right:30px; z-index: 100; color: #000;border: 1px solid #cccccc;'>" + HTMLmessage + "</div>");
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#notification-bar').html(HTMLmessage);
|
||||
}
|
||||
$('#notification-bar').slideDown();
|
||||
}
|
||||
|
||||
$(window).on("blur focus", function (e) {
|
||||
if ($(this).data('prevType') !== e.type) {
|
||||
$(this).data('prevType', e.type);
|
||||
|
||||
switch (e.type) {
|
||||
case 'focus':
|
||||
if (!pz.isConnected()) {
|
||||
pz.connect({
|
||||
client_id: pz_password,
|
||||
client_type: pz_type,
|
||||
host: pz_server
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$(function() {
|
||||
// Простые звонки
|
||||
pz.setUserPhone(pz_phone);
|
||||
pz.connect({
|
||||
client_id: pz_password,
|
||||
client_type: pz_type,
|
||||
host: pz_server
|
||||
});
|
||||
pz.onConnect(function () {
|
||||
$(".ip_call").addClass('phone');
|
||||
});
|
||||
pz.onDisconnect(function () {
|
||||
$(".ip_call").removeClass('phone');
|
||||
});
|
||||
|
||||
$(".ip_call").click( function() {
|
||||
var phone = $(this).attr('data-phone').trim();
|
||||
pz.call(phone);
|
||||
return false;
|
||||
});
|
||||
|
||||
pz.onEvent(function (event) {
|
||||
if (event.isIncoming()) {
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: "ajax/search_orders.php",
|
||||
data: { keyword: event.from, limit:"1"},
|
||||
dataType: 'json'
|
||||
}).success(function(data){
|
||||
if(event.to == pz_phone)
|
||||
if(data.length>0)
|
||||
{
|
||||
NotificationBar('<img src="design/images/phone_sound.png" align=absmiddle> Звонит <a href="index.php?module=OrderAdmin&id='+data[0].id+'">'+data[0].name+'</a>');
|
||||
}
|
||||
else
|
||||
{
|
||||
NotificationBar('<img src="design/images/phone_sound.png" align=absmiddle> Звонок с '+event.from+'. <a href="index.php?module=OrderAdmin&phone='+event.from+'">Создать заказ</a>');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
{/literal}
|
||||
});
|
||||
</script>
|
||||
{/if}
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
if($.browser.opera)
|
||||
$("#logout").hide();
|
||||
|
||||
$("#logout").click( function(event) {
|
||||
event.preventDefault();
|
||||
|
||||
if($.browser.msie)
|
||||
{
|
||||
try{document.execCommand("ClearAuthenticationCache");}
|
||||
catch (exception){}
|
||||
window.location.href='/';
|
||||
}
|
||||
else
|
||||
{
|
||||
$.ajax({
|
||||
url: $(this).attr('href'),
|
||||
username: '',
|
||||
password: '',
|
||||
complete: function () {
|
||||
window.location.href='/';
|
||||
},
|
||||
beforeSend : function(req) {
|
||||
req.setRequestHeader('Authorization', 'Basic');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
{/literal}
|
||||
|
||||
});
|
||||
</script>
|
||||
71
simpla/design/html/license.tpl
Normal file
@@ -0,0 +1,71 @@
|
||||
{capture name=tabs}
|
||||
<li class="active"><a href="index.php?module=LicenseAdmin">Лицензия</a></li>
|
||||
{/capture}
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
|
||||
<div class=block>
|
||||
{if $license->valid}
|
||||
<h2 style='color:green;'>Лицензия действительна {if $license->expiration != '*'}до {$license->expiration}{/if} для домен{$license->domains|count|plural:'а':'ов'} {foreach $license->domains as $d}{$d}{if !$d@last}, {/if}{/foreach}</h2>
|
||||
{else}
|
||||
<h2 style='color:red;'>Лицензия недействительна</h2>
|
||||
{/if}
|
||||
<textarea name=license style='width:420px; height:100px;'>{$config->license|escape}</textarea>
|
||||
</div>
|
||||
<div class=block>
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
<a href='http://simplacms.ru/check?domain={$smarty.server.HTTP_HOST|escape}'>Проверить лицензию</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="column_right">
|
||||
<div class=block>
|
||||
<h2>Лицензионное соглашение</h2>
|
||||
|
||||
<textarea style='width:420px; height:250px;'>Настоящее пользовательское соглашение (далее — Соглашение) является юридическим соглашением между Пользователем системы управления сайтами «Simpla» (далее — Продуктом) и Пикусовым Д. С. (далее — Автором).
|
||||
|
||||
Соглашение относится ко всем распространяемым версиям или модификациям программного Продукта.
|
||||
|
||||
Все положения Соглашения распространяются как на Продукт в целом, так и на его отдельные компоненты, за исключением компонентов, описанных в п.7 данного Соглашения.
|
||||
|
||||
Соглашение вступает в силу непосредственно в момент получения Пользователем копии Продукта посредством электронных средств передачи данных либо на физических носителях.
|
||||
|
||||
Соглашение дает Пользователю право использовать Продукт в рамках одного сайта (интернет-магазина), который работает в пределах одного полного доменного имени на протяжении двух недель с момента вступления в силу Соглашения.
|
||||
|
||||
Автор не несет ответственность за какие-либо убытки и/или ущерб (в том числе, убытки в связи недополученной коммерческой выгодой, прерыванием коммерческой и производственной деятельности, утратой данных), возникающие в связи с использованием или невозможностью использования Продукта, даже если Автор был уведомлен о возможном возникновении таких убытков и/или ущерба.
|
||||
|
||||
Продукт поставляется на условиях «как есть» без предоставления гарантий производительности, покупательной способности, сохранности данных, а также иных явно выраженных или предполагаемых гарантий. Автор не несёт какой-либо ответственности за причинение или возможность причинения вреда Пользователю, его информации или его бизнесу вследствие использования или невозможности использования Продукта.
|
||||
|
||||
Автор не несёт ответственность, связанную с привлечением Пользователя или третьих лиц к административной или уголовной ответственности за использование Продукта в противозаконных целях (включая, но не ограничиваясь, продажей через Интернет магазин объектов, изъятых из оборота или добытых преступным путём, предназначенных для разжигания межрасовой или межнациональной вражды и т.д.).
|
||||
|
||||
Продукт содержит компоненты, на которые не распространяется действие настоящего Соглашения. Эти компоненты предоставляются и распространяются в соответствии с собственными лицензиями. Таковыми компонентами являются:
|
||||
— Визуальный редактор TinyMCE;
|
||||
— Файловый менеджер SMExplorer;
|
||||
— Менеджер изображений SMImage;
|
||||
— Редактор кода Codemirror;
|
||||
— Скрипт просмотра изображений EnlargeIt.
|
||||
|
||||
Пользователь не имеет права продавать, распространять или использовать Продукт без согласия Автора.
|
||||
|
||||
Пользователь имеет право модифицировать Продукт по своему усмотрению. При этом последующее использование Продукта должно осуществляться в соответствии с данным Соглашением и при условии сохранения всех авторских прав.
|
||||
|
||||
Автор оставляет за собой право в любое время изменять условия Соглашения без предварительного уведомления.
|
||||
|
||||
Получение экземпляра Продукта, его использование и/или хранение автоматически означает
|
||||
а) осведомленность Пользователя о содержании Соглашения;
|
||||
б) принятие его положений;
|
||||
в) выполнение условий данного Соглашения.
|
||||
|
||||
Официальный сайт Продукта: simplacms.ru
|
||||
</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
86
simpla/design/html/mailing_methods.tpl
Normal file
@@ -0,0 +1,86 @@
|
||||
{capture name=tabs}
|
||||
{if in_array('currency', $manager->permissions)}<li><a href="index.php?module=CurrencyAdmin">Валюты</a></li>{/if}
|
||||
{if in_array('delivery', $manager->permissions)}<li><a href="index.php?module=DeliveriesAdmin">Доставка</a></li>{/if}
|
||||
{if in_array('payment', $manager->permissions)}<li><a href="index.php?module=PaymentMethodsAdmin">Оплата</a></li>{/if}
|
||||
{if in_array('managers', $manager->permissions)}<li><a href="index.php?module=ManagersAdmin">Менеджеры</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=MailingMethodsAdmin">Рассылка</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Управление Рассылкой' scope=parent}
|
||||
|
||||
{* Подключаем Tiny MCE *}
|
||||
{include file='tinymce_init.tpl'}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1><a{if !$smarty.get.show} class="dash_link"{/if} href="index.php?module=MailingMethodsAdmin">Рассылка</a></h1><h1>|</h1><h1><a{if $smarty.get.show} class="dash_link"{/if} href="index.php?module=MailingMethodsAdmin&show=subscribers">Список подписчиков</a></h1>
|
||||
</div>
|
||||
{literal}
|
||||
<style>.interactive{margin:5px 20px;position:absolute;display:none;}</style>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function () {
|
||||
$('form#mailpost_form').submit(function(){
|
||||
mail_letter = tinyMCE.activeEditor.getContent();
|
||||
mail_header = $("#mailpost_form #mail_header").val();
|
||||
if(mail_letter != '' && mail_header != ''){
|
||||
$('#mail_submit').prop("disabled", true);
|
||||
$('.interactive').css('display', 'none');
|
||||
$('.interactive.loading').css('display', 'inline');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'index.php?module=MailingMethodsAdmin',
|
||||
data: 'session_id='+$("#mailpost_form #session_id").val()+'&header='+mail_header+'&letter='+mail_letter,
|
||||
success: function(data){
|
||||
$('.interactive.loading').css('display', 'none');
|
||||
$('.interactive.complete').css('display', 'inline');
|
||||
$('.interactive.complete').css('display', 'inline');
|
||||
$('#mail_submit').val('Рассылка завершена');
|
||||
}
|
||||
});
|
||||
}
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
<div id="main_div">
|
||||
{if $smarty.get.show}
|
||||
<form id="list_form" method="post" action="index.php?module=MailingMethodsAdmin&show=subscribers">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
<div id="list">
|
||||
{$a=1}{foreach $mailing_email item=email key=id}{$a=$a+1}
|
||||
<div class="row{if $a%2===0} even{/if}">
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="remove[]" value="{$id}" />
|
||||
</div>
|
||||
<div class="name cell">{$email}</div>
|
||||
<div class="icons cell">
|
||||
<a class="delete" title="Удалить" href="index.php?module=MailingMethodsAdmin&show=subscribers&remove={$id}"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label onclick="$('#list input[type=checkbox]').attr('checked', true);" class="dash_link">Выбрать все</label>
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
|
||||
</div>
|
||||
</form>
|
||||
{else}
|
||||
<form id="mailpost_form" method="post" action="index.php?module=MailingMethodsAdmin">
|
||||
<input type="hidden" id="session_id" name="session_id" value="{$smarty.session.id}">
|
||||
<p style="margin-bottom:10px"><label><b>Тема письма:  </b></label><input id="mail_header" type="text" name="header" style="width:50%" /></p>
|
||||
<p><textarea id="mail_letter" name="letter" class="editor_small"></textarea></p>
|
||||
<p style="text-align:center;margin-top:20px;"><input class="button_green" id="mail_submit" type="submit" value="Разослать" style="margin-right: -12px;" /><img title="Выполняется рассылка" class="interactive loading" src="http://belfast.by/images/ajx_loading.gif"><img title="Рассылка завершена" class="interactive complete" src="design/images/accept.png"></p>
|
||||
</form>
|
||||
{/if}
|
||||
</div>
|
||||
142
simpla/design/html/manager.tpl
Normal file
@@ -0,0 +1,142 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('settings', $manager->permissions)}<li><a href="index.php?module=SettingsAdmin">Настройки</a></li>{/if}
|
||||
{if in_array('currency', $manager->permissions)}<li><a href="index.php?module=CurrencyAdmin">Валюты</a></li>{/if}
|
||||
{if in_array('delivery', $manager->permissions)}<li><a href="index.php?module=DeliveriesAdmin">Доставка</a></li>{/if}
|
||||
{if in_array('payment', $manager->permissions)}<li><a href="index.php?module=PaymentMethodsAdmin">Оплата</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=ManagersAdmin">Менеджеры</a></li>
|
||||
{/capture}
|
||||
|
||||
{if $m->login}
|
||||
{$meta_title = $m->login scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новый менеджер' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* On document load *}
|
||||
<script src="design/js/jquery/jquery.js"></script>
|
||||
<script src="design/js/jquery/jquery-ui.min.js"></script>
|
||||
<script>
|
||||
{literal}
|
||||
$(function() {
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('input[type="checkbox"][name*="permissions"]:not(:disabled)').attr('checked', $('input[type="checkbox"][name*="permissions"]:not(:disabled):not(:checked)').length>0);
|
||||
});
|
||||
|
||||
{/literal}{if $m->login}$('#password_input').hide();{/if}{literal}
|
||||
$('#change_password').click(function() {
|
||||
$('#password_input').show();
|
||||
});
|
||||
|
||||
});
|
||||
{/literal}
|
||||
</script>
|
||||
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success=='added'}Менеджер добавлен{elseif $message_success=='updated'}Менеджер обновлен{else}{$message_success|escape}{/if}</span>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>
|
||||
{if $message_error=='login_exists'}Менеджер с таким логином уже существует
|
||||
{elseif $message_error=='empty_login'}Введите логин
|
||||
{elseif $message_error=='not_writable'}Установите права на запись для файла /simpla/.passwd
|
||||
{else}{$message_error|escape}{/if}
|
||||
</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div id="name">
|
||||
Логин:
|
||||
<input class="name" name="login" type="text" value="{$m->login|escape}" maxlength="32"/>
|
||||
<input name="old_login" type="hidden" value="{$m->login|escape}"/>
|
||||
Пароль:
|
||||
{if $m->login}<a class="dash_link"id="change_password">изменить</a>{/if}
|
||||
<input id="password_input" class="name" name="password" type="password" value=""/>
|
||||
</div>
|
||||
|
||||
<!-- Левая колонка -->
|
||||
<div id="column_left">
|
||||
|
||||
<h2>Права доступа: </h2>
|
||||
<div class="block"><label id="check_all" class="dash_link">Выбрать все</label></div>
|
||||
|
||||
<!-- Параметры -->
|
||||
<div class="block">
|
||||
<ul>
|
||||
|
||||
{$perms = [
|
||||
'products' =>'Товары',
|
||||
'categories' =>'Категории',
|
||||
'brands' =>'Бренды',
|
||||
'banners' => 'Банеры',
|
||||
'features' =>'Свойства товаров',
|
||||
'orders' =>'Заказы',
|
||||
'labels' =>'Метки заказов',
|
||||
'users' =>'Покупатели',
|
||||
'groups' =>'Группы покупателей',
|
||||
'coupons' =>'Купоны',
|
||||
'pages' =>'Страницы',
|
||||
'blog' =>'Блог',
|
||||
'comments' =>'Комментарии',
|
||||
'feedbacks' =>'Обратная связь',
|
||||
'import' =>'Импорт',
|
||||
'export' =>'Экспорт',
|
||||
'backup' =>'Бекап',
|
||||
'stats' =>'Статистика',
|
||||
'design' =>'Дизайн',
|
||||
'settings' =>'Настройки',
|
||||
'currency' =>'Валюты',
|
||||
'delivery' =>'Способы доставки',
|
||||
'payment' =>'Способы оплаты',
|
||||
'managers' =>'Менеджеры',
|
||||
'license' =>'Управление лицензией',
|
||||
|
||||
'callbacks' =>'Заказ обратного звонка',
|
||||
|
||||
'articles' => 'Статьи',
|
||||
|
||||
'articles_categories' => 'Категории статей',
|
||||
|
||||
'marka' => 'Марка авто',
|
||||
'model' => 'Модель авто'
|
||||
]}
|
||||
|
||||
{foreach $perms as $p=>$name}
|
||||
<li><label class=property for="{$p}">{$name}</label>
|
||||
<input id="{$p}" name="permissions[]" class="simpla_inp" type="checkbox" value="{$p}"
|
||||
{if $m->permissions && in_array($p, $m->permissions)}checked{/if} {if $m->login==$manager->login}disabled{/if}/></li>
|
||||
{/foreach}
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<!-- Параметры (The End)-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<!-- Левая колонка (The End)-->
|
||||
|
||||
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
116
simpla/design/html/managers.tpl
Normal file
@@ -0,0 +1,116 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('settings', $manager->permissions)}<li><a href="index.php?module=SettingsAdmin">Настройки</a></li>{/if}
|
||||
{if in_array('currency', $manager->permissions)}<li><a href="index.php?module=CurrencyAdmin">Валюты</a></li>{/if}
|
||||
{if in_array('delivery', $manager->permissions)}<li><a href="index.php?module=DeliveriesAdmin">Доставка</a></li>{/if}
|
||||
{if in_array('payment', $manager->permissions)}<li><a href="index.php?module=PaymentMethodsAdmin">Оплата</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=ManagersAdmin">Менеджеры</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Менеджеры' scope=parent}
|
||||
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1>{$managers_count} {$managers_count|plural:'менеджер':'менеджеров':'менеджера'}</h1>
|
||||
<a class="add" href="index.php?module=ManagerAdmin">Добавить менеджера</a>
|
||||
</div>
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>
|
||||
{if $message_error=='not_writable'}Установите права на запись для файла /simpla/.passwd
|
||||
{else}{$message_error|escape}{/if}
|
||||
</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
{if $managers}
|
||||
<!-- Основная часть -->
|
||||
<div id="main_list">
|
||||
<form id="form_list" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list">
|
||||
{foreach $managers as $m}
|
||||
<div class="row">
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$m->login|escape}" {if $manager->login == $m->login}disabled{/if}/>
|
||||
</div>
|
||||
<div class="user_name cell">
|
||||
<a href="index.php?module=ManagerAdmin&login={$m->login|urlencode}">{$m->login|escape}</a>
|
||||
</div>
|
||||
<div class="user_email cell">
|
||||
<a href="mailto:{$user->name|escape}<{$user->email|escape}>">{$user->email|escape}</a>
|
||||
</div>
|
||||
<div class="user_group cell">
|
||||
{$groups[$user->group_id]->name}
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
{if $manager->login != $m->login}
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id=select>
|
||||
<select name="action">
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]:not(:disabled)').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:disabled):not(:checked)').length>0);
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form").submit(function() {
|
||||
if($('#list input[type="checkbox"][name*="check"]:checked').length>0)
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
209
simpla/design/html/marka.tpl
Normal file
@@ -0,0 +1,209 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li><a href="index.php?module=BlogAdmin">Блог</a></li>
|
||||
<li><a href="index.php?module=ArticlesAdmin">Примеры работ</a></li>
|
||||
<li><a href="index.php?module=ArticleCategoriesAdmin">Категории примеров работ</a></li>
|
||||
<li><a href="{url module=ActionsAdmin id=null page=null}">Акции</a></li>
|
||||
<li class="active"><a href="{url module=MarkasAdmin id=null page=null}">Марки и модели</a></li>
|
||||
{/capture}
|
||||
|
||||
{if $brand->id}
|
||||
{$meta_title = $brand->name scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новая марка' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Подключаем Tiny MCE *}
|
||||
{include file='tinymce_init.tpl'}
|
||||
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Удаление изображений
|
||||
$(".images a.delete").click( function() {
|
||||
$("input[name='delete_image']").val('1');
|
||||
$(this).closest("ul").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
// Автозаполнение мета-тегов
|
||||
meta_title_touched = true;
|
||||
meta_keywords_touched = true;
|
||||
meta_description_touched = true;
|
||||
url_touched = true;
|
||||
|
||||
if($('input[name="meta_title"]').val() == generate_meta_title() || $('input[name="meta_title"]').val() == '')
|
||||
meta_title_touched = false;
|
||||
if($('input[name="meta_keywords"]').val() == generate_meta_keywords() || $('input[name="meta_keywords"]').val() == '')
|
||||
meta_keywords_touched = false;
|
||||
if($('textarea[name="meta_description"]').val() == generate_meta_description() || $('textarea[name="meta_description"]').val() == '')
|
||||
meta_description_touched = false;
|
||||
if($('input[name="url"]').val() == generate_url() || $('input[name="url"]').val() == '')
|
||||
url_touched = false;
|
||||
|
||||
$('input[name="meta_title"]').change(function() { meta_title_touched = true; });
|
||||
$('input[name="meta_keywords"]').change(function() { meta_keywords_touched = true; });
|
||||
$('input[textarea="meta_description"]').change(function() { meta_description_touched = true; });
|
||||
$('input[name="url"]').change(function() { url_touched = true; });
|
||||
|
||||
$('input[name="name"]').keyup(function() { set_meta(); });
|
||||
|
||||
function set_meta()
|
||||
{ return;
|
||||
{/literal} {if $brand->id} return; {/if} {literal}
|
||||
if(!meta_title_touched)
|
||||
$('input[name="meta_title"]').val(generate_meta_title());
|
||||
if(!meta_keywords_touched)
|
||||
$('input[name="meta_keywords"]').val(generate_meta_keywords());
|
||||
if(!meta_description_touched)
|
||||
$('textarea[name="meta_description"]').val(generate_meta_description());
|
||||
if(!url_touched)
|
||||
$('input[name="url"]').val(generate_url());
|
||||
}
|
||||
|
||||
function generate_meta_title()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_keywords()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_description()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_url()
|
||||
{
|
||||
{/literal} {if $brand->id} return; {/if} {literal}
|
||||
url = $('input[name="name"]').val();
|
||||
url = url.replace(/[\s]+/gi, '-');
|
||||
url = translit(url);
|
||||
url = url.replace(/[^0-9a-z_\-]+/gi, '').toLowerCase();
|
||||
return url;
|
||||
}
|
||||
|
||||
function translit(str)
|
||||
{
|
||||
var ru=("А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я").split("-")
|
||||
var en=("A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch-'-'-Y-y-'-'-E-e-YU-yu-YA-ya").split("-")
|
||||
var res = '';
|
||||
for(var i=0, l=str.length; i<l; i++)
|
||||
{
|
||||
var s = str.charAt(i), n = ru.indexOf(s);
|
||||
if(n >= 0) { res += en[n]; }
|
||||
else { res += s; }
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
{/literal}
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success=='added'}Марка добавлена{elseif $message_success=='updated'}Марка обновлена{else}{$message_success}{/if}</span>
|
||||
<a class="link" target="_blank" href="../nashi-raboty/{$brand->url}/">Открыть на сайте</a>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error=='url_exists'}Марка с таким адресом уже существует{else}{$message_error}{/if}</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div id="name">
|
||||
<input class="name" name=name type="text" value="{$brand->name|escape}"/>
|
||||
<input name=id type="hidden" value="{$brand->id|escape}"/>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block layer">
|
||||
<h2>Параметры страницы</h2>
|
||||
<ul>
|
||||
<li><label class=property>Адрес</label><div class="page_url"> /nashi-raboty/</div><input name="url" class="page_url" type="text" value="{$brand->url|escape}" /></li>
|
||||
<li><label class=property>Заголовок</label><input name="meta_title" class="simpla_inp" type="text" value="{$brand->meta_title|escape}" /></li>
|
||||
<li><label class=property>Ключевые слова</label><input name="meta_keywords" class="simpla_inp" type="text" value="{$brand->meta_keywords|escape}" /></li>
|
||||
<li><label class=property>Описание</label><textarea name="meta_description" class="simpla_inp" />{$brand->meta_description|escape}</textarea></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
{*
|
||||
<!-- Экспорт-->
|
||||
<div class="block">
|
||||
<h2>Экспорт товара</h2>
|
||||
<ul>
|
||||
<li><input id="exp_yad" type="checkbox" /> <label for="exp_yad">Яндекс Маркет</label> Бид <input class="simpla_inp" type="" name="" value="12" /> руб.</li>
|
||||
<li><input id="exp_goog" type="checkbox" /> <label for="exp_goog">Google Base</label> </li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Свойства товара (The End)-->
|
||||
*}
|
||||
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Правая колонка свойств товара -->
|
||||
<div id="column_right">
|
||||
|
||||
<!-- Изображение категории -->
|
||||
<div class="block layer images">
|
||||
<h2>Изображение</h2>
|
||||
<input class='upload_image' name=image type=file>
|
||||
<input type=hidden name="delete_image" value="">
|
||||
{if $brand->image}
|
||||
<ul>
|
||||
<li>
|
||||
<a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a>
|
||||
<img src="../{$config->marka_images_dir}{$brand->image}" alt="" />
|
||||
</li>
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- Правая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Описагние бренда -->
|
||||
<div class="block layer">
|
||||
<h2>Описание</h2>
|
||||
<textarea name="description" class="editor_large">{$brand->description|escape}</textarea>
|
||||
</div>
|
||||
<!-- Описание бренда (The End)-->
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
|
||||
134
simpla/design/html/markas.tpl
Normal file
@@ -0,0 +1,134 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li><a href="index.php?module=BlogAdmin">Блог</a></li>
|
||||
<li><a href="index.php?module=ArticlesAdmin">Примеры работ</a></li>
|
||||
<li><a href="index.php?module=ArticleCategoriesAdmin">Категории примеров работ</a></li>
|
||||
<li><a href="{url module=ActionsAdmin id=null page=null}">Акции</a></li>
|
||||
<li class="active"><a href="{url module=MarkasAdmin id=null page=null}">Марки и модели</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Марки' scope=parent}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1>Марки</h1>
|
||||
<a class="add" href="{url module=MarkaAdmin return=$smarty.server.REQUEST_URI}">Добавить Марку</a>
|
||||
{*<a style="margin-left:15px" class="add" href="{url module=ModelAdmin return=$smarty.server.REQUEST_URI}">Добавить модель</a>*}
|
||||
</div>
|
||||
|
||||
{if $brands}
|
||||
<div id="main_list" class="brands">
|
||||
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list" class="brands">
|
||||
{foreach $brands as $brand}
|
||||
<div class="row {if !$brand->visible}invisible{/if}">
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$brand->id}" />
|
||||
</div>
|
||||
<div class="cell">
|
||||
<a href="{url module=MarkaAdmin id=$brand->id return=NULL}">{$brand->name|escape}</a>
|
||||
|
||||
|
||||
|
||||
{if $brand->models}
|
||||
<ul class="marka-models">
|
||||
{foreach $brand->models as $model}
|
||||
<li><a href="{url module=ModelAdmin id=$model->id return=NULL}">{$model->name|escape}</a> </li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
|
||||
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href="/simpla/index.php?module=ModelAdmin&marka_id={$brand->id}" class="link-add">Добавить модель</a>
|
||||
<a class="enable" title="Активна" href="#"></a>
|
||||
<a class="preview" title="Предпросмотр в новом окне" href="../nashi-raboty/{$brand->url}/" target="_blank"></a>
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
{else}
|
||||
Нет брендов
|
||||
{/if}
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
|
||||
$("a.enable").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest(".row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = line.hasClass('invisible')?1:0;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'marka', 'id': id, 'values': {'visible': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
line.removeClass('invisible');
|
||||
else
|
||||
line.addClass('invisible');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:checked)').length>0);
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest("div.row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form").submit(function() {
|
||||
if($('#list input[type="checkbox"][name*="check"]:checked').length>0)
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
219
simpla/design/html/model.tpl
Normal file
@@ -0,0 +1,219 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li><a href="index.php?module=BlogAdmin">Блог</a></li>
|
||||
<li><a href="index.php?module=ArticlesAdmin">Примеры работ</a></li>
|
||||
<li><a href="index.php?module=ArticleCategoriesAdmin">Категории примеров работ</a></li>
|
||||
<li><a href="{url module=ActionsAdmin id=null page=null}">Акции</a></li>
|
||||
<li class="active"><a href="{url module=MarkasAdmin id=null page=null}">Марки и модели</a></li>
|
||||
{/capture}
|
||||
|
||||
{if $brand->id}
|
||||
{$meta_title = $brand->name scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новая модель' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Подключаем Tiny MCE *}
|
||||
{include file='tinymce_init.tpl'}
|
||||
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Удаление изображений
|
||||
$(".images a.delete").click( function() {
|
||||
$("input[name='delete_image']").val('1');
|
||||
$(this).closest("ul").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
// Автозаполнение мета-тегов
|
||||
meta_title_touched = true;
|
||||
meta_keywords_touched = true;
|
||||
meta_description_touched = true;
|
||||
url_touched = true;
|
||||
|
||||
if($('input[name="meta_title"]').val() == generate_meta_title() || $('input[name="meta_title"]').val() == '')
|
||||
meta_title_touched = false;
|
||||
if($('input[name="meta_keywords"]').val() == generate_meta_keywords() || $('input[name="meta_keywords"]').val() == '')
|
||||
meta_keywords_touched = false;
|
||||
if($('textarea[name="meta_description"]').val() == generate_meta_description() || $('textarea[name="meta_description"]').val() == '')
|
||||
meta_description_touched = false;
|
||||
if($('input[name="url"]').val() == generate_url() || $('input[name="url"]').val() == '')
|
||||
url_touched = false;
|
||||
|
||||
$('input[name="meta_title"]').change(function() { meta_title_touched = true; });
|
||||
$('input[name="meta_keywords"]').change(function() { meta_keywords_touched = true; });
|
||||
$('input[textarea="meta_description"]').change(function() { meta_description_touched = true; });
|
||||
$('input[name="url"]').change(function() { url_touched = true; });
|
||||
|
||||
$('input[name="name"]').keyup(function() { set_meta(); });
|
||||
|
||||
function set_meta()
|
||||
{ return;
|
||||
{/literal} {if $brand->id} return; {/if} {literal}
|
||||
if(!meta_title_touched)
|
||||
$('input[name="meta_title"]').val(generate_meta_title());
|
||||
if(!meta_keywords_touched)
|
||||
$('input[name="meta_keywords"]').val(generate_meta_keywords());
|
||||
if(!meta_description_touched)
|
||||
$('textarea[name="meta_description"]').val(generate_meta_description());
|
||||
if(!url_touched)
|
||||
$('input[name="url"]').val(generate_url());
|
||||
}
|
||||
|
||||
function generate_meta_title()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_keywords()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_description()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_url()
|
||||
{
|
||||
{/literal} {if $brand->id} return; {/if} {literal}
|
||||
url = $('input[name="name"]').val();
|
||||
url = url.replace(/[\s]+/gi, '-');
|
||||
url = translit(url);
|
||||
url = url.replace(/[^0-9a-z_\-]+/gi, '').toLowerCase();
|
||||
return url;
|
||||
}
|
||||
|
||||
function translit(str)
|
||||
{
|
||||
var ru=("А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я").split("-")
|
||||
var en=("A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch-'-'-Y-y-'-'-E-e-YU-yu-YA-ya").split("-")
|
||||
var res = '';
|
||||
for(var i=0, l=str.length; i<l; i++)
|
||||
{
|
||||
var s = str.charAt(i), n = ru.indexOf(s);
|
||||
if(n >= 0) { res += en[n]; }
|
||||
else { res += s; }
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
{/literal}
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success=='added'}Модель добавлена{elseif $message_success=='updated'}Модель обновлена{else}{$message_success}{/if}</span>
|
||||
<a class="link" target="_blank" href="../nashi-raboty/{$brand->marka->url}/{$brand->url}/">Открыть на сайте</a>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error=='url_exists'}Модель с таким адресом уже существует{else}{$message_error}{/if}</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div id="name">
|
||||
<input class="name" name=name type="text" value="{$brand->name|escape}"/>
|
||||
<input name=id type="hidden" value="{$brand->id|escape}"/>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block layer">
|
||||
<h2>Параметры страницы</h2>
|
||||
<ul>
|
||||
<li><label class=property>Адрес</label><div class="page_url"> /nashi-raboty/</div><input name="url" class="page_url" type="text" value="{$brand->url|escape}" /></li>
|
||||
<li>
|
||||
<label class=property>Марка</label>
|
||||
<select name="marka_id">
|
||||
<option value='0' {if !$brand->marka_id}selected{/if} marka_name=''>Не указан</option>
|
||||
{foreach from=$markas item=marka}
|
||||
<option {if !$marka->visible}style="color:#999"{/if} value='{$marka->id}' {if $brand->marka_id == $marka->id}selected{/if} marka_name='{$marka->name|escape}'>{$marka->name|escape}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
</li>
|
||||
<li><label class=property>Заголовок</label><input name="meta_title" class="simpla_inp" type="text" value="{$brand->meta_title|escape}" /></li>
|
||||
<li><label class=property>Ключевые слова</label><input name="meta_keywords" class="simpla_inp" type="text" value="{$brand->meta_keywords|escape}" /></li>
|
||||
<li><label class=property>Описание</label><textarea name="meta_description" class="simpla_inp" />{$brand->meta_description|escape}</textarea></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
{*
|
||||
<!-- Экспорт-->
|
||||
<div class="block">
|
||||
<h2>Экспорт товара</h2>
|
||||
<ul>
|
||||
<li><input id="exp_yad" type="checkbox" /> <label for="exp_yad">Яндекс Маркет</label> Бид <input class="simpla_inp" type="" name="" value="12" /> руб.</li>
|
||||
<li><input id="exp_goog" type="checkbox" /> <label for="exp_goog">Google Base</label> </li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Свойства товара (The End)-->
|
||||
*}
|
||||
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Правая колонка свойств товара -->
|
||||
<div id="column_right">
|
||||
|
||||
<!-- Изображение категории -->
|
||||
<div class="block layer images">
|
||||
<h2>Изображение</h2>
|
||||
<input class='upload_image' name=image type=file>
|
||||
<input type=hidden name="delete_image" value="">
|
||||
{if $brand->image}
|
||||
<ul>
|
||||
<li>
|
||||
<a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a>
|
||||
<img src="../{$config->model_images_dir}{$brand->image}" alt="" />
|
||||
</li>
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- Правая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Описагние бренда -->
|
||||
<div class="block layer">
|
||||
<h2>Описание</h2>
|
||||
<textarea name="description" class="editor_large">{$brand->description|escape}</textarea>
|
||||
</div>
|
||||
<!-- Описание бренда (The End)-->
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
|
||||
121
simpla/design/html/models.tpl
Normal file
@@ -0,0 +1,121 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li><a href="index.php?module=BlogAdmin">Блог</a></li>
|
||||
<li><a href="index.php?module=ArticlesAdmin">Примеры работ</a></li>
|
||||
<li><a href="index.php?module=ArticleCategoriesAdmin">Категории примеров работ</a></li>
|
||||
<li><a href="{url module=ActionsAdmin id=null page=null}">Акции</a></li>
|
||||
<li ><a href="{url module=MarkasAdmin id=null page=null}">Марки</a></li>
|
||||
<li class="active"><a href="{url module=ModelsAdmin id=null page=null}">Модели</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Модели' scope=parent}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1>Модели</h1>
|
||||
<a class="add" href="{url module=ModelAdmin return=''}">Добавить модель</a>
|
||||
</div>
|
||||
|
||||
{if $brands}
|
||||
<div id="main_list" class="brands">
|
||||
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list" class="brands">
|
||||
{foreach $brands as $brand}
|
||||
<div class="row {if !$brand->visible}invisible{/if}">
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$brand->id}" />
|
||||
</div>
|
||||
<div class="cell">
|
||||
<a href="{url module=ModelAdmin id=$brand->id return=''}">{$brand->marka->name|escape} - {$brand->name|escape}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="enable" title="Активна" href="#"></a>
|
||||
<a class="preview" title="Предпросмотр в новом окне" href="../nashi-raboty/{$brand->marka->url}/{$brand->url}/" target="_blank"></a>
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
{else}
|
||||
Нет моделей
|
||||
{/if}
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
|
||||
$("a.enable").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest(".row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = line.hasClass('invisible')?1:0;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'model', 'id': id, 'values': {'visible': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
line.removeClass('invisible');
|
||||
else
|
||||
line.addClass('invisible');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:checked)').length>0);
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest("div.row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form").submit(function() {
|
||||
if($('#list input[type="checkbox"][name*="check"]:checked').length>0)
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
615
simpla/design/html/order.tpl
Normal file
@@ -0,0 +1,615 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('orders', $manager->permissions)}
|
||||
<li {if $order->status==0}class="active"{/if}><a href="index.php?module=OrdersAdmin&status=0">Новые</a></li>
|
||||
<li {if $order->status==1}class="active"{/if}><a href="index.php?module=OrdersAdmin&status=1">Приняты</a></li>
|
||||
<li {if $order->status==2}class="active"{/if}><a href="index.php?module=OrdersAdmin&status=2">Выполнены</a></li>
|
||||
<li {if $order->status==3}class="active"{/if}><a href="index.php?module=OrdersAdmin&status=3">Удалены</a></li>
|
||||
<li {if $order->status==999}class="active"{/if}><a href="index.php?module=PreordersAdmin&status=999">Потеряны</a></li>
|
||||
{if $keyword}
|
||||
<li class="active"><a href="{url module=OrdersAdmin keyword=$keyword id=null label=null}">Поиск</a></li>
|
||||
{/if}
|
||||
{/if}
|
||||
{if in_array('labels', $manager->permissions)}
|
||||
<li><a href="{url module=OrdersLabelsAdmin keyword=null id=null page=null label=null}">Метки</a></li>
|
||||
{/if}
|
||||
{/capture}
|
||||
|
||||
|
||||
{if $order->id}
|
||||
{$meta_title = "Заказ №`$order->id`" scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новый заказ' scope=parent}
|
||||
{/if}
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=order enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="name">
|
||||
<input name=id type="hidden" value="{$order->id|escape}"/>
|
||||
<h1>{if $order->id}Заказ №{$order->id|escape}{else}Новый заказ{/if}
|
||||
{if $order->status != 999}
|
||||
<select class=status name="status">
|
||||
<option value='0' {if $order->status == 0}selected{/if}>Новый</option>
|
||||
<option value='1' {if $order->status == 1}selected{/if}>Принят</option>
|
||||
<option value='2' {if $order->status == 2}selected{/if}>Выполнен</option>
|
||||
<option value='3' {if $order->status == 3}selected{/if}>Удален</option>
|
||||
</select>
|
||||
{/if}
|
||||
</h1>
|
||||
<a href="{url view=print id=$order->id}" target="_blank"><img src="./design/images/printer.png" name="export" title="Печать заказа"></a>
|
||||
|
||||
|
||||
<div id=next_order>
|
||||
{if $prev_order}
|
||||
<a class=prev_order href="{url id=$prev_order->id}">←</a>
|
||||
{/if}
|
||||
{if $next_order}
|
||||
<a class=next_order href="{url id=$next_order->id}">→</a>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error=='error_closing'}Нехватка товара на складе{else}{$message_error|escape}{/if}</span>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{elseif $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success=='updated'}Заказ обновлен{elseif $message_success=='added'}Заказ добавлен{else}{$message_success}{/if}</span>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
|
||||
<div id="order_details">
|
||||
<h2>Детали заказа <a href='#' class="edit_order_details"><img src='design/images/pencil.png' alt='Редактировать' title='Редактировать'></a></h2>
|
||||
|
||||
<div id="user">
|
||||
<ul class="order_details">
|
||||
<li>
|
||||
<label class=property>Дата</label>
|
||||
<div class="edit_order_detail view_order_detail">
|
||||
{$order->date} {$order->time}
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<label class=property>Имя</label>
|
||||
<div class="edit_order_detail" style='display:none;'>
|
||||
<input name="name" class="simpla_inp" type="text" value="{$order->name|escape}" />
|
||||
</div>
|
||||
<div class="view_order_detail">
|
||||
{$order->name|escape}
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<label class=property>Фамилия</label>
|
||||
<div class="edit_order_detail" style='display:none;'>
|
||||
<input name="name2" class="simpla_inp" type="text" value="{$order->name2|escape}" />
|
||||
</div>
|
||||
<div class="view_order_detail">
|
||||
{$order->name2|escape}
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<label class=property>Email</label>
|
||||
<div class="edit_order_detail" style='display:none;'>
|
||||
<input name="email" class="simpla_inp" type="text" value="{$order->email|escape}" />
|
||||
</div>
|
||||
<div class="view_order_detail">
|
||||
<a href="mailto:{$order->email|escape}?subject=Заказ%20№{$order->id}">{$order->email|escape}</a>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<label class=property>Телефон</label>
|
||||
<div class="edit_order_detail" style='display:none;'>
|
||||
<input name="phone" class="simpla_inp " type="text" value="{$order->phone|escape}" />
|
||||
</div>
|
||||
<div class="view_order_detail">
|
||||
{if $order->phone}
|
||||
<span class="ip_call" data-phone="{$order->phone|escape}" target="_blank">{$order->phone|escape}</span>{else}{$order->phone|escape}{/if}
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<label class=property>Страна</label>
|
||||
<div class="edit_order_detail" style='display:none;'>
|
||||
<input name="country" class="simpla_inp" type="text" value="{$order->country|escape}" />
|
||||
</div>
|
||||
<div class="view_order_detail">
|
||||
{$order->country|escape}
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<label class=property>Регион</label>
|
||||
<div class="edit_order_detail" style='display:none;'>
|
||||
<input name="region" class="simpla_inp" type="text" value="{$order->region|escape}" />
|
||||
</div>
|
||||
<div class="view_order_detail">
|
||||
{$order->region|escape}
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<label class=property>Город</label>
|
||||
<div class="edit_order_detail" style='display:none;'>
|
||||
<input name="city" class="simpla_inp" type="text" value="{$order->city|escape}" />
|
||||
</div>
|
||||
<div class="view_order_detail">
|
||||
{$order->city|escape}
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<label class=property>Индекс</label>
|
||||
<div class="edit_order_detail" style='display:none;'>
|
||||
<input name="indx" class="simpla_inp" type="text" value="{$order->indx|escape}" />
|
||||
</div>
|
||||
<div class="view_order_detail">
|
||||
{$order->indx|escape}
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<label class=property>Адрес <a href='http://maps.yandex.ru/' id=address_link target=_blank><img align=absmiddle src='design/images/map.png' alt='Карта в новом окне' title='Карта в новом окне'></a></label>
|
||||
<div class="edit_order_detail" style='display:none;'>
|
||||
<textarea name="address">{$order->address|escape}</textarea>
|
||||
</div>
|
||||
<div class="view_order_detail">
|
||||
{$order->address|escape}
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<label class=property>Комментарий пользователя</label>
|
||||
<div class="edit_order_detail" style='display:none;'>
|
||||
<textarea name="comment">{$order->comment|escape}</textarea>
|
||||
</div>
|
||||
<div class="view_order_detail">
|
||||
{$order->comment|escape|nl2br}
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
{if $labels}
|
||||
<div class='layer'>
|
||||
<h2>Метка</h2>
|
||||
<!-- Метки -->
|
||||
<ul>
|
||||
{foreach $labels as $l}
|
||||
<li>
|
||||
<label for="label_{$l->id}">
|
||||
<input id="label_{$l->id}" type="checkbox" name="order_labels[]" value="{$l->id}" {if in_array($l->id, $order_labels)}checked{/if}>
|
||||
<span style="background-color:#{$l->color};" class="order_label"></span>
|
||||
{$l->name}
|
||||
</label>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
<!-- Метки -->
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
|
||||
<div class='layer'>
|
||||
<h2>Покупатель <a href='#' class="edit_user"><img src='design/images/pencil.png' alt='Редактировать' title='Редактировать'></a> {if $user}<a href="#" class='delete_user'><img src='design/images/delete.png' alt='Удалить' title='Удалить'></a>{/if}</h2>
|
||||
<div class='view_user'>
|
||||
{if !$user}
|
||||
Не зарегистрирован
|
||||
{else}
|
||||
<a href='index.php?module=UserAdmin&id={$user->id}' target=_blank>{$user->name|escape}</a> ({$user->email|escape})
|
||||
{/if}
|
||||
</div>
|
||||
<div class='edit_user' style='display:none;'>
|
||||
<input type=hidden name=user_id value='{$user->id}'>
|
||||
<input type=text id='user' class="input_autocomplete" placeholder="Выберите пользователя">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class='layer'>
|
||||
<h2>Примечание <a href='#' class="edit_note"><img src='design/images/pencil.png' alt='Редактировать' title='Редактировать'></a></h2>
|
||||
<ul class="order_details">
|
||||
<li>
|
||||
<div class="edit_note" style='display:none;'>
|
||||
<label class=property>Ваше примечание (не видно пользователю)</label>
|
||||
<textarea name="note">{$order->note|escape}</textarea>
|
||||
</div>
|
||||
<div class="view_note" {if !$order->note}style='display:none;'{/if}>
|
||||
<label class=property>Ваше примечание (не видно пользователю)</label>
|
||||
<div class="note_text">{$order->note|escape}</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div id="purchases">
|
||||
|
||||
<div id="list" class="purchases">
|
||||
{foreach from=$purchases item=purchase}
|
||||
<div class="row">
|
||||
<div class="image cell">
|
||||
<input type=hidden name=purchases[id][{$purchase->id}] value='{$purchase->id}'>
|
||||
{$image = $purchase->product->images|first}
|
||||
{if $image}
|
||||
<img class=product_icon src='{$image->filename|resize:35:35}'>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="purchase_name cell">
|
||||
|
||||
<div class='purchase_variant'>
|
||||
<span class=edit_purchase style='display:none;'>
|
||||
<select name=purchases[variant_id][{$purchase->id}] {if $purchase->product->variants|count==1 && $purchase->variant_name == '' && $purchase->variant->sku == ''}style='display:none;'{/if}>
|
||||
{if !$purchase->variant}<option price='{$purchase->price}' amount='{$purchase->amount}' value=''>{$purchase->variant_name|escape} {if $purchase->sku}(арт. {$purchase->sku}){/if}</option>{/if}
|
||||
{foreach $purchase->product->variants as $v}
|
||||
{if $v->stock>0 || $v->id == $purchase->variant->id}
|
||||
<option price='{$v->price}' amount='{$v->stock}' value='{$v->id}' {if $v->id == $purchase->variant_id}selected{/if} >
|
||||
{$v->name}
|
||||
{if $v->sku}(арт. {$v->sku}){/if}
|
||||
</option>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</select>
|
||||
</span>
|
||||
<span class=view_purchase>
|
||||
{$purchase->variant_name} {if $purchase->sku}(арт. {$purchase->sku}){/if}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{if $purchase->product}
|
||||
<a class="related_product_name" href="index.php?module=ProductAdmin&id={$purchase->product->id}&return={$smarty.server.REQUEST_URI|urlencode}">{$purchase->product_name}</a>
|
||||
{else}
|
||||
{$purchase->product_name}
|
||||
{/if}
|
||||
|
||||
<div class="features">
|
||||
{foreach from=$purchase->options item=opt key=ok}
|
||||
{assign var=f value=$features[$ok]}
|
||||
<p>
|
||||
<label>{$f->name} </label>
|
||||
<span>
|
||||
{$opt}
|
||||
</span>
|
||||
</p>
|
||||
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="price cell">
|
||||
<span class=view_purchase>{$purchase->price}</span>
|
||||
<span class=edit_purchase style='display:none;'>
|
||||
<input type=text name=purchases[price][{$purchase->id}] value='{$purchase->price}' size=5>
|
||||
</span>
|
||||
{$currency->sign}
|
||||
</div>
|
||||
<div class="amount cell">
|
||||
<span class=view_purchase>
|
||||
{$purchase->amount} {$settings->units}
|
||||
</span>
|
||||
<span class=edit_purchase style='display:none;'>
|
||||
{if $purchase->variant}
|
||||
{math equation="min(max(x,y),z)" x=$purchase->variant->stock+$purchase->amount*($order->closed) y=$purchase->amount z=$settings->max_order_amount assign="loop"}
|
||||
{else}
|
||||
{math equation="x" x=$purchase->amount assign="loop"}
|
||||
{/if}
|
||||
<select name=purchases[amount][{$purchase->id}]>
|
||||
{section name=amounts start=1 loop=$loop+1 step=1}
|
||||
<option value="{$smarty.section.amounts.index}" {if $purchase->amount==$smarty.section.amounts.index}selected{/if}>{$smarty.section.amounts.index} {$settings->units}</option>
|
||||
{/section}
|
||||
</select>
|
||||
</span>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
{if !$order->closed}
|
||||
{if !$purchase->product}
|
||||
<img src='design/images/error.png' alt='Товар был удалён' title='Товар был удалён' >
|
||||
{elseif !$purchase->variant}
|
||||
<img src='design/images/error.png' alt='Вариант товара был удалён' title='Вариант товара был удалён' >
|
||||
{elseif $purchase->variant->stock < $purchase->amount}
|
||||
<img src='design/images/error.png' alt='На складе остал{$purchase->variant->stock|plural:'ся':'ось'} {$purchase->variant->stock} товар{$purchase->variant->stock|plural:'':'ов':'а'}' title='На складе остал{$purchase->variant->stock|plural:'ся':'ось'} {$purchase->variant->stock} товар{$purchase->variant->stock|plural:'':'ов':'а'}' >
|
||||
{/if}
|
||||
{/if}
|
||||
<a href='#' class="delete" title="Удалить"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
<div id="new_purchase" class="row" style='display:none;'>
|
||||
<div class="image cell">
|
||||
<input type=hidden name=purchases[id][] value=''>
|
||||
<img class=product_icon src=''>
|
||||
</div>
|
||||
<div class="purchase_name cell">
|
||||
<div class='purchase_variant'>
|
||||
<select name=purchases[variant_id][] style='display:none;'></select>
|
||||
</div>
|
||||
<a class="purchase_name" href=""></a>
|
||||
</div>
|
||||
<div class="price cell">
|
||||
<input type=text name=purchases[price][] value='' size=5> {$currency->sign}
|
||||
</div>
|
||||
<div class="amount cell">
|
||||
<select name=purchases[amount][]></select>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete" title="Удалить"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="add_purchase" {if $purchases}style='display:none;'{/if}>
|
||||
<input type=text name=related id='add_purchase' class="input_autocomplete" placeholder='Выберите товар чтобы добавить его'>
|
||||
</div>
|
||||
{if $purchases}
|
||||
<a href='#' class="dash_link edit_purchases">редактировать покупки</a>
|
||||
{/if}
|
||||
|
||||
|
||||
{if $purchases}
|
||||
<div class="subtotal">
|
||||
Всего<b> {$subtotal} {$currency->sign}</b>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div class="block discount layer">
|
||||
<h2>Скидка</h2>
|
||||
<input type=text name=discount value='{$order->discount}'> <span class=currency>%</span>
|
||||
</div>
|
||||
|
||||
<div class="subtotal layer">
|
||||
С учетом скидки<b> {($subtotal-$subtotal*$order->discount/100)|round:2} {$currency->sign}</b>
|
||||
</div>
|
||||
|
||||
<div class="block discount layer">
|
||||
<h2>Купон{if $order->coupon_code} ({$order->coupon_code}){/if}</h2>
|
||||
<input type=text name=coupon_discount value='{$order->coupon_discount}'> <span class=currency>{$currency->sign}</span>
|
||||
</div>
|
||||
|
||||
<div class="subtotal layer">
|
||||
С учетом купона<b> {($subtotal-$subtotal*$order->discount/100-$order->coupon_discount)|round:2} {$currency->sign}</b>
|
||||
</div>
|
||||
|
||||
<div class="block delivery">
|
||||
<h2>Доставка</h2>
|
||||
<select name="delivery_id">
|
||||
<option value="0">Не выбрана</option>
|
||||
{foreach $deliveries as $d}
|
||||
<option value="{$d->id}" {if $d->id==$delivery->id}selected{/if}>{$d->name}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
<input type=text name=delivery_price value='{$order->delivery_price}'> <span class=currency>{$currency->sign}</span>
|
||||
<div class="separate_delivery">
|
||||
<input type=checkbox id="separate_delivery" name=separate_delivery value='1' {if $order->separate_delivery}checked{/if}> <label for="separate_delivery">оплачивается отдельно</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="total layer">
|
||||
Итого<b> {$order->total_price} {$currency->sign}</b>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="block payment">
|
||||
<h2>Оплата</h2>
|
||||
<select name="payment_method_id">
|
||||
<option value="0">Не выбрана</option>
|
||||
{foreach $payment_methods as $pm}
|
||||
<option value="{$pm->id}" {if $pm->id==$payment_method->id}selected{/if}>{$pm->name}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
<input type=checkbox name="paid" id="paid" value="1" {if $order->paid}checked{/if}> <label for="paid" {if $order->paid}class="green"{/if}>Заказ оплачен</label>
|
||||
</div>
|
||||
|
||||
|
||||
{if $payment_method}
|
||||
<div class="subtotal layer">
|
||||
К оплате<b> {$order->total_price|convert:$payment_currency->id} {$payment_currency->sign}</b>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
|
||||
<div class="block_save">
|
||||
<input type="checkbox" value="1" id="notify_user" name="notify_user">
|
||||
<label for="notify_user">Уведомить покупателя о состоянии заказа</label>
|
||||
<br /><textarea style="width: 342px; height: 95px;" name="additional_message"></textarea>
|
||||
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script src="design/js/autocomplete/jquery.autocomplete-min.js"></script>
|
||||
<style>
|
||||
.autocomplete-w1 { background:url(img/shadow.png) no-repeat bottom right; position:absolute; top:0px; left:0px; margin:6px 0 0 6px; /* IE6 fix: */ _background:none; _margin:1px 0 0 0; }
|
||||
.autocomplete { border:1px solid #999; background:#FFF; cursor:default; text-align:left; overflow-x:auto; min-width: 300px; overflow-y: auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; }
|
||||
.autocomplete .selected { background:#F0F0F0; }
|
||||
.autocomplete div { padding:2px 5px; white-space:nowrap; }
|
||||
.autocomplete strong { font-weight:normal; color:#3399FF; }
|
||||
</style>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Удаление товара
|
||||
$(".purchases a.delete").live('click', function() {
|
||||
$(this).closest(".row").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
// Добавление товара
|
||||
var new_purchase = $('.purchases #new_purchase').clone(true);
|
||||
$('.purchases #new_purchase').remove().removeAttr('id');
|
||||
|
||||
$("input#add_purchase").autocomplete({
|
||||
serviceUrl:'ajax/add_order_product.php',
|
||||
minChars:0,
|
||||
noCache: false,
|
||||
onSelect:
|
||||
function(value, data){
|
||||
new_item = new_purchase.clone().appendTo('.purchases');
|
||||
new_item.removeAttr('id');
|
||||
new_item.find('a.purchase_name').html(data.name);
|
||||
new_item.find('a.purchase_name').attr('href', 'index.php?module=ProductAdmin&id='+data.id);
|
||||
|
||||
// Добавляем варианты нового товара
|
||||
var variants_select = new_item.find('select[name*=purchases][name*=variant_id]');
|
||||
for(var i in data.variants)
|
||||
variants_select.append("<option value='"+data.variants[i].id+"' price='"+data.variants[i].price+"' amount='"+data.variants[i].stock+"'>"+data.variants[i].name+"</option>");
|
||||
|
||||
if(data.variants.length>1 || data.variants[0].name != '')
|
||||
variants_select.show();
|
||||
|
||||
variants_select.bind('change', function(){change_variant(variants_select);});
|
||||
change_variant(variants_select);
|
||||
|
||||
if(data.image)
|
||||
new_item.find('img.product_icon').attr("src", data.image);
|
||||
else
|
||||
new_item.find('img.product_icon').remove();
|
||||
|
||||
$("input#add_purchase").val('');
|
||||
new_item.show();
|
||||
},
|
||||
fnFormatResult:
|
||||
function(value, data, currentValue){
|
||||
var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
|
||||
var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
|
||||
return (data.image?"<img align=absmiddle src='"+data.image+"'> ":'') + value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// Изменение цены и макс количества при изменении варианта
|
||||
function change_variant(element)
|
||||
{
|
||||
price = element.find('option:selected').attr('price');
|
||||
amount = element.find('option:selected').attr('amount');
|
||||
element.closest('.row').find('input[name*=purchases][name*=price]').val(price);
|
||||
|
||||
//
|
||||
amount_select = element.closest('.row').find('select[name*=purchases][name*=amount]');
|
||||
selected_amount = amount_select.val();
|
||||
amount_select.html('');
|
||||
for(i=1; i<=amount; i++)
|
||||
amount_select.append("<option value='"+i+"'>"+i+" {/literal}{$settings->units}{literal}</option>");
|
||||
amount_select.val(Math.min(selected_amount, amount));
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// Редактировать покупки
|
||||
$("a.edit_purchases").click( function() {
|
||||
$(".purchases span.view_purchase").hide();
|
||||
$(".purchases span.edit_purchase").show();
|
||||
$(".edit_purchases").hide();
|
||||
$("div#add_purchase").show();
|
||||
return false;
|
||||
});
|
||||
|
||||
// Редактировать получателя
|
||||
$("div#order_details a.edit_order_details").click(function() {
|
||||
$("ul.order_details .view_order_detail").hide();
|
||||
$("ul.order_details .edit_order_detail").show();
|
||||
return false;
|
||||
});
|
||||
|
||||
// Редактировать примечание
|
||||
$("div#order_details a.edit_note").click(function() {
|
||||
$("div.view_note").hide();
|
||||
$("div.edit_note").show();
|
||||
return false;
|
||||
});
|
||||
|
||||
// Редактировать пользователя
|
||||
$("div#order_details a.edit_user").click(function() {
|
||||
$("div.view_user").hide();
|
||||
$("div.edit_user").show();
|
||||
return false;
|
||||
});
|
||||
$("input#user").autocomplete({
|
||||
serviceUrl:'ajax/search_users.php',
|
||||
minChars:0,
|
||||
noCache: false,
|
||||
onSelect:
|
||||
function(value, data){
|
||||
$('input[name="user_id"]').val(data.id);
|
||||
}
|
||||
});
|
||||
|
||||
// Удалить пользователя
|
||||
$("div#order_details a.delete_user").click(function() {
|
||||
$('input[name="user_id"]').val(0);
|
||||
$('div.view_user').hide();
|
||||
$('div.edit_user').hide();
|
||||
return false;
|
||||
});
|
||||
|
||||
// Посмотреть адрес на карте
|
||||
$("a#address_link").attr('href', 'http://maps.yandex.ru/?text='+$('#order_details textarea[name="address"]').val());
|
||||
|
||||
// Подтверждение удаления
|
||||
$('select[name*=purchases][name*=variant_id]').bind('change', function(){change_variant($(this));});
|
||||
$("input[name='status_deleted']").click(function() {
|
||||
if(!confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.ui-autocomplete{
|
||||
background-color: #ffffff; width: 100px; overflow: hidden;
|
||||
border: 1px solid #e0e0e0;
|
||||
padding: 5px;
|
||||
}
|
||||
.ui-autocomplete li.ui-menu-item{
|
||||
overflow: hidden;
|
||||
white-space:nowrap;
|
||||
display: block;
|
||||
}
|
||||
.ui-autocomplete a.ui-corner-all{
|
||||
overflow: hidden;
|
||||
white-space:nowrap;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
{/literal}
|
||||
|
||||
265
simpla/design/html/order_print.tpl
Normal file
@@ -0,0 +1,265 @@
|
||||
<!DOCTYPE html>
|
||||
{*
|
||||
Печать заказа
|
||||
*}
|
||||
{$wrapper='' scope=parent}
|
||||
<html>
|
||||
<head>
|
||||
<base href="{$config->root_url}/"/>
|
||||
<title>Заказ №{$order->id}</title>
|
||||
{* Метатеги *}
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta name="description" content="{$meta_description|escape}" />
|
||||
<style>
|
||||
body {
|
||||
width: 1000px;
|
||||
height: 1414px;
|
||||
/* to centre page on screen*/
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
//border: 1px solid black;
|
||||
|
||||
font-family: Trebuchet MS, times, arial, sans-serif;
|
||||
font-size: 10pt;
|
||||
color: black;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
div#header{
|
||||
margin-left: 50px;
|
||||
margin-top: 50px;
|
||||
height: 150px;
|
||||
width: 500px;
|
||||
float: left;
|
||||
}
|
||||
div#company{
|
||||
margin-right: 50px;
|
||||
margin-top: 50px;
|
||||
height: 150px;
|
||||
width: 400px;
|
||||
float: right;
|
||||
text-align: right;
|
||||
}
|
||||
div#customer{
|
||||
margin-right: 50px;
|
||||
height: 200px;
|
||||
width: 300px;
|
||||
float: right;
|
||||
}
|
||||
div#customer table{
|
||||
margin-bottom: 20px;
|
||||
font-size: 20px;
|
||||
}
|
||||
div#map{
|
||||
margin-left: 50px;
|
||||
height: 400px;
|
||||
width: 500px;
|
||||
float: left;
|
||||
}
|
||||
div#purchases{
|
||||
margin-left: 50px;
|
||||
margin-bottom: 20px;
|
||||
min-height: 600px;
|
||||
width: 100%;
|
||||
float: left;
|
||||
|
||||
}
|
||||
div#purchases table{
|
||||
width: 900px;
|
||||
border-collapse:collapse
|
||||
}
|
||||
div#purchases table th
|
||||
{
|
||||
font-weight: normal;
|
||||
text-align: left;
|
||||
font-size: 25px;
|
||||
}
|
||||
div#purchases td, div#purchases th
|
||||
{
|
||||
font-size: 18px;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
margin: 0;
|
||||
}
|
||||
div#purchases td
|
||||
{
|
||||
border-top: 1px solid black;
|
||||
}
|
||||
|
||||
div#total{
|
||||
float: right;
|
||||
margin-right: 50px;
|
||||
height: 100px;
|
||||
width: 500px;
|
||||
text-align: right;
|
||||
}
|
||||
div#total table{
|
||||
width: 500px;
|
||||
float: right;
|
||||
border-collapse:collapse
|
||||
}
|
||||
div#total th
|
||||
{
|
||||
font-weight: normal;
|
||||
text-align: left;
|
||||
font-size: 22px;
|
||||
border-top: 1px solid black;
|
||||
}
|
||||
div#total td
|
||||
{
|
||||
text-align: right;
|
||||
border-top: 1px solid black;
|
||||
font-size: 18px;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
margin: 0;
|
||||
}
|
||||
div#total .total
|
||||
{
|
||||
font-size: 30px;
|
||||
}
|
||||
h1{
|
||||
margin: 0;
|
||||
font-weight: normal;
|
||||
font-size: 40px;
|
||||
}
|
||||
h2{
|
||||
margin: 0;
|
||||
font-weight: normal;
|
||||
font-size: 24px;
|
||||
}
|
||||
p
|
||||
{
|
||||
margin: 0;
|
||||
font-size: 20px;
|
||||
}
|
||||
div#purchases td.align_right, div#purchases th.align_right
|
||||
{
|
||||
text-align: right;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body _onload="window.print();">
|
||||
|
||||
<div id="header">
|
||||
<h1>Заказ №{$order->id}</h1>
|
||||
<p>от {$order->date|date}</p>
|
||||
</div>
|
||||
|
||||
<div id="company">
|
||||
<h2>{$settings->site_name}</h2>
|
||||
<p>{$config->root_url}</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="customer">
|
||||
<h2>Получатель</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<td>{$order->name|escape} {$order->name2|escape}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$order->phone|escape}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$order->email|escape}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{$order->country|escape}, {$order->region|escape}, {$order->city|escape}, {$order->address|escape}, {$order->index|escape}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><i>{$order->comment|escape|nl2br}</i></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
{*
|
||||
{if $order->note}
|
||||
<table>
|
||||
<tr>
|
||||
<td><h2><i>Примечание менеджера</i></h2><i>{$order->note|escape|nl2br}</i></td>
|
||||
</tr>
|
||||
</table>
|
||||
{/if}
|
||||
*}
|
||||
</div>
|
||||
|
||||
<div id="map">
|
||||
<iframe width="550" height="370" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?ie=UTF8&iwloc=near&hl=ru&t=m&z=16&mrt=loc&geocode=&q={$order->address|escape|urlencode}&output=embed"></iframe>
|
||||
</div>
|
||||
|
||||
<div id="purchases">
|
||||
<table>
|
||||
<tr>
|
||||
<th>Товар</th>
|
||||
<th class="align_right">Цена</th>
|
||||
<th class="align_right">Количество</th>
|
||||
<th class="align_right">Всего</th>
|
||||
</tr>
|
||||
{foreach from=$purchases item=purchase}
|
||||
<tr>
|
||||
<td>
|
||||
<span class=view_purchase>
|
||||
{$purchase->product_name} {$purchase->variant_name} {if $purchase->sku} (артикул {$purchase->sku}){/if}
|
||||
</span>
|
||||
</td>
|
||||
<td class="align_right">
|
||||
<span class=view_purchase>{$purchase->price}</span> {$currency->sign}
|
||||
</td>
|
||||
<td class="align_right">
|
||||
<span class=view_purchase>
|
||||
{$purchase->amount} {$settings->units}
|
||||
</span>
|
||||
</td>
|
||||
<td class="align_right">
|
||||
<span class=view_purchase>{$purchase->price*$purchase->amount}</span> {$currency->sign}
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
{* Если стоимость доставки входит в сумму заказа *}
|
||||
{if $order->delivery_price>0}
|
||||
<tr>
|
||||
<td colspan=3>{$delivery->name|escape}{if $order->separate_delivery} (оплачивается отдельно){/if}</td>
|
||||
<td class="align_right">{$order->delivery_price|convert} {$currency->sign}</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="total">
|
||||
<table>
|
||||
{if $order->discount>0}
|
||||
<tr>
|
||||
<th>Скидка</th>
|
||||
<td>{$order->discount} %</td>
|
||||
</tr>
|
||||
{/if}
|
||||
{if $order->coupon_discount>0}
|
||||
<tr>
|
||||
<th>Купон{if $order->coupon_code} ({$order->coupon_code}){/if}</th>
|
||||
<td>{$order->coupon_discount} {$currency->sign}</td>
|
||||
</tr>
|
||||
{/if}
|
||||
<tr>
|
||||
<th>Итого</th>
|
||||
<td class="total">{$order->total_price} {$currency->sign}</td>
|
||||
</tr>
|
||||
{if $payment_method}
|
||||
<tr>
|
||||
<td colspan="2">Способ оплаты: {$payment_method->name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>К оплате</th>
|
||||
<td class="total">{$order->total_price|convert:$payment_method->currency_id} {$payment_currency->sign}</td>
|
||||
</tr>
|
||||
{/if}
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
211
simpla/design/html/orders.tpl
Normal file
@@ -0,0 +1,211 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('orders', $manager->permissions)}
|
||||
<li {if $status===0}class="active"{/if}><a href="{url module=OrdersAdmin status=0 keyword=null id=null page=null label=null}">Новые</a></li>
|
||||
<li {if $status==1}class="active"{/if}><a href="{url module=OrdersAdmin status=1 keyword=null id=null page=null label=null}">Приняты</a></li>
|
||||
<li {if $status==2}class="active"{/if}><a href="{url module=OrdersAdmin status=2 keyword=null id=null page=null label=null}">Выполнены</a></li>
|
||||
<li {if $status==3}class="active"{/if}><a href="{url module=OrdersAdmin status=3 keyword=null id=null page=null label=null}">Удалены</a></li>
|
||||
<li {if $status==999}class="active"{/if}><a href="{url module=PreordersAdmin status=999 keyword=null id=null page=null label=null}">Потеряны</a></li>
|
||||
{if $keyword}
|
||||
<li class="active"><a href="{url module=OrdersAdmin keyword=$keyword id=null label=null}">Поиск</a></li>
|
||||
{/if}
|
||||
{/if}
|
||||
{if in_array('labels', $manager->permissions)}
|
||||
<li><a href="{url module=OrdersLabelsAdmin keyword=null id=null page=null label=null}">Метки</a></li>
|
||||
{/if}
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Заказы' scope=parent}
|
||||
|
||||
{* Поиск *}
|
||||
<form method="get">
|
||||
<div id="search">
|
||||
<input type="hidden" name="module" value="OrdersAdmin">
|
||||
<input class="search" type="text" name="keyword" value="{$keyword|escape}"/>
|
||||
<input class="search_button" type="submit" value=""/>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1>{if $orders_count}{$orders_count}{else}Нет{/if} заказ{$orders_count|plural:'':'ов':'а'}</h1>
|
||||
<a class="add" href="{url module=OrderAdmin}">Добавить заказ</a>
|
||||
</div>
|
||||
|
||||
{if $orders}
|
||||
<div id="main_list">
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
<form id="form_list" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list">
|
||||
{foreach $orders as $order}
|
||||
<div class="{if $order->paid}green{/if} row">
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$order->id}"/>
|
||||
</div>
|
||||
<div class="order_date cell">
|
||||
{$order->date|date} в {$order->date|time}
|
||||
</div>
|
||||
<div class="order_name cell">
|
||||
{foreach $order->labels as $l}
|
||||
<span class="order_label" style="background-color:#{$l->color};" title="{$l->name}"></span>
|
||||
{/foreach}
|
||||
{if $status != 999}
|
||||
<a href="{url module=OrderAdmin id=$order->id return=$smarty.server.REQUEST_URI}">Заказ №{$order->id}</a> {$order->name|escape}
|
||||
{else}
|
||||
<a href="{url module=PreorderAdmin id=$order->id return=$smarty.server.REQUEST_URI}">Заказ №{$order->id}</a> {$order->name|escape}
|
||||
{/if}
|
||||
|
||||
{if $order->note}
|
||||
<div class="note">{$order->note|escape}</div>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='{url module=OrderAdmin id=$order->id view=print}' target="_blank" class="print" title="Печать заказа"></a>
|
||||
<a href='#' class=delete title="Удалить"></a>
|
||||
</div>
|
||||
<div class="name cell" style='white-space:nowrap;'>
|
||||
{$order->total_price|escape} {$currency->sign}
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
{if $order->paid}
|
||||
<img src='design/images/cash_stack.png' alt='Оплачен' title='Оплачен'>
|
||||
{else}
|
||||
<img src='design/images/cash_stack_gray.png' alt='Не оплачен' title='Не оплачен'>
|
||||
{/if}
|
||||
</div>
|
||||
{if $keyword}
|
||||
<div class="icons cell">
|
||||
{if $order->status == 0}
|
||||
<img src='design/images/new.png' alt='Новый' title='Новый'>
|
||||
{/if}
|
||||
{if $order->status == 1}
|
||||
<img src='design/images/time.png' alt='Принят' title='Принят'>
|
||||
{/if}
|
||||
{if $order->status == 2}
|
||||
<img src='design/images/tick.png' alt='Выполнен' title='Выполнен'>
|
||||
{/if}
|
||||
{if $order->status == 3}
|
||||
<img src='design/images/cross.png' alt='Удалён' title='Удалён'>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id='check_all' class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
{foreach $labels as $l}
|
||||
<option value="set_label_{$l->id}">Отметить «{$l->name}»</option>
|
||||
{/foreach}
|
||||
{foreach $labels as $l}
|
||||
<option value="unset_label_{$l->id}">Снять «{$l->name}»</option>
|
||||
{/foreach}
|
||||
<option value="delete">Удалить выбранные заказы</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<!-- Меню -->
|
||||
<div id="right_menu">
|
||||
|
||||
{if $labels}
|
||||
<!-- Метки -->
|
||||
<ul id="labels">
|
||||
<li {if !$label}class="selected"{/if}><span class="label"></span> <a href="{url label=null}">Все заказы</a></li>
|
||||
{foreach $labels as $l}
|
||||
<li data-label-id="{$l->id}" {if $label->id==$l->id}class="selected"{/if}>
|
||||
<span style="background-color:#{$l->color};" class="order_label"></span>
|
||||
<a href="{url label=$l->id}">{$l->name}</a></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
<!-- Метки -->
|
||||
{/if}
|
||||
|
||||
</div>
|
||||
<!-- Меню (The End) -->
|
||||
|
||||
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script>
|
||||
|
||||
$(function() {
|
||||
|
||||
// Сортировка списка
|
||||
$("#labels").sortable({
|
||||
items: "li",
|
||||
tolerance: "pointer",
|
||||
scrollSensitivity: 40,
|
||||
opacity: 0.7
|
||||
});
|
||||
|
||||
|
||||
$("#main_list #list .row").droppable({
|
||||
activeClass: "drop_active",
|
||||
hoverClass: "drop_hover",
|
||||
tolerance: "pointer",
|
||||
drop: function(event, ui){
|
||||
label_id = $(ui.helper).attr('data-label-id');
|
||||
$(this).find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=set_label_'+label_id+']').attr("selected", "selected");
|
||||
$(this).closest("form").submit();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:checked)').length>0);
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form").submit(function() {
|
||||
if($('#list input[type="checkbox"][name*="check"]:checked').length>0)
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
82
simpla/design/html/orders_label.tpl
Normal file
@@ -0,0 +1,82 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('orders', $manager->permissions)}
|
||||
<li {if $status===0}class="active"{/if}><a href="{url module=OrdersAdmin status=0 keyword=null id=null page=null label=null}">Новые</a></li>
|
||||
<li {if $status==1}class="active"{/if}><a href="{url module=OrdersAdmin status=1 keyword=null id=null page=null label=null}">Приняты</a></li>
|
||||
<li {if $status==2}class="active"{/if}><a href="{url module=OrdersAdmin status=2 keyword=null id=null page=null label=null}">Выполнены</a></li>
|
||||
<li {if $status==3}class="active"{/if}><a href="{url module=OrdersAdmin status=3 keyword=null id=null page=null label=null}">Удалены</a></li>
|
||||
{if $keyword}
|
||||
<li class="active"><a href="{url module=OrdersAdmin keyword=$keyword id=null label=null}">Поиск</a></li>
|
||||
{/if}
|
||||
{/if}
|
||||
<li class="active"><a href="{url module=OrdersLabelsAdmin keyword=null id=null page=null label=null}">Метки</a></li>
|
||||
{/capture}
|
||||
|
||||
{if $label->id}
|
||||
{$meta_title = $label->name scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новая метка' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Подключаем Tiny MCE *}
|
||||
{include file='tinymce_init.tpl'}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<link rel="stylesheet" media="screen" type="text/css" href="design/js/colorpicker/css/colorpicker.css" />
|
||||
<script type="text/javascript" src="design/js/colorpicker/js/colorpicker.js"></script>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
$('#color_icon, #color_link').ColorPicker({
|
||||
color: $('#color_input').val(),
|
||||
onShow: function (colpkr) {
|
||||
$(colpkr).fadeIn(500);
|
||||
return false;
|
||||
},
|
||||
onHide: function (colpkr) {
|
||||
$(colpkr).fadeOut(500);
|
||||
return false;
|
||||
},
|
||||
onChange: function (hsb, hex, rgb) {
|
||||
$('#color_icon').css('backgroundColor', '#' + hex);
|
||||
$('#color_input').val(hex);
|
||||
$('#color_input').ColorPickerHide();
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
{/literal}
|
||||
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success == 'added'}Метка добавлена{elseif $message_success == 'updated'}Метка обновлена{/if}</span>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div id="name">
|
||||
<input class="name" name="name" type="text" value="{$label->name|escape}"/>
|
||||
<input name=id type="hidden" value="{$label->id|escape}"/>
|
||||
<div class="checkbox">
|
||||
<span id="color_icon" style="background-color:#{$label->color};" class="order_label_big"></span>
|
||||
<input id="color_input" name="color" class="simpla_inp" type="hidden" value="{$label->color|escape}" />
|
||||
</div>
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
|
||||
152
simpla/design/html/orders_labels.tpl
Normal file
@@ -0,0 +1,152 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('orders', $manager->permissions)}
|
||||
<li {if $status===0}class="active"{/if}><a href="{url module=OrdersAdmin status=0 keyword=null id=null page=null label=null}">Новые</a></li>
|
||||
<li {if $status==1}class="active"{/if}><a href="{url module=OrdersAdmin status=1 keyword=null id=null page=null label=null}">Приняты</a></li>
|
||||
<li {if $status==2}class="active"{/if}><a href="{url module=OrdersAdmin status=2 keyword=null id=null page=null label=null}">Выполнены</a></li>
|
||||
<li {if $status==3}class="active"{/if}><a href="{url module=OrdersAdmin status=3 keyword=null id=null page=null label=null}">Удалены</a></li>
|
||||
{if $keyword}
|
||||
<li class="active"><a href="{url module=OrdersAdmin keyword=$keyword id=null label=null}">Поиск</a></li>
|
||||
{/if}
|
||||
{/if}
|
||||
<li class="active"><a href="{url module=OrdersLabelsAdmin keyword=null id=null page=null label=null}">Метки</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Метки заказов' scope=parent}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1>{if $labels}Метки заказов{else}Нет меток{/if}</h1>
|
||||
<a class="add" href="{url module=OrdersLabelAdmin}">Новая метка</a>
|
||||
</div>
|
||||
|
||||
{if $labels}
|
||||
<div id="main_list">
|
||||
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
<div id="list">
|
||||
{foreach $labels as $label}
|
||||
<div class="row">
|
||||
<input type="hidden" name="positions[{$label->id}]" value="{$label->position}">
|
||||
<div class="move cell"><div class="move_zone"></div></div>
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$label->id}" />
|
||||
</div>
|
||||
<div class="name cell">
|
||||
<span style="background-color:#{$label->color};" class="order_label"></span>
|
||||
<a href="{url module=OrdersLabelAdmin id=$label->id return=$smarty.server.REQUEST_URI}">{$label->name|escape}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{else}
|
||||
Нет меток
|
||||
{/if}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Сортировка списка
|
||||
$("#list").sortable({
|
||||
items: ".row",
|
||||
tolerance: "pointer",
|
||||
handle: ".move_zone",
|
||||
scrollSensitivity: 40,
|
||||
opacity: 0.7,
|
||||
forcePlaceholderSize: true,
|
||||
axis: 'y',
|
||||
|
||||
helper: function(event, ui){
|
||||
if($('input[type="checkbox"][name*="check"]:checked').size()<1) return ui;
|
||||
var helper = $('<div/>');
|
||||
$('input[type="checkbox"][name*="check"]:checked').each(function(){
|
||||
var item = $(this).closest('.row');
|
||||
helper.height(helper.height()+item.innerHeight());
|
||||
if(item[0]!=ui[0]) {
|
||||
helper.append(item.clone());
|
||||
$(this).closest('.row').remove();
|
||||
}
|
||||
else {
|
||||
helper.append(ui.clone());
|
||||
item.find('input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
}
|
||||
});
|
||||
return helper;
|
||||
},
|
||||
start: function(event, ui) {
|
||||
if(ui.helper.children('.row').size()>0)
|
||||
$('.ui-sortable-placeholder').height(ui.helper.height());
|
||||
},
|
||||
beforeStop:function(event, ui){
|
||||
if(ui.helper.children('.row').size()>0){
|
||||
ui.helper.children('.row').each(function(){
|
||||
$(this).insertBefore(ui.item);
|
||||
});
|
||||
ui.item.remove();
|
||||
}
|
||||
},
|
||||
update:function(event, ui)
|
||||
{
|
||||
$("#list_form input[name*='check']").attr('checked', false);
|
||||
$("#list_form").ajaxSubmit(function() {
|
||||
colorize();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$(".row:even").addClass('even');
|
||||
$(".row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:checked)').length>0);
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list_form input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form").submit(function() {
|
||||
if($('#list input[type="checkbox"][name*="check"]:checked').length>0)
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
495
simpla/design/html/page.tpl
Normal file
@@ -0,0 +1,495 @@
|
||||
{capture name=tabs}
|
||||
{if in_array('pages', $manager->permissions)}
|
||||
{foreach from=$menus item=m}
|
||||
{if $m->id != 3}
|
||||
<li {if $m->id == $menu->id}class="active"{/if}><a href='index.php?module=PagesAdmin&menu_id={$m->id}'>{$m->name}</a></li>
|
||||
{/if}
|
||||
{/foreach}
|
||||
{/if}
|
||||
{/capture}
|
||||
|
||||
{if $page->id}
|
||||
{$meta_title = $page->name scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новая страница' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Подключаем Tiny MCE *}
|
||||
{include file='tinymce_init.tpl'}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script src="design/js/jquery/datepicker/jquery.ui.datepicker-ru.js"></script>
|
||||
<script src="design/js/autocomplete/jquery.autocomplete-min.js"></script>
|
||||
<style>
|
||||
.autocomplete-w1 {position:absolute; top:0px; left:0px; margin:6px 0 0 6px; /* IE6 fix: */ _background:none; _margin:1px 0 0 0; }
|
||||
.autocomplete { border:1px solid #999; background:#FFF; cursor:default; text-align:left; overflow-x:auto; min-width: 300px; overflow-y: auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; }
|
||||
.autocomplete .selected { background:#F0F0F0; }
|
||||
.autocomplete div { padding:2px 5px; white-space:nowrap; }
|
||||
.autocomplete strong { font-weight:normal; color:#3399FF; }
|
||||
</style>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Удаление связанного товара
|
||||
$(".related_products a.delete").live('click', function() {
|
||||
$(this).closest("div.row").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
// Добавление связанного товара
|
||||
var new_related_product = $('#new_related_product').clone(true);
|
||||
$('#new_related_product').remove().removeAttr('id');
|
||||
|
||||
$("input#related_products").autocomplete({
|
||||
serviceUrl:'ajax/search_products.php',
|
||||
minChars:0,
|
||||
noCache: false,
|
||||
onSelect:
|
||||
function(value, data){
|
||||
new_item = new_related_product.clone().appendTo('.related_products');
|
||||
new_item.removeAttr('id');
|
||||
new_item.find('a.related_product_name').html(data.name);
|
||||
new_item.find('a.related_product_name').attr('href', 'index.php?module=ProductAdmin&id='+data.id);
|
||||
new_item.find('input[name*="related_products"]').val(data.id);
|
||||
$("#related_products").val('');
|
||||
new_item.show();
|
||||
},
|
||||
fnFormatResult:
|
||||
function(value, data, currentValue){
|
||||
var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
|
||||
var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
|
||||
return value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// Удаление связанноq статьи
|
||||
$(".related_pages a.delete").live('click', function() {
|
||||
$(this).closest("div.row").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
// Добавление связанной статьи
|
||||
var new_related_page = $('#new_related_page').clone(true);
|
||||
$('#new_related_page').remove().removeAttr('id');
|
||||
|
||||
$("input#related_pages").autocomplete({
|
||||
serviceUrl:'ajax/search_pages.php',
|
||||
minChars:0,
|
||||
noCache: false,
|
||||
onSelect:
|
||||
function(value, data){
|
||||
new_item = new_related_page.clone().appendTo('.related_pages');
|
||||
new_item.removeAttr('id');
|
||||
new_item.find('a.related_page_name').html(data.name);
|
||||
new_item.find('a.related_page_name').attr('href', 'index.php?module=pageAdmin&id='+data.id);
|
||||
new_item.find('input[name*="related_pages"]').val(data.id);
|
||||
$("#related_pages").val('');
|
||||
new_item.show();
|
||||
},
|
||||
fnFormatResult:
|
||||
function(value, data, currentValue){
|
||||
var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
|
||||
var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
|
||||
return value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// Удаление связанноq статьи
|
||||
$(".related_articles a.delete").live('click', function() {
|
||||
$(this).closest("div.row").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
// Добавление связанной статьи
|
||||
var new_related_article = $('#new_related_article').clone(true);
|
||||
$('#new_related_article').remove().removeAttr('id');
|
||||
|
||||
$("input#related_articles").autocomplete({
|
||||
serviceUrl:'ajax/search_articles.php',
|
||||
minChars:0,
|
||||
noCache: false,
|
||||
onSelect:
|
||||
function(value, data){
|
||||
new_item = new_related_article.clone().appendTo('.related_articles');
|
||||
new_item.removeAttr('id');
|
||||
new_item.find('a.related_article_name').html(data.name);
|
||||
new_item.find('a.related_article_name').attr('href', 'index.php?module=articleAdmin&id='+data.id);
|
||||
new_item.find('input[name*="related_articles"]').val(data.id);
|
||||
$("#related_articles").val('');
|
||||
new_item.show();
|
||||
},
|
||||
fnFormatResult:
|
||||
function(value, data, currentValue){
|
||||
var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
|
||||
var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
|
||||
return value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
$(".images a.delete").click( function() {
|
||||
$("input[name='delete_image']").val('1');
|
||||
$(this).closest("ul").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
// Автозаполнение мета-тегов
|
||||
menu_item_name_touched = true;
|
||||
meta_title_touched = true;
|
||||
meta_keywords_touched = true;
|
||||
meta_description_touched = true;
|
||||
url_touched = true;
|
||||
|
||||
if($('input[name="menu_item_name"]').val() == generate_menu_item_name() || $('input[name="name"]').val() == '')
|
||||
menu_item_name_touched = false;
|
||||
if($('input[name="meta_title"]').val() == generate_meta_title() || $('input[name="meta_title"]').val() == '')
|
||||
meta_title_touched = false;
|
||||
if($('input[name="meta_keywords"]').val() == generate_meta_keywords() || $('input[name="meta_keywords"]').val() == '')
|
||||
meta_keywords_touched = false;
|
||||
if($('textarea[name="meta_description"]').val() == generate_meta_description() || $('textarea[name="meta_description"]').val() == '')
|
||||
meta_description_touched = false;
|
||||
if($('input[name="url"]').val() == generate_url())
|
||||
url_touched = false;
|
||||
$('input[name="name"]').change(function() { menu_item_name_touched = true; });
|
||||
$('input[name="meta_title"]').change(function() { meta_title_touched = true; });
|
||||
$('input[name="meta_keywords"]').change(function() { meta_keywords_touched = true; });
|
||||
$('textarea[name="meta_description"]').change(function() { meta_description_touched = true; });
|
||||
$('input[name="url"]').change(function() { url_touched = true; });
|
||||
if($('input[name="name"]').val() == ''){
|
||||
$('input[name="header"]').keyup(function() {
|
||||
set_meta();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
function set_meta()
|
||||
{
|
||||
/* MODIFICATION /15.04.2016/ coder:SP отключено автозаполнение титла и кейворда */
|
||||
|
||||
if(!menu_item_name_touched)
|
||||
$('input[name="name"]').val(generate_menu_item_name());
|
||||
if(!meta_title_touched)
|
||||
/* $('input[name="meta_title"]').val(generate_meta_title());*/
|
||||
if(!meta_keywords_touched)
|
||||
/* $('input[name="meta_keywords"]').val(generate_meta_keywords()); */
|
||||
if(!meta_description_touched)
|
||||
{
|
||||
descr = $('textarea[name="meta_description"]');
|
||||
descr.val(generate_meta_description());
|
||||
descr.scrollTop(descr.outerHeight());
|
||||
}
|
||||
if(!url_touched)
|
||||
$('input[name="url"]').val(generate_url());
|
||||
}
|
||||
|
||||
function generate_menu_item_name()
|
||||
{
|
||||
name = $('input[name="header"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_title()
|
||||
{
|
||||
name = $('input[name="header"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_keywords()
|
||||
{
|
||||
name = $('input[name="header"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_description()
|
||||
{
|
||||
/* if(typeof(tinyMCE.get("body")) =='object')
|
||||
{
|
||||
description = tinyMCE.get("body").getContent().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
|
||||
return description;
|
||||
}
|
||||
else
|
||||
return $('textarea[name=body]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
|
||||
*/
|
||||
}
|
||||
|
||||
function generate_url()
|
||||
{
|
||||
url = $('input[name="header"]').val();
|
||||
url = url.replace(/[\s]+/gi, '-');
|
||||
url = translit(url);
|
||||
url = url.replace(/[^0-9a-z_\-]+/gi, '').toLowerCase();
|
||||
return url;
|
||||
}
|
||||
|
||||
function translit(str)
|
||||
{
|
||||
var ru=("А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я").split("-")
|
||||
var en=("A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch-'-'-Y-y-'-'-E-e-YU-yu-YA-ya").split("-")
|
||||
var res = '';
|
||||
for(var i=0, l=str.length; i<l; i++)
|
||||
{
|
||||
var s = str.charAt(i), n = ru.indexOf(s);
|
||||
if(n >= 0) { res += en[n]; }
|
||||
else { res += s; }
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
{/literal}
|
||||
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success == 'added'}Страница добавлена{elseif $message_success == 'updated'}Страница обновлена{/if}</span>
|
||||
<a class="link" target="_blank" href="../{$page->url}">Открыть страницу на сайте</a>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error == 'url_exists'}Страница с таким адресом уже существует{/if}</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div id="name">
|
||||
<input class="name" name=header type="text" value="{$page->header|escape}"/>
|
||||
<input name=id type="hidden" value="{$page->id|escape}"/>
|
||||
<div class="checkbox">
|
||||
<input name="visible" value='1' type="checkbox" id="active_checkbox" {if $page->visible}checked{/if}/> <label for="active_checkbox">Активна</label>
|
||||
</div>
|
||||
{if $page->menu_id == 3}
|
||||
<div class="checkbox">
|
||||
<input name="show_home" value='1' type="checkbox" id="home_checkbox" {if $page->show_home}checked{/if}/> <label for="home_checkbox">На главной</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<input name="show_service" value='1' type="checkbox" id="home_checkbox" {if $page->show_service}checked{/if}/> <label for="home_checkbox">В услугах</label>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block">
|
||||
<ul>
|
||||
<li><label class=property>Название пункта в меню</label><input name="name" class="simpla_inp" type="text" value="{$page->name|escape}" /></li>
|
||||
<li><label class=property>Меню</label>
|
||||
<select name="menu_id">
|
||||
{foreach from=$menus item=m}
|
||||
<option value='{$m->id}' {if $page->menu_id == $m->id}selected{/if}>{$m->name|escape}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</li>
|
||||
{if $page->menu_id == 3}
|
||||
<li><label class=property>Родительский раздел</label>
|
||||
<select name="parent">
|
||||
<option value='28'>Верхний уровень</option>
|
||||
{foreach from=$select_items item=select_item}
|
||||
<option value='{$select_item->id}' {if $page->parent == $select_item->id}selected{/if}>{$select_item->name|escape}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</li>
|
||||
{/if}
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block layer">
|
||||
<h2>Параметры страницы</h2>
|
||||
<ul>
|
||||
<li><label class=property>Адрес</label><div class="page_url">/</div><input name="url" class="page_url" type="text" value="{$page->url|escape}" /></li>
|
||||
<li><label class=property>Заголовок</label><input name="meta_title" class="simpla_inp" type="text" value="{$page->meta_title|escape}" /></li>
|
||||
<li><label class=property>Ключевые слова</label><input name="meta_keywords" class="simpla_inp" type="text" value="{$page->meta_keywords|escape}" /></li>
|
||||
<li><label class=property>Описание</label><textarea name="meta_description" class="simpla_inp"/>{$page->meta_description|escape}</textarea></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Правая колонка свойств товара -->
|
||||
<div id="column_right">
|
||||
<!-- Изображение категории -->
|
||||
<div class="block layer images">
|
||||
<h2>Изображение</h2>
|
||||
<input class='upload_image' name=image type=file>
|
||||
<input type=hidden name="delete_image" value="">
|
||||
{if $page->image}
|
||||
<ul>
|
||||
<li>
|
||||
<a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a>
|
||||
<img src="{$page->image|resizepage:100:100}" alt="" />
|
||||
</li>
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
{if $page->menu_id == 3}
|
||||
<div class="block">
|
||||
<h2>Связанные товары <small>(Хиты продаж)</small></h2>
|
||||
<div id=list class="related_products">
|
||||
{foreach from=$related_products item=related_product}
|
||||
<div class="row">
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_products[] value='{$related_product->id}'>
|
||||
<a href="/simpla/index.php?module=ProductAdmin&id={$related_product->id}">{$related_product->name}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
<div id="new_related_product" class="row" style='display:none;'>
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_products[] value=''>
|
||||
<a class="related_product_name" href=""></a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<input type=text name=related id='related_products' class="input_autocomplete" placeholder='Выберите товар чтобы добавить его'>
|
||||
</div>
|
||||
|
||||
<div class="block layer">
|
||||
<h2>Связанные страницы (Другие услуги)</h2>
|
||||
<div id=list class="related_pages">
|
||||
{foreach from=$related_pages item=related_page}
|
||||
<div class="row">
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_pages[] value='{$related_page->id}'>
|
||||
<a href="{url id=$related_page->id}">{$related_page->name}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
<div id="new_related_page" class="row" style='display:none;'>
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_pages[] value=''>
|
||||
<a class="related_page_name" href=""></a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<input type=text name=related id='related_pages' class="input_autocomplete" placeholder='Выберите статью чтобы добавить ее'>
|
||||
</div>
|
||||
|
||||
<div class="block layer">
|
||||
<h2>Связанные страницы (Примеры работ)</h2>
|
||||
<div id=list class="related_articles">
|
||||
{foreach from=$related_articles item=related_page}
|
||||
<div class="row">
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_articles[] value='{$related_page->id}'>
|
||||
<a href="/simpla/index.php?module=ArticleAdmin&id={$related_page->id}">{$related_page->name}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
<div id="new_related_article" class="row" style='display:none;'>
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_articles[] value=''>
|
||||
<a class="related_article_name" href=""></a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<input type=text name=related id='related_articles' class="input_autocomplete" placeholder='Выберите статью чтобы добавить ее'>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="block layer">
|
||||
<ul>
|
||||
<li>
|
||||
<label style="float:none;" class=property>Ссылка на все работы</label>
|
||||
<input style="width:90%" name="works_url" type="text" value="{$page->works_url}" />
|
||||
</li>
|
||||
<li>
|
||||
<label style="float:none;" class=property>Текст ссылки</label>
|
||||
<input style="width:90%" name="works_url_text" class="simpla_inp" type="text" value="{$page->works_url_text|escape}" />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
{/if}
|
||||
|
||||
</div>
|
||||
<!-- Правая колонка свойств товара (The End)-->
|
||||
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block layer">
|
||||
<h2>Краткое содержание</h2>
|
||||
<textarea name="introtext" style="width: 100%; height: 100px;" id="_introtext">{$page->introtext|escape}</textarea>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block layer">
|
||||
<h2>Текст перед текстом страницы</h2>
|
||||
<textarea name="toptext" class="editor_large" id="_toptext">{$page->toptext|escape}</textarea>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
<!-- Описагние товара -->
|
||||
<div class="block layer">
|
||||
<h2>Текст страницы</h2>
|
||||
<textarea name="body" id="_body" class="editor_large">{$page->body|escape}</textarea>
|
||||
</div>
|
||||
<!-- Описание товара (The End)-->
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block layer">
|
||||
<h2>Текст после текста страницы</h2>
|
||||
<textarea name="bottext" class="editor_large" id="_bottext">{$page->bottext|escape}</textarea>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
|
||||
175
simpla/design/html/pages.tpl
Normal file
@@ -0,0 +1,175 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('pages', $manager->permissions)}
|
||||
{foreach from=$menus item=m}
|
||||
{if $m->id != 3}
|
||||
<li {if $m->id == $menu->id}class="active"{/if}><a href="{url module=PagesAdmin menu_id=$m->id}">{$m->name}</a></li>
|
||||
{/if}
|
||||
{/foreach}
|
||||
{/if}
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title = {$menu->name} scope=parent}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1>{$menu->name}</h1>
|
||||
<a class="add" href="{url module=PageAdmin}">Добавить страницу</a>
|
||||
</div>
|
||||
|
||||
{if $pages}
|
||||
<div id="main_list">
|
||||
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
<div id="list">
|
||||
{foreach $pages as $page}
|
||||
<div class="{if !$page->visible}invisible{/if} row">
|
||||
<input type="hidden" name="positions[{$page->id}]" value="{$page->position}">
|
||||
<div class="move cell"><div class="move_zone"></div></div>
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$page->id}" />
|
||||
</div>
|
||||
<div class="name cell">
|
||||
<a href="{url module=PageAdmin id=$page->id return=$smarty.server.REQUEST_URI}">{$page->header|escape}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="preview" title="Предпросмотр в новом окне" href="{$page->parentUrl}{$page->url}/" target="_blank"></a>
|
||||
<a class="enable" title="Активна" href="#"></a>
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="enable">Сделать видимыми</option>
|
||||
<option value="disable">Сделать невидимыми</option>
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{else}
|
||||
Нет страниц
|
||||
{/if}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Сортировка списка
|
||||
$("#list").sortable({
|
||||
items: ".row",
|
||||
tolerance: "pointer",
|
||||
handle: ".move_zone",
|
||||
scrollSensitivity: 40,
|
||||
opacity: 0.7,
|
||||
forcePlaceholderSize: true,
|
||||
axis: 'y',
|
||||
|
||||
helper: function(event, ui){
|
||||
if($('input[type="checkbox"][name*="check"]:checked').size()<1) return ui;
|
||||
var helper = $('<div/>');
|
||||
$('input[type="checkbox"][name*="check"]:checked').each(function(){
|
||||
var item = $(this).closest('.row');
|
||||
helper.height(helper.height()+item.innerHeight());
|
||||
if(item[0]!=ui[0]) {
|
||||
helper.append(item.clone());
|
||||
$(this).closest('.row').remove();
|
||||
}
|
||||
else {
|
||||
helper.append(ui.clone());
|
||||
item.find('input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
}
|
||||
});
|
||||
return helper;
|
||||
},
|
||||
start: function(event, ui) {
|
||||
if(ui.helper.children('.row').size()>0)
|
||||
$('.ui-sortable-placeholder').height(ui.helper.height());
|
||||
},
|
||||
beforeStop:function(event, ui){
|
||||
if(ui.helper.children('.row').size()>0){
|
||||
ui.helper.children('.row').each(function(){
|
||||
$(this).insertBefore(ui.item);
|
||||
});
|
||||
ui.item.remove();
|
||||
}
|
||||
},
|
||||
update:function(event, ui)
|
||||
{
|
||||
$("#list_form input[name*='check']").attr('checked', false);
|
||||
$("#list_form").ajaxSubmit(function() {
|
||||
colorize();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$(".row:even").addClass('even');
|
||||
$(".row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:checked)').length>0);
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list_form input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
|
||||
// Показать
|
||||
$("a.enable").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest(".row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = line.hasClass('invisible')?1:0;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'page', 'id': id, 'values': {'visible': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
line.removeClass('invisible');
|
||||
else
|
||||
line.addClass('invisible');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
$("form").submit(function() {
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
53
simpla/design/html/pagination.tpl
Normal file
@@ -0,0 +1,53 @@
|
||||
{if $pages_count>1}
|
||||
|
||||
{* Скрипт для листания через ctrl → *}
|
||||
{* Ссылки на соседние страницы должны иметь id PrevLink и NextLink *}
|
||||
<script type="text/javascript" src="design/js/ctrlnavigate.js"></script>
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
<div id="pagination">
|
||||
|
||||
{* Количество выводимых ссылок на страницы *}
|
||||
{$visible_pages = 11}
|
||||
|
||||
{* По умолчанию начинаем вывод со страницы 1 *}
|
||||
{$page_from = 1}
|
||||
|
||||
{* Если выбранная пользователем страница дальше середины "окна" - начинаем вывод уже не с первой *}
|
||||
{if $current_page > floor($visible_pages/2)}
|
||||
{$page_from = max(1, $current_page-floor($visible_pages/2)-1)}
|
||||
{/if}
|
||||
|
||||
{* Если выбранная пользователем страница близка к концу навигации - начинаем с "конца-окно" *}
|
||||
{if $current_page > $pages_count-ceil($visible_pages/2)}
|
||||
{$page_from = max(1, $pages_count-$visible_pages-1)}
|
||||
{/if}
|
||||
|
||||
{* До какой страницы выводить - выводим всё окно, но не более ощего количества страниц *}
|
||||
{$page_to = min($page_from+$visible_pages, $pages_count-1)}
|
||||
|
||||
{* Ссылка на 1 страницу отображается всегда *}
|
||||
<a class="{if $current_page==1}selected{else}droppable{/if}" href="{url page=1}">1</a>
|
||||
|
||||
{* Выводим страницы нашего "окна" *}
|
||||
{section name=pages loop=$page_to start=$page_from}
|
||||
{* Номер текущей выводимой страницы *}
|
||||
{$p = $smarty.section.pages.index+1}
|
||||
{* Для крайних страниц "окна" выводим троеточие, если окно не возле границы навигации *}
|
||||
{if ($p == $page_from+1 && $p!=2) || ($p == $page_to && $p != $pages_count-1)}
|
||||
<a class="{if $p==$current_page}selected{/if}" href="{url page=$p}">...</a>
|
||||
{else}
|
||||
<a class="{if $p==$current_page}selected{else}droppable{/if}" href="{url page=$p}">{$p}</a>
|
||||
{/if}
|
||||
{/section}
|
||||
|
||||
{* Ссылка на последнююю страницу отображается всегда *}
|
||||
<a class="{if $current_page==$pages_count}selected{else}droppable{/if}" href="{url page=$pages_count}">{$pages_count}</a>
|
||||
|
||||
<a href="{url page=all}">все сразу</a>
|
||||
{if $current_page>1}<a id="PrevLink" href="{url page=$current_page-1}">←назад</a>{/if}
|
||||
{if $current_page<$pages_count}<a id="NextLink" href="{url page=$current_page+1}">вперед→</a>{/if}
|
||||
|
||||
</div>
|
||||
<!-- Листалка страниц (The End) -->
|
||||
{/if}
|
||||
155
simpla/design/html/payment_method.tpl
Normal file
@@ -0,0 +1,155 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('settings', $manager->permissions)}<li><a href="index.php?module=SettingsAdmin">Настройки</a></li>{/if}
|
||||
{if in_array('currency', $manager->permissions)}<li><a href="index.php?module=CurrencyAdmin">Валюты</a></li>{/if}
|
||||
{if in_array('delivery', $manager->permissions)}<li><a href="index.php?module=DeliveriesAdmin">Доставка</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=PaymentMethodsAdmin">Оплата</a></li>
|
||||
{if in_array('managers', $manager->permissions)}<li><a href="index.php?module=ManagersAdmin">Менеджеры</a></li>{/if}
|
||||
{if in_array('maillist', $manager->permissions)}<li><a href="index.php?module=MailingMethodsAdmin">Рассылка</a></li>{/if}
|
||||
{/capture}
|
||||
|
||||
{if $payment_method->id}
|
||||
{$meta_title = $payment_method->name scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новый способ оплаты' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Подключаем Tiny MCE *}
|
||||
{include file='tinymce_init.tpl'}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script src="design/js/jquery/jquery.js"></script>
|
||||
<script src="design/js/jquery/jquery-ui.min.js"></script>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
$('div#module_settings').filter(':hidden').find("input, select, textarea").attr("disabled", true);
|
||||
|
||||
$('select[name=module]').change(function(){
|
||||
$('div#module_settings').hide().find("input, select, textarea").attr("disabled", true);
|
||||
$('div#module_settings[module='+$(this).val()+']').show().find("input, select, textarea").attr("disabled", false);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
{/literal}
|
||||
|
||||
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{$message_success}</span>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_success == 'added'}Способ оплаты добавлен{elseif $message_success == 'updated'}Способ оплаты изменен{/if}</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div id="name">
|
||||
<input class="name" name=name type="text" value="{$payment_method->name|escape}"/>
|
||||
<input name=id type="hidden" value="{$payment_method->id}"/>
|
||||
<div class="checkbox">
|
||||
<input name=enabled value='1' type="checkbox" id="active_checkbox" {if $payment_method->enabled}checked{/if}/> <label for="active_checkbox">Активен</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="product_categories">
|
||||
<select name="module">
|
||||
<option value='null'>Ручная обработка</option>
|
||||
{foreach $payment_modules as $payment_module}
|
||||
<option value='{$payment_module@key|escape}' {if $payment_method->module == $payment_module@key}selected{/if} >{$payment_module->name|escape}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div id="product_brand">
|
||||
<label>Валюта</label>
|
||||
<div>
|
||||
<select name="currency_id">
|
||||
{foreach $currencies as $currency}
|
||||
<option value='{$currency->id}' {if $currency->id==$payment_method->currency_id}selected{/if}>{$currency->name|escape}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
|
||||
{foreach $payment_modules as $payment_module}
|
||||
<div class="block layer" {if $payment_module@key!=$payment_method->module}style='display:none;'{/if} id=module_settings module='{$payment_module@key}'>
|
||||
<h2>{$payment_module->name}</h2>
|
||||
{* Параметры модуля оплаты *}
|
||||
<ul>
|
||||
{foreach $payment_module->settings as $setting}
|
||||
{$variable_name = $setting->variable}
|
||||
{if $setting->options|@count>1}
|
||||
<li><label class=property>{$setting->name}</label>
|
||||
<select name="payment_settings[{$setting->variable}]">
|
||||
{foreach $setting->options as $option}
|
||||
<option value='{$option->value}' {if $option->value==$payment_settings[$setting->variable]}selected{/if}>{$option->name|escape}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</li>
|
||||
{elseif $setting->options|@count==1}
|
||||
{$option = $setting->options|@first}
|
||||
<li><label class="property" for="{$setting->variable}">{$setting->name|escape}</label><input name="payment_settings[{$setting->variable}]" class="simpla_inp" type="checkbox" value="{$option->value|escape}" {if $option->value==$payment_settings[$setting->variable]}checked{/if} id="{$setting->variable}" /> <label for="{$setting->variable}">{$option->name}</label></li>
|
||||
{else}
|
||||
<li><label class="property" for="{$setting->variable}">{$setting->name|escape}</label><input name="payment_settings[{$setting->variable}]" class="simpla_inp" type="text" value="{$payment_settings[$setting->variable]|escape}" id="{$setting->variable}"/></li>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</ul>
|
||||
{* END Параметры модуля оплаты *}
|
||||
|
||||
</div>
|
||||
{/foreach}
|
||||
<div class="block layer" {if $payment_method->module != ''}style='display:none;'{/if} id=module_settings module='null'></div>
|
||||
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Правая колонка -->
|
||||
<div id="column_right">
|
||||
<div class="block layer">
|
||||
<h2>Возможные способы доставки</h2>
|
||||
<ul>
|
||||
{foreach $deliveries as $delivery}
|
||||
<li>
|
||||
<input type=checkbox name="payment_deliveries[]" id="delivery_{$delivery->id}" value='{$delivery->id}' {if in_array($delivery->id, $payment_deliveries)}checked{/if}> <label for="delivery_{$delivery->id}">{$delivery->name}</label><br>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Правая колонка (The End)-->
|
||||
|
||||
<!-- Описагние товара -->
|
||||
<div class="block layer">
|
||||
<h2>Описание</h2>
|
||||
<textarea name="description" class="editor_small">{$payment_method->description|escape}</textarea>
|
||||
</div>
|
||||
<!-- Описание товара (The End)-->
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
|
||||
168
simpla/design/html/payment_methods.tpl
Normal file
@@ -0,0 +1,168 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
{if in_array('settings', $manager->permissions)}<li><a href="index.php?module=SettingsAdmin">Настройки</a></li>{/if}
|
||||
{if in_array('currency', $manager->permissions)}<li><a href="index.php?module=CurrencyAdmin">Валюты</a></li>{/if}
|
||||
{if in_array('delivery', $manager->permissions)}<li><a href="index.php?module=DeliveriesAdmin">Доставка</a></li>{/if}
|
||||
<li class="active"><a href="index.php?module=PaymentMethodsAdmin">Оплата</a></li>
|
||||
{if in_array('managers', $manager->permissions)}<li><a href="index.php?module=ManagersAdmin">Менеджеры</a></li>{/if}
|
||||
{if in_array('maillist', $manager->permissions)}<li><a href="index.php?module=MailingMethodsAdmin">Рассылка</a></li>{/if}
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Способы оплаты' scope=parent}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1>Способы оплаты</h1>
|
||||
<a class="add" href="{url module=PaymentMethodAdmin}">Добавить способ оплаты</a>
|
||||
</div>
|
||||
|
||||
<div id="main_list">
|
||||
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list">
|
||||
{foreach $payment_methods as $payment_method}
|
||||
<div class="{if !$payment_method->enabled}invisible{/if} row">
|
||||
<input type="hidden" name="positions[{$payment_method->id}]" value="{$payment_method->position}">
|
||||
<div class="move cell"><div class="move_zone"></div></div>
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$payment_method->id}" />
|
||||
</div>
|
||||
<div class="name cell">
|
||||
<a href="{url module=PaymentMethodAdmin id=$payment_method->id return=$smarty.server.REQUEST_URI}">{$payment_method->name}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="enable" title="Активен" href="#"></a>
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="enable">Включить</option>
|
||||
<option value="disable">Выключить</option>
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Сортировка списка
|
||||
$("#list").sortable({
|
||||
items: ".row",
|
||||
tolerance: "pointer",
|
||||
handle: ".move_zone",
|
||||
scrollSensitivity: 40,
|
||||
opacity: 0.7,
|
||||
forcePlaceholderSize: true,
|
||||
axis: 'y',
|
||||
|
||||
helper: function(event, ui){
|
||||
if($('input[type="checkbox"][name*="check"]:checked').size()<1) return ui;
|
||||
var helper = $('<div/>');
|
||||
$('input[type="checkbox"][name*="check"]:checked').each(function(){
|
||||
var item = $(this).closest('.row');
|
||||
helper.height(helper.height()+item.innerHeight());
|
||||
if(item[0]!=ui[0]) {
|
||||
helper.append(item.clone());
|
||||
$(this).closest('.row').remove();
|
||||
}
|
||||
else {
|
||||
helper.append(ui.clone());
|
||||
item.find('input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
}
|
||||
});
|
||||
return helper;
|
||||
},
|
||||
start: function(event, ui) {
|
||||
if(ui.helper.children('.row').size()>0)
|
||||
$('.ui-sortable-placeholder').height(ui.helper.height());
|
||||
},
|
||||
beforeStop:function(event, ui){
|
||||
if(ui.helper.children('.row').size()>0){
|
||||
ui.helper.children('.row').each(function(){
|
||||
$(this).insertBefore(ui.item);
|
||||
});
|
||||
ui.item.remove();
|
||||
}
|
||||
},
|
||||
update:function(event, ui)
|
||||
{
|
||||
$("#list_form input[name*='check']").attr('checked', false);
|
||||
$("#list_form").ajaxSubmit(function() {
|
||||
colorize();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:checked)').length>0);
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Показать товар
|
||||
$("a.enable").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest(".row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = line.hasClass('invisible')?1:0;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'payment', 'id': id, 'values': {'enabled': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
line.removeClass('invisible');
|
||||
else
|
||||
line.addClass('invisible');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
$("form").submit(function() {
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
212
simpla/design/html/post.tpl
Normal file
@@ -0,0 +1,212 @@
|
||||
{capture name=tabs}
|
||||
<li class="active"><a href="{url module=BlogAdmin id=null page=null}">Блог</a></li>
|
||||
{/capture}
|
||||
|
||||
{if $post->id}
|
||||
{$meta_title = $post->name scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новая запись в блоге' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Подключаем Tiny MCE *}
|
||||
{include file='tinymce_init.tpl'}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script src="design/js/jquery/datepicker/jquery.ui.datepicker-ru.js"></script>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
update = {/literal}{if $post->url}true;{else}false;{/if}{literal}
|
||||
|
||||
$('input[name="date"]').datepicker({
|
||||
regional:'ru'
|
||||
});
|
||||
|
||||
// Автозаполнение мета-тегов
|
||||
meta_title_touched = true;
|
||||
meta_keywords_touched = true;
|
||||
meta_description_touched = true;
|
||||
url_touched = true;
|
||||
|
||||
if($('input[name="meta_title"]').val() == generate_meta_title() || $('input[name="meta_title"]').val() == '')
|
||||
meta_title_touched = false;
|
||||
if($('input[name="meta_keywords"]').val() == generate_meta_keywords() || $('input[name="meta_keywords"]').val() == '')
|
||||
meta_keywords_touched = false;
|
||||
if($('textarea[name="meta_description"]').val() == generate_meta_description() || $('textarea[name="meta_description"]').val() == '')
|
||||
meta_description_touched = false;
|
||||
if($('input[name="url"]').val() == generate_url() || $('input[name="url"]').val() == '')
|
||||
url_touched = false;
|
||||
|
||||
$('input[name="meta_title"]').change(function() { meta_title_touched = true; });
|
||||
$('input[name="meta_keywords"]').change(function() { meta_keywords_touched = true; });
|
||||
$('textarea[name="meta_description"]').change(function() { meta_description_touched = true; });
|
||||
$('input[name="url"]').change(function() { url_touched = true; });
|
||||
|
||||
$('input[name="name"]').keyup(function() { set_meta(); });
|
||||
$('select[name="brand_id"]').change(function() { set_meta(); });
|
||||
$('select[name="categories[]"]').change(function() { set_meta(); });
|
||||
|
||||
});
|
||||
|
||||
function set_meta()
|
||||
{
|
||||
if(!meta_title_touched)
|
||||
//$('input[name="meta_title"]').val(generate_meta_title());
|
||||
if(!meta_keywords_touched)
|
||||
//$('input[name="meta_keywords"]').val(generate_meta_keywords());
|
||||
if(!meta_description_touched)
|
||||
{
|
||||
descr = $('textarea[name="meta_description"]');
|
||||
descr.val(generate_meta_description());
|
||||
descr.scrollTop(descr.outerHeight());
|
||||
}
|
||||
if(!url_touched && !update)
|
||||
$('input[name="url"]').val(generate_url());
|
||||
}
|
||||
|
||||
function generate_meta_title()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_keywords()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_description()
|
||||
{
|
||||
if(typeof(tinyMCE.get("annotation")) =='object')
|
||||
{
|
||||
description = tinyMCE.get("annotation").getContent().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
|
||||
return description;
|
||||
}
|
||||
else
|
||||
return $('textarea[name=annotation]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
|
||||
}
|
||||
|
||||
function generate_url()
|
||||
{
|
||||
url = $('input[name="name"]').val();
|
||||
url = url.replace(/[\s]+/gi, '-');
|
||||
url = translit(url);
|
||||
url = url.replace(/[^0-9a-z_\-]+/gi, '').toLowerCase();
|
||||
return url;
|
||||
}
|
||||
|
||||
function translit(str)
|
||||
{
|
||||
var ru=("А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я").split("-")
|
||||
var en=("A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch-'-'-Y-y-'-'-E-e-YU-yu-YA-ya").split("-")
|
||||
var res = '';
|
||||
for(var i=0, l=str.length; i<l; i++)
|
||||
{
|
||||
var s = str.charAt(i), n = ru.indexOf(s);
|
||||
if(n >= 0) { res += en[n]; }
|
||||
else { res += s; }
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success == 'added'}Запись добавлена{elseif $message_success == 'updated'}Запись обновлена{/if}</span>
|
||||
<a class="link" target="_blank" href="../blog/{$post->url}">Открыть запись на сайте</a>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error == 'url_exists'}Запись с таким адресом уже существует{/if}</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div id="name">
|
||||
<input class="name" name=name type="text" value="{$post->name|escape}"/>
|
||||
<input name=id type="hidden" value="{$post->id|escape}"/>
|
||||
<div class="checkbox">
|
||||
<input name=visible value='1' type="checkbox" id="active_checkbox" {if $post->visible}checked{/if}/> <label for="active_checkbox">Активна</label>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block">
|
||||
<ul>
|
||||
<li><label class=property>Дата</label><input type=text name=date value='{$post->date|date}'></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="block layer">
|
||||
<!-- Параметры страницы (The End)-->
|
||||
<h2>Параметры страницы</h2>
|
||||
<!-- Параметры страницы -->
|
||||
<ul>
|
||||
<li><label class=property>Адрес</label><div class="page_url"> /blog/</div><input name="url" class="page_url" type="text" value="{$post->url|escape}" /></li>
|
||||
<li><label class=property>Заголовок</label><input name="meta_title" type="text" value="{$post->meta_title|escape}" /></li>
|
||||
<li><label class=property>Ключевые слова</label><input name="meta_keywords" type="text" value="{$post->meta_keywords|escape}" /></li>
|
||||
<li><label class=property>Описание</label><textarea name="meta_description" />{$post->meta_description|escape}</textarea></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Правая колонка свойств товара -->
|
||||
<div id="column_right">
|
||||
<!-- Изображение категории -->
|
||||
<div class="block layer images">
|
||||
<h2>Изображение</h2>
|
||||
<input class='upload_image' name=image type=file>
|
||||
<input type=hidden name="delete_image" value="">
|
||||
{if $post->image}
|
||||
<ul>
|
||||
<li>
|
||||
<a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a>
|
||||
<img src="{$post->image|resizepost:100:100}" alt="" />
|
||||
</li>
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
<!-- Правая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Описагние товара -->
|
||||
<div class="block layer">
|
||||
<h2>Краткое описание</h2>
|
||||
<textarea name="annotation" class='editor_small'>{$post->annotation|escape}</textarea>
|
||||
</div>
|
||||
|
||||
<div class="block">
|
||||
<h2>Полное описание</h2>
|
||||
<textarea name="body" class='editor_large'>{$post->text|escape}</textarea>
|
||||
</div>
|
||||
<!-- Описание товара (The End)-->
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
859
simpla/design/html/product.tpl
Normal file
@@ -0,0 +1,859 @@
|
||||
{capture name=tabs}
|
||||
<li class="active"><a href="{url module=ProductsAdmin category_id=$product->category_id return=null brand_id=null id=null}">Товары</a></li>
|
||||
{if in_array('categories', $manager->permissions)}<li><a href="index.php?module=CategoriesAdmin">Категории</a></li>{/if}
|
||||
{if in_array('brands', $manager->permissions)}<li><a href="index.php?module=BrandsAdmin">Бренды</a></li>{/if}
|
||||
{if in_array('features', $manager->permissions)}<li><a href="index.php?module=FeaturesAdmin">Свойства</a></li>{/if}
|
||||
{/capture}
|
||||
|
||||
{if $product->id}
|
||||
{$meta_title = $product->name scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новый товар' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Подключаем Tiny MCE *}
|
||||
{include file='tinymce_init.tpl'}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script src="design/js/autocomplete/jquery.autocomplete-min.js"></script>
|
||||
<style>
|
||||
.autocomplete-w1 {position:absolute; top:0px; left:0px; margin:6px 0 0 6px; /* IE6 fix: */ _background:none; _margin:1px 0 0 0; }
|
||||
.autocomplete { border:1px solid #999; background:#FFF; cursor:default; text-align:left; overflow-x:auto; min-width: 300px; overflow-y: auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; }
|
||||
.autocomplete .selected { background:#F0F0F0; }
|
||||
.autocomplete div { padding:2px 5px; white-space:nowrap; }
|
||||
.autocomplete strong { font-weight:normal; color:#3399FF; }
|
||||
</style>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Добавление категории
|
||||
$('#product_categories .add').click(function() {
|
||||
$("#product_categories ul li:last").clone(false).appendTo('#product_categories ul').fadeIn('slow').find("select[name*=categories]:last").focus();
|
||||
$("#product_categories ul li:last span.add").hide();
|
||||
$("#product_categories ul li:last span.delete").show();
|
||||
return false;
|
||||
});
|
||||
|
||||
// Удаление категории
|
||||
$("#product_categories .delete").live('click', function() {
|
||||
$(this).closest("li").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
// Сортировка вариантов
|
||||
$("#variants_block").sortable({ items: '#variants ul' , axis: 'y', cancel: '#header', handle: '.move_zone' });
|
||||
// Сортировка вариантов
|
||||
$("table.related_products").sortable({ items: 'tr' , axis: 'y', cancel: '#header', handle: '.move_zone' });
|
||||
|
||||
|
||||
// Сортировка связанных товаров
|
||||
$(".sortable").sortable({
|
||||
items: "div.row",
|
||||
tolerance:"pointer",
|
||||
scrollSensitivity:40,
|
||||
opacity:0.7,
|
||||
handle: '.move_zone'
|
||||
});
|
||||
|
||||
|
||||
// Сортировка изображений
|
||||
$(".images ul").sortable({ tolerance: 'pointer'});
|
||||
|
||||
// Удаление изображений
|
||||
$(".images a.delete").live('click', function() {
|
||||
$(this).closest("li").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
// Загрузить изображение с компьютера
|
||||
$('#upload_image').click(function() {
|
||||
$("<input class='upload_image' name=images[] type=file multiple>").appendTo('div#add_image').focus().click();
|
||||
});
|
||||
// Или с URL
|
||||
$('#add_image_url').click(function() {
|
||||
$("<input class='remote_image' name=images_urls[] type=text value='http://'>").appendTo('div#add_image').focus().select();
|
||||
});
|
||||
|
||||
|
||||
// Удаление варианта
|
||||
$('a.del_variant').click(function() {
|
||||
if($("#variants ul").size()>1)
|
||||
{
|
||||
$(this).closest("ul").fadeOut(200, function() { $(this).remove(); });
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#variants_block .variant_name input[name*=variant][name*=name]').val('');
|
||||
$('#variants_block .variant_name').hide('slow');
|
||||
$('#variants_block').addClass('single_variant');
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
// Загрузить файл к варианту
|
||||
$('#variants_block a.add_attachment').click(function() {
|
||||
$(this).hide();
|
||||
$(this).closest('li').find('div.browse_attachment').show('fast');
|
||||
$(this).closest('li').find('input[name*=attachment]').attr('disabled', false);
|
||||
return false;
|
||||
});
|
||||
|
||||
// Удалить файл к варианту
|
||||
$('#variants_block a.remove_attachment').click(function() {
|
||||
closest_li = $(this).closest('li');
|
||||
closest_li.find('.attachment_name').hide('fast');
|
||||
$(this).hide('fast');
|
||||
closest_li.find('input[name*=delete_attachment]').val('1');
|
||||
closest_li.find('a.add_attachment').show('fast');
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
// Добавление варианта
|
||||
var variant = $('#new_variant').clone(true);
|
||||
$('#new_variant').remove().removeAttr('id');
|
||||
$('#variants_block span.add').click(function() {
|
||||
if(!$('#variants_block').is('.single_variant'))
|
||||
{
|
||||
$(variant).clone(true).appendTo('#variants').fadeIn('slow').find("input[name*=variant][name*=name]").focus();
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#variants_block .variant_name').show('slow');
|
||||
$('#variants_block').removeClass('single_variant');
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Добавление значения варианта
|
||||
$('#variants_block span.addv').live('click', function() {
|
||||
var vli = $(this).parent().parent().parent();
|
||||
var opt = $(vli).find('div.new div.line').clone(true);
|
||||
var toa = $(vli).find('div.currect');
|
||||
$(opt).clone(true).appendTo(toa).fadeIn('slow').find("input").focus();
|
||||
return false;
|
||||
});
|
||||
//
|
||||
$('#variants_block a.delete').live('click', function() {
|
||||
$(this).closest('div.line').fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
function show_category_features(category_id)
|
||||
{
|
||||
$('ul.prop_ul li').hide();
|
||||
if(categories_features[category_id] !== undefined)
|
||||
{
|
||||
$('ul.prop_ul li').filter(function(){return jQuery.inArray($(this).attr("feature_id"), categories_features[category_id])>-1;}).show();
|
||||
}
|
||||
}
|
||||
// Изменение набора свойств при изменении категории
|
||||
$('select[name="categories[]"]:first').change(function() {
|
||||
show_category_features($("option:selected",this).val());
|
||||
});
|
||||
show_category_features($('select[name="categories[]"]:first option:selected').val());
|
||||
|
||||
|
||||
// Добавление нового свойства товара
|
||||
var feature = $('#new_feature').clone(true);
|
||||
$('#new_feature').remove().removeAttr('id');
|
||||
$('#add_new_feature').click(function() {
|
||||
$(feature).clone(true).appendTo('ul.new_features').fadeIn('slow').find("input[name*=new_feature_name]").focus();
|
||||
return false;
|
||||
});
|
||||
|
||||
// Удаление связанноq статьи
|
||||
$(".related_articles a.delete").live('click', function() {
|
||||
$(this).closest("div.row").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
// Добавление связанной статьи
|
||||
var new_related_article = $('#new_related_article').clone(true);
|
||||
$('#new_related_article').remove().removeAttr('id');
|
||||
|
||||
$("input#related_articles").autocomplete({
|
||||
serviceUrl:'ajax/search_articles.php',
|
||||
minChars:0,
|
||||
noCache: false,
|
||||
onSelect:
|
||||
function(value, data){
|
||||
new_item = new_related_article.clone().appendTo('.related_articles');
|
||||
new_item.removeAttr('id');
|
||||
new_item.find('a.related_article_name').html(data.name);
|
||||
new_item.find('a.related_article_name').attr('href', 'index.php?module=ArticleAdmin&id='+data.id);
|
||||
new_item.find('input[name*="related_articles"]').val(data.id);
|
||||
$("#related_articles").val('');
|
||||
new_item.show();
|
||||
},
|
||||
fnFormatResult:
|
||||
function(value, data, currentValue){
|
||||
var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
|
||||
var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
|
||||
return value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// Удаление связанного товара
|
||||
$(".related_products a.delete").live('click', function() {
|
||||
$(this).closest("div.row").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Подсказки для свойств
|
||||
$('input[name*="options"]').each(function(index) {
|
||||
f_id = $(this).closest('li').attr('feature_id');
|
||||
ac = $(this).autocomplete({
|
||||
serviceUrl:'ajax/options_autocomplete.php',
|
||||
minChars:0,
|
||||
params: {feature_id:f_id},
|
||||
noCache: false
|
||||
});
|
||||
});
|
||||
|
||||
// Удаление связанного товара
|
||||
$(".related_products a.delete").live('click', function() {
|
||||
$(this).closest("div.row").fadeOut(200, function() { $(this).remove(); });
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
// Добавление связанного товара
|
||||
var new_related_product = $('#new_related_product').clone(true);
|
||||
$('#new_related_product').remove().removeAttr('id');
|
||||
|
||||
$("input#related_products").autocomplete({
|
||||
serviceUrl:'ajax/search_products.php',
|
||||
minChars:0,
|
||||
noCache: false,
|
||||
onSelect:
|
||||
function(value, data){
|
||||
new_item = new_related_product.clone().appendTo('.related_products');
|
||||
new_item.removeAttr('id');
|
||||
new_item.find('a.related_product_name').html(data.name);
|
||||
new_item.find('a.related_product_name').attr('href', 'index.php?module=ProductAdmin&id='+data.id);
|
||||
new_item.find('input[name*="related_products"]').val(data.id);
|
||||
if(data.image)
|
||||
new_item.find('img.product_icon').attr("src", data.image);
|
||||
else
|
||||
new_item.find('img.product_icon').remove();
|
||||
$("#related_products").val('');
|
||||
new_item.show();
|
||||
},
|
||||
fnFormatResult:
|
||||
function(value, data, currentValue){
|
||||
var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
|
||||
var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
|
||||
return (data.image?"<img align=absmiddle src='"+data.image+"'> ":'') + value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
// infinity
|
||||
$("input[name*=variant][name*=stock]").focus(function() {
|
||||
if($(this).val() == '∞')
|
||||
$(this).val('');
|
||||
return false;
|
||||
});
|
||||
|
||||
$("input[name*=variant][name*=stock]").blur(function() {
|
||||
if($(this).val() == '')
|
||||
$(this).val('∞');
|
||||
});
|
||||
|
||||
// Волшебные изображения
|
||||
name_changed = false;
|
||||
$("input[name=name]").change(function() {
|
||||
name_changed = true;
|
||||
images_loaded = 0;
|
||||
});
|
||||
images_num = 8;
|
||||
images_loaded = 0;
|
||||
old_wizar_dicon_src = $('#images_wizard img').attr('src');
|
||||
$('#images_wizard').click(function() {
|
||||
|
||||
$('#images_wizard img').attr('src', 'design/images/loader.gif');
|
||||
if(name_changed)
|
||||
$('div.images ul li.wizard').remove();
|
||||
name_changed = false;
|
||||
key = $('input[name=name]').val();
|
||||
$.ajax({
|
||||
url: "ajax/get_images.php",
|
||||
data: {keyword: key, start: images_loaded},
|
||||
dataType: 'json',
|
||||
success: function(data){
|
||||
for(i=0; i<Math.min(data.length, images_num); i++)
|
||||
{
|
||||
image_url = data[i];
|
||||
$("<li class=wizard><a href='' class='delete'><img src='design/images/cross-circle-frame.png'></a><a href='"+image_url+"' target=_blank><img onerror='$(this).closest(\"li\").remove();' width=100 src='"+image_url+"' /><input name=images_urls[] type=hidden value='"+image_url+"'></a></li>").appendTo('div .images ul');
|
||||
}
|
||||
$('#images_wizard img').attr('src', old_wizar_dicon_src);
|
||||
images_loaded += images_num;
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Волшебное описание
|
||||
name_changed = false;
|
||||
$("input[name=name]").change(function() {
|
||||
name_changed = true;
|
||||
});
|
||||
old_prop_wizard_icon_src = $('#properties_wizard img').attr('src');
|
||||
$('#properties_wizard').click(function() {
|
||||
|
||||
$('#properties_wizard img').attr('src', 'design/images/loader.gif');
|
||||
if(name_changed)
|
||||
$('div.images ul li.wizard').remove();
|
||||
name_changed = false;
|
||||
key = $('input[name=name]').val();
|
||||
$.ajax({
|
||||
url: "ajax/get_info.php",
|
||||
data: {keyword: key},
|
||||
dataType: 'json',
|
||||
success: function(data){
|
||||
if(data)
|
||||
{
|
||||
$('li#new_feature').remove();
|
||||
for(i=0; i<data.options.length; i++)
|
||||
{
|
||||
option_name = data.options[i].name;
|
||||
option_value = data.options[i].value;
|
||||
// Добавление нового свойства товара
|
||||
exists = false;
|
||||
if(!$('label.property:visible:contains('+option_name+')').closest('li').find('input[name*=options]').val(option_value).length)
|
||||
{
|
||||
f = $(feature).clone(true);
|
||||
f.find('input[name*=new_features_names]').val(option_name);
|
||||
f.find('input[name*=new_features_values]').val(option_value);
|
||||
f.appendTo('ul.new_features').fadeIn('slow');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
$('#properties_wizard img').attr('src', old_prop_wizard_icon_src);
|
||||
|
||||
},
|
||||
error: function(xhr, textStatus, errorThrown){
|
||||
alert("Error: " +textStatus);
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
// Автозаполнение мета-тегов
|
||||
meta_title_touched = true;
|
||||
meta_keywords_touched = true;
|
||||
meta_description_touched = true;
|
||||
url_touched = false;
|
||||
update = {/literal}{if $product->url}true;{else}false;{/if}{literal}
|
||||
|
||||
if($('input[name="meta_title"]').val() == generate_meta_title() || $('input[name="meta_title"]').val() == '')
|
||||
meta_title_touched = false;
|
||||
if($('input[name="meta_keywords"]').val() == generate_meta_keywords() || $('input[name="meta_keywords"]').val() == '')
|
||||
meta_keywords_touched = false;
|
||||
if($('textarea[name="meta_description"]').val() == generate_meta_description() || $('textarea[name="meta_description"]').val() == '')
|
||||
meta_description_touched = false;
|
||||
|
||||
if($('input[name="url"]').val() == generate_url() || $('input[name="url"]').val() == '') url_touched = false;
|
||||
|
||||
$('input[name="meta_title"]').change(function() { meta_title_touched = true; });
|
||||
$('input[name="meta_keywords"]').change(function() { meta_keywords_touched = true; });
|
||||
$('textarea[name="meta_description"]').change(function() { meta_description_touched = true; });
|
||||
$('input[name="url"]').change(function() { url_touched = true; });
|
||||
|
||||
$('input[name="name"]').keyup(function() { set_meta(); });
|
||||
$('select[name="brand_id"]').change(function() { set_meta(); });
|
||||
$('select[name="categories[]"]').change(function() { set_meta(); });
|
||||
|
||||
});
|
||||
|
||||
function set_meta()
|
||||
{
|
||||
if(!meta_title_touched)
|
||||
// $('input[name="meta_title"]').val(generate_meta_title());
|
||||
if(!meta_keywords_touched)
|
||||
// $('input[name="meta_keywords"]').val(generate_meta_keywords());
|
||||
if(!meta_description_touched)
|
||||
// $('textarea[name="meta_description"]').val(generate_meta_description());
|
||||
if(!url_touched && !update)
|
||||
$('input[name="url"]').val(generate_url());
|
||||
}
|
||||
|
||||
function generate_meta_title()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_keywords()
|
||||
{
|
||||
name = $('input[name="name"]').val();
|
||||
result = name;
|
||||
brand = $('select[name="brand_id"] option:selected').attr('brand_name');
|
||||
if(typeof(brand) == 'string' && brand!='')
|
||||
result += ', '+brand;
|
||||
$('select[name="categories[]"]').each(function(index) {
|
||||
c = $(this).find('option:selected').attr('category_name');
|
||||
if(typeof(c) == 'string' && c != '')
|
||||
result += ', '+c;
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
function generate_meta_description()
|
||||
{ return '';
|
||||
if(typeof(tinyMCE.get("annotation")) =='object')
|
||||
{
|
||||
description = tinyMCE.get("annotation").getContent().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
|
||||
return description;
|
||||
}
|
||||
else
|
||||
return $('textarea[name=annotation]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
|
||||
}
|
||||
|
||||
function generate_url()
|
||||
{
|
||||
url = $('input[name="name"]').val();
|
||||
url = url.replace(/[\s]+/gi, '-');
|
||||
url = translit(url);
|
||||
url = url.replace(/[^0-9a-z_\-]+/gi, '').toLowerCase();
|
||||
return url;
|
||||
}
|
||||
|
||||
function translit(str)
|
||||
{
|
||||
var ru=("А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я").split("-")
|
||||
var en=("A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch-'-'-Y-y-'-'-E-e-YU-yu-YA-ya").split("-")
|
||||
var res = '';
|
||||
for(var i=0, l=str.length; i<l; i++)
|
||||
{
|
||||
var s = str.charAt(i), n = ru.indexOf(s);
|
||||
if(n >= 0) { res += en[n]; }
|
||||
else { res += s; }
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.ui-autocomplete{
|
||||
background-color: #ffffff; width: 100px; overflow: hidden;
|
||||
border: 1px solid #e0e0e0;
|
||||
padding: 5px;
|
||||
}
|
||||
.ui-autocomplete li.ui-menu-item{
|
||||
overflow: hidden;
|
||||
white-space:nowrap;
|
||||
display: block;
|
||||
}
|
||||
.ui-autocomplete a.ui-corner-all{
|
||||
overflow: hidden;
|
||||
white-space:nowrap;
|
||||
display: block;
|
||||
}
|
||||
|
||||
</style>
|
||||
{/literal}
|
||||
|
||||
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success=='added'}Товар добавлен{elseif $message_success=='updated'}Товар изменен{else}{$message_success|escape}{/if}</span>
|
||||
<a class="link" target="_blank" href="../products/{$product->url}">Открыть товар на сайте</a>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error=='url_exists'}Товар с таким адресом уже существует{elseif $message_error=='empty_name'}Введите название{else}{$message_error|escape}{/if}</span>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="name">
|
||||
<input class="name" name=name type="text" value="{$product->name|escape}"/>
|
||||
<input name=id type="hidden" value="{$product->id|escape}"/>
|
||||
<div class="checkbox">
|
||||
<input name=visible value='1' type="checkbox" id="active_checkbox" {if $product->visible}checked{/if}/> <label for="active_checkbox">Активен</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<input name=featured value="1" type="checkbox" id="featured_checkbox" {if $product->featured}checked{/if}/> <label for="featured_checkbox">Рекомендуемый</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<input name=ym value='1' type="checkbox" id="ym" {if $product->product_id}{if $product->ym}checked="checked"{/if}{else}checked="checked"{/if}/> <label for="ym">ЯМ</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="product_brand" {if !$brands}style='display:none;'{/if}>
|
||||
<label>Бренд</label>
|
||||
<select name="brand_id">
|
||||
<option value='0' {if !$product->brand_id}selected{/if} brand_name=''>Не указан</option>
|
||||
{foreach from=$brands item=brand}
|
||||
<option {if !$brand->visible}style="color:#999"{/if} value='{$brand->id}' {if $product->brand_id == $brand->id}selected{/if} brand_name='{$brand->name|escape}'>{$brand->name|escape}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="product_categories" {if !$categories}style='display:none;'{/if}>
|
||||
<label>Категория</label>
|
||||
<div>
|
||||
<ul>
|
||||
{foreach name=categories from=$product_categories item=product_category}
|
||||
<li>
|
||||
<select name="categories[]">
|
||||
{function name=category_select level=0}
|
||||
{foreach from=$categories item=category}
|
||||
<option {if !$category->visible}style="color:#999"{/if} value='{$category->id}' {if $category->id == $selected_id}selected{/if} category_name='{$category->name|escape}'>{section name=sp loop=$level} {/section}{$category->name|escape}</option>
|
||||
{category_select categories=$category->subcategories selected_id=$selected_id level=$level+1}
|
||||
{/foreach}
|
||||
{/function}
|
||||
{category_select categories=$categories selected_id=$product_category->id}
|
||||
</select>
|
||||
<span {if not $smarty.foreach.categories.first}style='display:none;'{/if} class="add"><i class="dash_link">Дополнительная категория</i></span>
|
||||
<span {if $smarty.foreach.categories.first}style='display:none;'{/if} class="delete"><i class="dash_link">Удалить</i></span>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Варианты товара -->
|
||||
<div id="variants_block" {assign var=first_variant value=$product_variants|@first}{if $product_variants|@count <= 1 && !$first_variant->name}class=single_variant{/if}>
|
||||
<ul id="header">
|
||||
<li class="variant_move"></li>
|
||||
<li class="variant_name">Название варианта</li>
|
||||
<li class="variant_sku">Артикул</li>
|
||||
<li class="variant_price">Цена, {$currency->sign}</li>
|
||||
<li class="variant_discount">Старая, {$currency->sign}</li>
|
||||
<li class="variant_amount">Кол-во</li>
|
||||
<li class="variant_weight">Вес</li>
|
||||
</ul>
|
||||
<div id="variants">
|
||||
{foreach from=$product_variants item=variant}
|
||||
<ul>
|
||||
<li class="variant_move"><div class="move_zone"></div></li>
|
||||
<li class="variant_name"> <input name="variants[id][{$variant->id}]" type="hidden" value="{$variant->id|escape}" /><input name="variants[name][{$variant->id}]" type="" value="{$variant->name|escape}" /> <a class="del_variant" href=""><img src="design/images/cross-circle-frame.png" alt="" /></a></li>
|
||||
<li class="variant_sku"> <input name="variants[sku][{$variant->id}]" type="text" value="{$variant->sku|escape}" /></li>
|
||||
<li class="variant_price"> <input name="variants[price][{$variant->id}]" type="text" value="{$variant->price|escape}" /></li>
|
||||
<li class="variant_discount"> <input name="variants[compare_price][{$variant->id}]" type="text" value="{$variant->compare_price|escape}" /></li>
|
||||
<li class="variant_amount"> <input name="variants[stock][{$variant->id}]" type="text" value="{if $variant->infinity || $variant->stock == ''}∞{else}{$variant->stock|escape}{/if}" />{$settings->units}</li>
|
||||
<li class="variant_weight"> <input name="variants[weight][{$variant->id}]" type="text" value="{$variant->weight|escape}" />кг</li>
|
||||
<li class="variant_download">
|
||||
|
||||
{if $variant->attachment}
|
||||
<span class=attachment_name>{$variant->attachment|truncate:25:'...':false:true}</span>
|
||||
<a href='#' class=remove_attachment><img src='design/images/bullet_delete.png' title="Удалить цифровой товар"></a>
|
||||
<input type=hidden name="delete_attachment[{$variant->id}]" value=''>
|
||||
<a href='#' class=add_attachment style='display:none;'><img src="design/images/cd_add.png" title="Добавить цифровой товар" /></a>
|
||||
{else}
|
||||
<a href='#' class=add_attachment><img src="design/images/cd_add.png" title="Добавить цифровой товар" /></a>
|
||||
{/if}
|
||||
<div class=browse_attachment style='display:none;'>
|
||||
<input disabled type=file name=attachment[{$variant->id}]>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
<li class="variant_options">
|
||||
<div class="options">
|
||||
{if $features2}
|
||||
{assign var=variant_id value=$variant->id}
|
||||
<ul>
|
||||
{foreach $features2 AS $f2}
|
||||
{assign var=feature_id value=$f2->id}
|
||||
<li class="frow">
|
||||
<div class="currect">
|
||||
<div class="line">
|
||||
<label class=property>{$f2->name}</label>
|
||||
<input type="text" class="simpla_inp" name="options2[{$feature_id}][]" value="{$options2.$variant_id.$feature_id[0]->value|escape}" />
|
||||
{if $f2->multiselect}
|
||||
<span class="addv"><i class="dash_link">Добавить значение</i></span>
|
||||
{/if}
|
||||
<p class="cl"></p>
|
||||
</div>
|
||||
{if $options2.$variant_id.$feature_id|count > 1}
|
||||
{foreach $options2.$variant_id.$feature_id|cut as $ind=>$val}
|
||||
<div class="line">
|
||||
<strong> </strong>
|
||||
<input type="text" class="simpla_inp" name="options2[{$feature_id}][]" value="{$options2.$variant_id.$feature_id.$ind->value|escape}" />
|
||||
<a href="#" class="delete"></a>
|
||||
<p class="cl"></p>
|
||||
</div>
|
||||
{/foreach}
|
||||
{/if}
|
||||
</div>
|
||||
{if $f2->multiselect}
|
||||
<div class="new" style='display:none;'>
|
||||
<div class="line">
|
||||
<strong> </strong>
|
||||
<input type="text" class="simpla_inp" name="options2[{$feature_id}][]" value="" />
|
||||
<a href="#" class="delete"></a>
|
||||
<p class="cl"></p>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</li>
|
||||
<input type="hidden" name="options2[{$feature_id}][]" value="endoptions" />
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
{/foreach}
|
||||
</div>
|
||||
<ul id=new_variant style='display:none;'>
|
||||
<li class="variant_move"><div class="move_zone"></div></li>
|
||||
<li class="variant_name"><input name="variants[id][]" type="hidden" value="" /><input name="variants[name][]" type="" value="" /><a class="del_variant" href=""><img src="design/images/cross-circle-frame.png" alt="" /></a></li>
|
||||
<li class="variant_sku"><input name="variants[sku][]" type="" value="" /></li>
|
||||
<li class="variant_price"><input name="variants[price][]" type="" value="" /></li>
|
||||
<li class="variant_discount"><input name="variants[compare_price][]" type="" value="" /></li>
|
||||
<li class="variant_amount"><input name="variants[stock][]" type="" value="∞" />{$settings->units}</li>
|
||||
<li class="variant_weight"><input name="variants[weight][]" type="" value="" />кг</li>
|
||||
<li class="variant_download">
|
||||
<a href='#' class=add_attachment><img src="design/images/cd_add.png" alt="" /></a>
|
||||
<div class=browse_attachment style='display:none;'>
|
||||
<input type=file name=attachment[]>
|
||||
</div>
|
||||
</li>
|
||||
<li class="variant_options">
|
||||
<div class="options">
|
||||
{if $features2}
|
||||
<ul>
|
||||
{foreach $features2 AS $f2}
|
||||
{assign var=feature_id value=$f2->id}
|
||||
<li class="frow">
|
||||
<div class="currect">
|
||||
<div class="line">
|
||||
<label class=property>{$f2->name}</label>
|
||||
<input type="text" class="simpla_inp" name="options2[{$feature_id}][]" value="" />
|
||||
{if $f2->multiselect}
|
||||
<span class="addv"><i class="dash_link">Добавить значение</i></span>
|
||||
{/if}
|
||||
<p class="cl"></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="new" style='display:none;'>
|
||||
<div class="line">
|
||||
<strong> </strong>
|
||||
<input type="text" class="simpla_inp" name="options2[{$feature_id}][]" value="" />
|
||||
<a href="#" class="delete"></a>
|
||||
<p class="cl"></p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<input type="hidden" name="options2[{$feature_id}][]" value="endoptions" />
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
<span class="add" id="add_variant"><i class="dash_link">Добавить вариант</i></span>
|
||||
</div>
|
||||
<!-- Варианты товара (The End)-->
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block layer">
|
||||
<h2>Параметры страницы</h2>
|
||||
<ul>
|
||||
<li><label class=property>Адрес</label><div class="page_url"> /products/</div><input name="url" class="page_url" type="text" value="{$product->url|escape}" /></li>
|
||||
<li><label class=property>Заголовок</label><input name="meta_title" class="simpla_inp" type="text" value="{$product->meta_title|escape}" /></li>
|
||||
<li><label class=property>H1</label><input name="product_h1" class="simpla_inp" type="text" value="{$product->product_h1|escape}" /></li>
|
||||
<li><label class=property>Ключевые слова</label><input name="meta_keywords" class="simpla_inp" type="text" value="{$product->meta_keywords|escape}" /></li>
|
||||
<li><label class=property>Описание</label><textarea name="meta_description" class="simpla_inp" />{$product->meta_description|escape}</textarea></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
<!-- Свойства товара -->
|
||||
<script>
|
||||
var categories_features = new Array();
|
||||
{foreach from=$categories_features key=c item=fs}
|
||||
categories_features[{$c}] = Array({foreach from=$fs item=f}'{$f}', {/foreach}0);
|
||||
{/foreach}
|
||||
</script>
|
||||
|
||||
<div class="block layer" {if !$categories}style='display:none;'{/if}>
|
||||
<h2>Свойства товара
|
||||
<a href="#" id=properties_wizard><img src="design/images/wand.png" alt="Подобрать автоматически" title="Подобрать автоматически"/></a>
|
||||
</h2>
|
||||
|
||||
<ul class="prop_ul">
|
||||
{foreach $features as $feature}
|
||||
{assign var=feature_id value=$feature->id}
|
||||
<li feature_id={$feature_id} style='display:none;'><label class=property>{$feature->name}</label><input class="simpla_inp" type="text" name=options[{$feature_id}] value="{$options.$feature_id->value|escape}" /></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
<!-- Новые свойства -->
|
||||
<ul class=new_features>
|
||||
<li id=new_feature><label class=property><input type=text name=new_features_names[]></label><input class="simpla_inp" type="text" name=new_features_values[] /></li>
|
||||
</ul>
|
||||
<span class="add"><i class="dash_link" id="add_new_feature">Добавить новое свойство</i></span>
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
</div>
|
||||
|
||||
<!-- Свойства товара (The End)-->
|
||||
|
||||
{*
|
||||
<!-- Экспорт-->
|
||||
<div class="block">
|
||||
<h2>Экспорт товара</h2>
|
||||
<ul>
|
||||
<li><input id="exp_yad" type="checkbox" /> <label for="exp_yad">Яндекс Маркет</label> Бид <input class="simpla_inp" type="" name="" value="12" /> руб.</li>
|
||||
<li><input id="exp_goog" type="checkbox" /> <label for="exp_goog">Google Base</label> </li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Свойства товара (The End)-->
|
||||
*}
|
||||
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Правая колонка свойств товара -->
|
||||
<div id="column_right">
|
||||
|
||||
<!-- Изображения товара -->
|
||||
<div class="block layer images">
|
||||
<h2>Изображения товара
|
||||
<a href="#" id=images_wizard><img src="design/images/wand.png" alt="Подобрать автоматически" title="Подобрать автоматически"/></a>
|
||||
|
||||
</h2>
|
||||
<ul>{foreach from=$product_images item=image}<li>
|
||||
<a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a>
|
||||
<img src="{$image->filename|resize:100:100}" alt="" />
|
||||
<input type=hidden name='images[]' value='{$image->id}'>
|
||||
</li>{/foreach}</ul>
|
||||
<span class=upload_image><i class="dash_link" id="upload_image">Добавить изображение</i></span> или <span class=add_image_url><i class="dash_link" id="add_image_url">загрузить из интернета</i></span>
|
||||
<div id=add_image></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="block layer">
|
||||
<h2>Связанные товары</h2>
|
||||
<div id=list class="sortable related_products">
|
||||
{foreach from=$related_products item=related_product}
|
||||
<div class="row">
|
||||
<div class="move cell">
|
||||
<div class="move_zone"></div>
|
||||
</div>
|
||||
<div class="image cell">
|
||||
<input type=hidden name=related_products[] value='{$related_product->id}'>
|
||||
<a href="{url id=$related_product->id}">
|
||||
<img class=product_icon src='{$related_product->images[0]->filename|resize:35:35}'>
|
||||
</a>
|
||||
</div>
|
||||
<div class="name cell">
|
||||
<a href="{url id=$related_product->id}">{$related_product->name}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
<div id="new_related_product" class="row" style='display:none;'>
|
||||
<div class="move cell">
|
||||
<div class="move_zone"></div>
|
||||
</div>
|
||||
<div class="image cell">
|
||||
<input type=hidden name=related_products[] value=''>
|
||||
<img class=product_icon src=''>
|
||||
</div>
|
||||
<div class="name cell">
|
||||
<a class="related_product_name" href=""></a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<input type=text name=related id='related_products' class="input_autocomplete" placeholder='Выберите товар чтобы добавить его'>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="block layer">
|
||||
<h2>Связанные статьи</h2>
|
||||
<div id=list class="related_articles">
|
||||
{foreach from=$related_articles item=related_article}
|
||||
<div class="row">
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_articles[] value='{$related_article->id}'>
|
||||
<a href="{url id=$related_article->id}">{$related_article->name}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
<div id="new_related_article" class="row" style='display:none;'>
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_articles[] value=''>
|
||||
<a class="related_article_name" href=""></a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<input type=text name=related id='related_articles' class="input_autocomplete" placeholder='Выберите статью чтобы добавить ее'>
|
||||
</div>
|
||||
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
</div>
|
||||
<!-- Правая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Описагние товара -->
|
||||
<div class="block layer">
|
||||
<h2>Краткое описание</h2>
|
||||
<textarea name="annotation" class="editor_small">{$product->annotation|escape}</textarea>
|
||||
</div>
|
||||
|
||||
<div class="block">
|
||||
<h2>Полное описание</h2>
|
||||
<textarea name="body" class="editor_large">{$product->body|escape}</textarea>
|
||||
</div>
|
||||
<!-- Описание товара (The End)-->
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
|
||||
515
simpla/design/html/products.tpl
Normal file
@@ -0,0 +1,515 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li class="active"><a href="{url module=ProductsAdmin keyword=null category_id=null brand_id=null filter=null page=null}">Товары</a></li>
|
||||
{if in_array('categories', $manager->permissions)}<li><a href="index.php?module=CategoriesAdmin">Категории</a></li>{/if}
|
||||
{if in_array('brands', $manager->permissions)}<li><a href="index.php?module=BrandsAdmin">Бренды</a></li>{/if}
|
||||
{if in_array('features', $manager->permissions)}<li><a href="index.php?module=FeaturesAdmin">Свойства</a></li>{/if}
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{if $category}
|
||||
{$meta_title=$category->name scope=parent}
|
||||
{else}
|
||||
{$meta_title='Товары' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Поиск *}
|
||||
<form method="get">
|
||||
<div id="search">
|
||||
<input type="hidden" name="module" value="ProductsAdmin">
|
||||
<input class="search" type="text" name="keyword" value="{$keyword|escape}" />
|
||||
<input class="search_button" type="submit" value=""/>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
{if $products_count}
|
||||
{if $category->name || $brand->name}
|
||||
<h1>{$category->name} {$brand->name} ({$products_count} {$products_count|plural:'товар':'товаров':'товара'})</h1>
|
||||
{elseif $keyword}
|
||||
<h1>{$products_count|plural:'Найден':'Найдено':'Найдено'} {$products_count} {$products_count|plural:'товар':'товаров':'товара'}</h1>
|
||||
{else}
|
||||
<h1>{$products_count} {$products_count|plural:'товар':'товаров':'товара'}</h1>
|
||||
{/if}
|
||||
{else}
|
||||
<h1>Нет товаров</h1>
|
||||
{/if}
|
||||
<a class="add" href="{url module=ProductAdmin return=$smarty.server.REQUEST_URI}">Добавить товар</a>
|
||||
</div>
|
||||
|
||||
<div id="main_list">
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
{if $products}
|
||||
|
||||
<div id="expand">
|
||||
<!-- Свернуть/развернуть варианты -->
|
||||
<a href="#" class="dash_link" id="expand_all">Развернуть все варианты ↓</a>
|
||||
<a href="#" class="dash_link" id="roll_up_all" style="display:none;">Свернуть все варианты ↑</a>
|
||||
<!-- Свернуть/развернуть варианты (The End) -->
|
||||
</div>
|
||||
|
||||
{* Основная форма *}
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list">
|
||||
{foreach $products as $product}
|
||||
<div class="{if !$product->visible}invisible{/if} {if $product->featured}featured{/if} row">
|
||||
<input type="hidden" name="positions[{$product->id}]" value="{$product->position}">
|
||||
<div class="move cell"><div class="move_zone"></div></div>
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$product->id}"/>
|
||||
</div>
|
||||
<div class="image cell">
|
||||
{$image = $product->images|@first}
|
||||
{if $image}
|
||||
<a href="{url module=ProductAdmin id=$product->id return=$smarty.server.REQUEST_URI}"><img src="{$image->filename|escape|resize:35:35}" /></a>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="name product_name cell">
|
||||
|
||||
<div class="variants">
|
||||
<ul>
|
||||
{foreach $product->variants as $variant}
|
||||
<li {if !$variant@first}class="variant" style="display:none;"{/if}>
|
||||
<i title="{$variant->name|escape}">{$variant->name|escape|truncate:30:'…':true:true}</i>
|
||||
<input class="price {if $variant->compare_price>0}compare_price{/if}" type="text" name="price[{$variant->id}]" value="{$variant->price}" {if $variant->compare_price>0}title="Старая цена — {$variant->compare_price} {$currency->sign}"{/if} />{$currency->sign}
|
||||
<input class="stock" type="text" name="stock[{$variant->id}]" value="{if $variant->infinity}∞{else}{$variant->stock}{/if}" />{$settings->units}
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
|
||||
{$variants_num = $product->variants|count}
|
||||
{if $variants_num>1}
|
||||
<div class="expand_variant">
|
||||
<a class="dash_link expand_variant" href="#">{$variants_num} {$variants_num|plural:'вариант':'вариантов':'варианта'} ↓</a>
|
||||
<a class="dash_link roll_up_variant" style="display:none;" href="#">{$variants_num} {$variants_num|plural:'вариант':'вариантов':'варианта'} ↑</a>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<a href="{url module=ProductAdmin id=$product->id return=$smarty.server.REQUEST_URI}">{$product->name|escape}</a>
|
||||
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="preview" title="Предпросмотр в новом окне" href="../products/{$product->url}" target="_blank"></a>
|
||||
<!-- ЯМ -->
|
||||
<input type="hidden" value="{$product->ym}" data="{$product->id}" name="ym[{$product->id}]" class="yandex{if $product->ym==1} enabled{/if}"/>
|
||||
<a class="yandex" title="ЯМ" href="#"></a>
|
||||
|
||||
<a class="enable" title="Активен" href="#"></a>
|
||||
<a class="featured" title="Рекомендуемый" href="#"></a>
|
||||
<a class="duplicate" title="Дублировать" href="#"></a>
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="enable">Сделать видимыми</option>
|
||||
<option value="disable">Сделать невидимыми</option>
|
||||
<option value="set_featured">Сделать рекомендуемым</option>
|
||||
<option value="unset_featured">Отменить рекомендуемый</option>
|
||||
<option value="duplicate">Создать дубликат</option>
|
||||
{if $pages_count>1}
|
||||
<option value="move_to_page">Переместить на страницу</option>
|
||||
{/if}
|
||||
{if $categories|count>1}
|
||||
<option value="move_to_category">Переместить в категорию</option>
|
||||
{/if}
|
||||
{if $brands|count>0}
|
||||
<option value="move_to_brand">Указать бренд</option>
|
||||
{/if}
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<span id="move_to_page">
|
||||
<select name="target_page">
|
||||
{section target_page $pages_count}
|
||||
<option value="{$smarty.section.target_page.index+1}">{$smarty.section.target_page.index+1}</option>
|
||||
{/section}
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<span id="move_to_category">
|
||||
<select name="target_category">
|
||||
{function name=category_select level=0}
|
||||
{foreach $categories as $category}
|
||||
<option value='{$category->id}'>{section sp $level} {/section}{$category->name|escape}</option>
|
||||
{category_select categories=$category->subcategories selected_id=$selected_id level=$level+1}
|
||||
{/foreach}
|
||||
{/function}
|
||||
{category_select categories=$categories}
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<span id="move_to_brand">
|
||||
<select name="target_brand">
|
||||
<option value="0">Не указан</option>
|
||||
{foreach $all_brands as $b}
|
||||
<option value="{$b->id}">{$b->name}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
</div>
|
||||
{/if}
|
||||
</form>
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Меню -->
|
||||
<div id="right_menu">
|
||||
|
||||
<!-- Фильтры -->
|
||||
<ul>
|
||||
<li {if !$filter}class="selected"{/if}><a href="{url brand_id=null category_id=null keyword=null page=null filter=null}">Все товары</a></li>
|
||||
<li {if $filter=='featured'}class="selected"{/if}><a href="{url keyword=null brand_id=null category_id=null page=null filter='featured'}">Рекомендуемые</a></li>
|
||||
<li {if $filter=='discounted'}class="selected"{/if}><a href="{url keyword=null brand_id=null category_id=null page=null filter='discounted'}">Со скидкой</a></li>
|
||||
</ul>
|
||||
<!-- Фильтры -->
|
||||
|
||||
|
||||
<!-- Категории товаров -->
|
||||
{function name=categories_tree}
|
||||
{if $categories}
|
||||
<ul>
|
||||
{if $categories[0]->parent_id == 0}
|
||||
<li {if !$category->id}class="selected"{/if}><a href="{url category_id=null brand_id=null}">Все категории</a></li>
|
||||
{/if}
|
||||
{foreach $categories as $c}
|
||||
<li category_id="{$c->id}" {if $category->id == $c->id}class="selected"{else}class="droppable category"{/if}><a href='{url keyword=null brand_id=null page=null category_id={$c->id}}'>{$c->name}</a></li>
|
||||
{categories_tree categories=$c->subcategories}
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
{/function}
|
||||
{categories_tree categories=$categories}
|
||||
<!-- Категории товаров (The End)-->
|
||||
|
||||
{if $brands}
|
||||
<!-- Бренды -->
|
||||
<ul>
|
||||
<li {if !$brand->id}class="selected"{/if}><a href="{url brand_id=null}">Все бренды</a></li>
|
||||
{foreach $brands as $b}
|
||||
<li brand_id="{$b->id}" {if $brand->id == $b->id}class="selected"{else}class="droppable brand"{/if}><a href="{url keyword=null page=null brand_id=$b->id}">{$b->name}</a></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
<!-- Бренды (The End) -->
|
||||
{/if}
|
||||
|
||||
</div>
|
||||
<!-- Меню (The End) -->
|
||||
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script>
|
||||
|
||||
$(function() {
|
||||
|
||||
// Сортировка списка
|
||||
$("#list").sortable({
|
||||
items: ".row",
|
||||
tolerance: "pointer",
|
||||
handle: ".move_zone",
|
||||
scrollSensitivity: 40,
|
||||
opacity: 0.7,
|
||||
|
||||
helper: function(event, ui){
|
||||
if($('input[type="checkbox"][name*="check"]:checked').size()<1) return ui;
|
||||
var helper = $('<div/>');
|
||||
$('input[type="checkbox"][name*="check"]:checked').each(function(){
|
||||
var item = $(this).closest('.row');
|
||||
helper.height(helper.height()+item.innerHeight());
|
||||
if(item[0]!=ui[0]) {
|
||||
helper.append(item.clone());
|
||||
$(this).closest('.row').remove();
|
||||
}
|
||||
else {
|
||||
helper.append(ui.clone());
|
||||
item.find('input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
}
|
||||
});
|
||||
return helper;
|
||||
},
|
||||
start: function(event, ui) {
|
||||
if(ui.helper.children('.row').size()>0)
|
||||
$('.ui-sortable-placeholder').height(ui.helper.height());
|
||||
},
|
||||
beforeStop:function(event, ui){
|
||||
if(ui.helper.children('.row').size()>0){
|
||||
ui.helper.children('.row').each(function(){
|
||||
$(this).insertBefore(ui.item);
|
||||
});
|
||||
ui.item.remove();
|
||||
}
|
||||
},
|
||||
update:function(event, ui)
|
||||
{
|
||||
$("#list_form input[name*='check']").attr('checked', false);
|
||||
$("#list_form").ajaxSubmit(function() {
|
||||
colorize();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Перенос товара на другую страницу
|
||||
$("#action select[name=action]").change(function() {
|
||||
if($(this).val() == 'move_to_page')
|
||||
$("span#move_to_page").show();
|
||||
else
|
||||
$("span#move_to_page").hide();
|
||||
});
|
||||
$("#pagination a.droppable").droppable({
|
||||
activeClass: "drop_active",
|
||||
hoverClass: "drop_hover",
|
||||
tolerance: "pointer",
|
||||
drop: function(event, ui){
|
||||
$(ui.helper).find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(ui.draggable).closest("form").find('select[name="action"] option[value=move_to_page]').attr("selected", "selected");
|
||||
$(ui.draggable).closest("form").find('select[name=target_page] option[value='+$(this).html()+']').attr("selected", "selected");
|
||||
$(ui.draggable).closest("form").submit();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Перенос товара в другую категорию
|
||||
$("#action select[name=action]").change(function() {
|
||||
if($(this).val() == 'move_to_category')
|
||||
$("span#move_to_category").show();
|
||||
else
|
||||
$("span#move_to_category").hide();
|
||||
});
|
||||
$("#right_menu .droppable.category").droppable({
|
||||
activeClass: "drop_active",
|
||||
hoverClass: "drop_hover",
|
||||
tolerance: "pointer",
|
||||
drop: function(event, ui){
|
||||
$(ui.helper).find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(ui.draggable).closest("form").find('select[name="action"] option[value=move_to_category]').attr("selected", "selected");
|
||||
$(ui.draggable).closest("form").find('select[name=target_category] option[value='+$(this).attr('category_id')+']').attr("selected", "selected");
|
||||
$(ui.draggable).closest("form").submit();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Перенос товара в другой бренд
|
||||
$("#action select[name=action]").change(function() {
|
||||
if($(this).val() == 'move_to_brand')
|
||||
$("span#move_to_brand").show();
|
||||
else
|
||||
$("span#move_to_brand").hide();
|
||||
});
|
||||
$("#right_menu .droppable.brand").droppable({
|
||||
activeClass: "drop_active",
|
||||
hoverClass: "drop_hover",
|
||||
tolerance: "pointer",
|
||||
drop: function(event, ui){
|
||||
$(ui.helper).find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(ui.draggable).closest("form").find('select[name="action"] option[value=move_to_brand]').attr("selected", "selected");
|
||||
$(ui.draggable).closest("form").find('select[name=target_brand] option[value='+$(this).attr('brand_id')+']').attr("selected", "selected");
|
||||
$(ui.draggable).closest("form").submit();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Если есть варианты, отображать ссылку на их разворачивание
|
||||
if($("li.variant").size()>0)
|
||||
$("#expand").show();
|
||||
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
|
||||
// Показать все варианты
|
||||
$("#expand_all").click(function() {
|
||||
$("a#expand_all").hide();
|
||||
$("a#roll_up_all").show();
|
||||
$("a.expand_variant").hide();
|
||||
$("a.roll_up_variant").show();
|
||||
$(".variants ul li.variant").fadeIn('fast');
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
// Свернуть все варианты
|
||||
$("#roll_up_all").click(function() {
|
||||
$("a#roll_up_all").hide();
|
||||
$("a#expand_all").show();
|
||||
$("a.roll_up_variant").hide();
|
||||
$("a.expand_variant").show();
|
||||
$(".variants ul li.variant").fadeOut('fast');
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
// Показать вариант
|
||||
$("a.expand_variant").click(function() {
|
||||
$(this).closest("div.cell").find("li.variant").fadeIn('fast');
|
||||
$(this).closest("div.cell").find("a.expand_variant").hide();
|
||||
$(this).closest("div.cell").find("a.roll_up_variant").show();
|
||||
return false;
|
||||
});
|
||||
|
||||
// Свернуть вариант
|
||||
$("a.roll_up_variant").click(function() {
|
||||
$(this).closest("div.cell").find("li.variant").fadeOut('fast');
|
||||
$(this).closest("div.cell").find("a.roll_up_variant").hide();
|
||||
$(this).closest("div.cell").find("a.expand_variant").show();
|
||||
return false;
|
||||
});
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:checked)').length>0);
|
||||
});
|
||||
|
||||
// Удалить товар
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest("div.row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Дублировать товар
|
||||
$("a.duplicate").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest("div.row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=duplicate]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Показать товар
|
||||
$("a.enable").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest("div.row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = line.hasClass('invisible')?1:0;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'product', 'id': id, 'values': {'visible': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
line.removeClass('invisible');
|
||||
else
|
||||
line.addClass('invisible');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Сделать хитом
|
||||
$("a.featured").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest("div.row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = line.hasClass('featured')?0:1;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'product', 'id': id, 'values': {'featured': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
line.addClass('featured');
|
||||
else
|
||||
line.removeClass('featured');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form").submit(function() {
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
// Бесконечность на складе
|
||||
$("input[name*=stock]").focus(function() {
|
||||
if($(this).val() == '∞')
|
||||
$(this).val('');
|
||||
return false;
|
||||
});
|
||||
$("input[name*=stock]").blur(function() {
|
||||
if($(this).val() == '')
|
||||
$(this).val('∞');
|
||||
});
|
||||
|
||||
// ЯМ от bwdesign.ru
|
||||
function YMchangeRow(row){
|
||||
var input = $(row).find("input.yandex");
|
||||
if($(input).val()==1){
|
||||
$(input).val(0);
|
||||
$(input).removeClass('enabled')
|
||||
}else{
|
||||
$(input).val(1);
|
||||
$(input).addClass('enabled')
|
||||
}
|
||||
updateYM();
|
||||
}
|
||||
|
||||
function updateYM(){
|
||||
var icon = $("a.yandex");
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/ym.php?type=prod',
|
||||
data: $('form#list_form').serialize(),
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
}
|
||||
|
||||
$("a.yandex").click(function() {
|
||||
var th = $(this);
|
||||
var row = $(th).closest("div.row");
|
||||
YMchangeRow(row);
|
||||
return false;
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
621
simpla/design/html/service.tpl
Normal file
@@ -0,0 +1,621 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li class="active"><a href="index.php?module=ServicesAdmin">Услуги</a></li>
|
||||
<li><a href="index.php?module=ServicesMenuAdmin">Меню услуг</a></li>
|
||||
{/capture}
|
||||
|
||||
{if $page->id}
|
||||
{$meta_title = $page->name scope=parent}
|
||||
{else}
|
||||
{$meta_title = 'Новая услуга' scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Подключаем Tiny MCE *}
|
||||
{include file='tinymce_init.tpl'}
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success == 'added'}Услуга добавлена{elseif $message_success == 'updated'}Услуга обновлена{/if}</span>
|
||||
<a class="link" target="_blank" href="../{$root_url}{$page->url}">Открыть страницу на сайте</a>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error == 'url_exists'}Страница с таким адресом уже существует{/if}</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div id="name">
|
||||
<input class="name" name=header type="text" value="{$page->header|escape}"/>
|
||||
<input name=id type="hidden" value="{$page->id|escape}"/>
|
||||
<div class="checkbox">
|
||||
<input name="visible" value='1' type="checkbox" id="active_checkbox" {if $page->visible}checked{/if}/>
|
||||
<label for="active_checkbox">Активна</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<input name="show_home" value='1' type="checkbox" id="home_checkbox" {if $page->show_home}checked{/if}/>
|
||||
<label for="home_checkbox">На главной</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<input name="show_service" value='1' type="checkbox" id="home_checkbox"
|
||||
{if $page->show_service}checked{/if}/> <label for="home_checkbox">В услугах</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block">
|
||||
<ul>
|
||||
<li>
|
||||
<label class=property>Название пункта в меню</label>
|
||||
<input name="name" class="simpla_inp" type="text" value="{$page->name|escape}"/>
|
||||
</li>
|
||||
<li>
|
||||
<label class=property>Родительский раздел</label>
|
||||
<select name="parent">
|
||||
<option value='28'>Верхний уровень</option>
|
||||
{foreach from=$select_items item=select_item}
|
||||
<option value='{$select_item->id}'
|
||||
{if $page->parent == $select_item->id}selected{/if}>{$select_item->name|escape}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
<!-- Левая колонка свойств товара -->
|
||||
<div id="column_left">
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block layer">
|
||||
<h2>Параметры страницы</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<label class=property>Адрес</label>
|
||||
<div class="page_url">/</div>
|
||||
<input type="text" name="url" value="{$page->url|escape}" class="page_url" {if $page->brand_id}readonly{/if}/>
|
||||
</li>
|
||||
<li>
|
||||
<label class=property>Заголовок</label>
|
||||
<input name="meta_title" class="simpla_inp" type="text" value="{$page->meta_title|escape}"/>
|
||||
</li>
|
||||
<li>
|
||||
<label class=property>Ключевые слова</label>
|
||||
<input name="meta_keywords" class="simpla_inp" type="text" value="{$page->meta_keywords|escape}"/>
|
||||
</li>
|
||||
<li>
|
||||
<label class=property>Описание</label>
|
||||
<textarea name="meta_description" class="simpla_inp">{$page->meta_description|escape}</textarea>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
{* Услуга по брендам *}
|
||||
{if $page->menu_id == 3 && !$page->brand_id}
|
||||
<div class="block layer">
|
||||
<h2>Услуга по маркам авто</h2>
|
||||
<div id="service_brands" class="mb-2">
|
||||
{if $service_brands}
|
||||
{foreach $service_brands as $brand}
|
||||
<div data-brand-id="{$brand->id}" class="d-flex mt-2 brand_row">
|
||||
<input type="hidden" name="brands[]" value="{$brand->id}">
|
||||
<div class="name flex-grow-1"><a href="/simpla/index.php?module=ServiceAdmin&id={$brand->page_id}" target="_blank">{$brand->name}</a></div>
|
||||
<div class="icons"><a class="preview" href="/{$root_url}{$brand->page_url}/" target="_blank" title="Посмотреть на сайте"></a></div>
|
||||
<div class="icons"><a class="enable {if !$brand->page_visible}a-invisible{else}a-visible{/if}" data-id="{$brand->page_id}" href="#" title="Активировать/Деактивировать"></a></div>
|
||||
<div class="icons"><a class="delete" href="#" title="Удалить"></a></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
{/if}
|
||||
</div>
|
||||
<select id="brands_autocomplete" class="mt-2">
|
||||
<option value="">Выберите марку для добавления</option>
|
||||
{foreach $brands as $brand}
|
||||
<option value="{$brand->id}">{$brand->name}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
<div class="text- mt-1">
|
||||
или <a id="add_all_brands" class="" href="#">добавьте все марки</a>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
<!-- Правая колонка свойств товара -->
|
||||
<div id="column_right">
|
||||
<!-- Изображение категории -->
|
||||
<div class="block layer images">
|
||||
<h2>Изображение</h2>
|
||||
<input class='upload_image' name=image type=file>
|
||||
<input type=hidden name="delete_image" value="">
|
||||
{if $page->image}
|
||||
<ul>
|
||||
<li>
|
||||
<a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a>
|
||||
<img src="{$page->image|resizepage:100:100}" alt=""/>
|
||||
</li>
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div class="block">
|
||||
<h2>Связанные товары <small>(Хиты продаж)</small></h2>
|
||||
<div id=list class="related_products">
|
||||
{foreach from=$related_products item=related_product}
|
||||
<div class="row">
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_products[] value='{$related_product->id}'>
|
||||
<a href="/simpla/index.php?module=ProductAdmin&id={$related_product->id}">{$related_product->name}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
<div id="new_related_product" class="row" style='display:none;'>
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_products[] value=''>
|
||||
<a class="related_product_name" href=""></a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<input type=text name=related id='related_products' class="input_autocomplete"
|
||||
placeholder='Выберите товар чтобы добавить его'>
|
||||
</div>
|
||||
<div class="block layer">
|
||||
<h2>Связанные страницы (Другие услуги)</h2>
|
||||
<div id=list class="related_pages">
|
||||
{foreach from=$related_pages item=related_page}
|
||||
<div class="row">
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_pages[] value='{$related_page->id}'>
|
||||
<a href="{url id=$related_page->id}">{$related_page->name}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
<div id="new_related_page" class="row" style='display:none;'>
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_pages[] value=''>
|
||||
<a class="related_page_name" href=""></a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<input type=text name=related id='related_pages' class="input_autocomplete"
|
||||
placeholder='Выберите статью чтобы добавить ее'>
|
||||
</div>
|
||||
<div class="block layer">
|
||||
<h2>Связанные страницы (Примеры работ)</h2>
|
||||
<div id=list class="related_articles">
|
||||
{foreach from=$related_articles item=related_page}
|
||||
<div class="row">
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_articles[] value='{$related_page->id}'>
|
||||
<a href="/simpla/index.php?module=ArticleAdmin&id={$related_page->id}">{$related_page->name}</a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
<div id="new_related_article" class="row" style='display:none;'>
|
||||
<div class="name cell">
|
||||
<input type=hidden name=related_articles[] value=''>
|
||||
<a class="related_article_name" href=""></a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class="delete"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<input type=text name=related id='related_articles' class="input_autocomplete"
|
||||
placeholder='Выберите статью чтобы добавить ее'>
|
||||
</div>
|
||||
<div class="block layer">
|
||||
<ul>
|
||||
<li>
|
||||
<label style="float:none;" class=property>Ссылка на все работы</label>
|
||||
<input style="width:90%" name="works_url" type="text" value="{$page->works_url}"/>
|
||||
</li>
|
||||
<li>
|
||||
<label style="float:none;" class=property>Текст ссылки</label>
|
||||
<input style="width:90%" name="works_url_text" class="simpla_inp" type="text"
|
||||
value="{$page->works_url_text|escape}"/>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Правая колонка свойств товара (The End)-->
|
||||
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block layer">
|
||||
<h2>Краткое содержание</h2>
|
||||
<textarea name="introtext" style="width: 100%; height: 100px;"
|
||||
id="_introtext">{$page->introtext|escape}</textarea>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block layer">
|
||||
<h2>Текст перед текстом страницы</h2>
|
||||
<textarea name="toptext" class="editor_large" id="_toptext">{$page->toptext|escape}</textarea>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
<!-- Описагние товара -->
|
||||
<div class="block layer">
|
||||
<h2>Текст страницы</h2>
|
||||
<textarea name="body" id="_body" class="editor_large">{$page->body|escape}</textarea>
|
||||
</div>
|
||||
<!-- Описание товара (The End)-->
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block layer">
|
||||
<h2>Текст после текста страницы</h2>
|
||||
<textarea name="bottext" class="editor_large" id="_bottext">{$page->bottext|escape}</textarea>
|
||||
</div>
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
|
||||
<input class="button_green button_save" type="submit" name="" value="Сохранить"/>
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script src="design/js/jquery/datepicker/jquery.ui.datepicker-ru.js"></script>
|
||||
<script src="design/js/autocomplete/jquery.autocomplete-min.js"></script>
|
||||
<style>
|
||||
.autocomplete-w1 {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
margin: 6px 0 0 6px; /* IE6 fix: */
|
||||
_background: none;
|
||||
_margin: 1px 0 0 0;
|
||||
}
|
||||
|
||||
.autocomplete {
|
||||
border: 1px solid #999;
|
||||
background: #FFF;
|
||||
cursor: default;
|
||||
text-align: left;
|
||||
overflow-x: auto;
|
||||
min-width: 300px;
|
||||
overflow-y: auto;
|
||||
margin: -6px 6px 6px -6px; /* IE6 specific: */
|
||||
_height: 350px;
|
||||
_margin: 0;
|
||||
_overflow-x: hidden;
|
||||
}
|
||||
|
||||
.autocomplete .selected {
|
||||
background: #F0F0F0;
|
||||
}
|
||||
|
||||
.autocomplete div {
|
||||
padding: 2px 5px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.autocomplete strong {
|
||||
font-weight: normal;
|
||||
color: #3399FF;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
$(function () {
|
||||
|
||||
// Удаление связанного товара
|
||||
$(".related_products a.delete").live('click', function () {
|
||||
$(this).closest("div.row").fadeOut(200, function () {
|
||||
$(this).remove();
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Добавление связанного товара
|
||||
var new_related_product = $('#new_related_product').clone(true);
|
||||
$('#new_related_product').remove().removeAttr('id');
|
||||
|
||||
$("input#related_products").autocomplete({
|
||||
serviceUrl: 'ajax/search_products.php',
|
||||
minChars: 0,
|
||||
noCache: false,
|
||||
onSelect:
|
||||
function (value, data) {
|
||||
new_item = new_related_product.clone().appendTo('.related_products');
|
||||
new_item.removeAttr('id');
|
||||
new_item.find('a.related_product_name').html(data.name);
|
||||
new_item.find('a.related_product_name').attr('href', 'index.php?module=ProductAdmin&id=' + data.id);
|
||||
new_item.find('input[name*="related_products"]').val(data.id);
|
||||
$("#related_products").val('');
|
||||
new_item.show();
|
||||
},
|
||||
fnFormatResult:
|
||||
function (value, data, currentValue) {
|
||||
var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
|
||||
var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
|
||||
return value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// Удаление связанноq статьи
|
||||
$(".related_pages a.delete").live('click', function () {
|
||||
$(this).closest("div.row").fadeOut(200, function () {
|
||||
$(this).remove();
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Добавление связанной статьи
|
||||
var new_related_page = $('#new_related_page').clone(true);
|
||||
$('#new_related_page').remove().removeAttr('id');
|
||||
|
||||
$("input#related_pages").autocomplete({
|
||||
serviceUrl: 'ajax/search_pages.php',
|
||||
minChars: 0,
|
||||
noCache: false,
|
||||
onSelect:
|
||||
function (value, data) {
|
||||
new_item = new_related_page.clone().appendTo('.related_pages');
|
||||
new_item.removeAttr('id');
|
||||
new_item.find('a.related_page_name').html(data.name);
|
||||
new_item.find('a.related_page_name').attr('href', 'index.php?module=pageAdmin&id=' + data.id);
|
||||
new_item.find('input[name*="related_pages"]').val(data.id);
|
||||
$("#related_pages").val('');
|
||||
new_item.show();
|
||||
},
|
||||
fnFormatResult:
|
||||
function (value, data, currentValue) {
|
||||
var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
|
||||
var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
|
||||
return value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// Удаление связанноq статьи
|
||||
$(".related_articles a.delete").live('click', function () {
|
||||
$(this).closest("div.row").fadeOut(200, function () {
|
||||
$(this).remove();
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Добавление связанной статьи
|
||||
var new_related_article = $('#new_related_article').clone(true);
|
||||
$('#new_related_article').remove().removeAttr('id');
|
||||
|
||||
$("input#related_articles").autocomplete({
|
||||
serviceUrl: 'ajax/search_articles.php',
|
||||
minChars: 0,
|
||||
noCache: false,
|
||||
onSelect:
|
||||
function (value, data) {
|
||||
new_item = new_related_article.clone().appendTo('.related_articles');
|
||||
new_item.removeAttr('id');
|
||||
new_item.find('a.related_article_name').html(data.name);
|
||||
new_item.find('a.related_article_name').attr('href', 'index.php?module=articleAdmin&id=' + data.id);
|
||||
new_item.find('input[name*="related_articles"]').val(data.id);
|
||||
$("#related_articles").val('');
|
||||
new_item.show();
|
||||
},
|
||||
fnFormatResult:
|
||||
function (value, data, currentValue) {
|
||||
var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
|
||||
var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
|
||||
return value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
$(".images a.delete").click(function () {
|
||||
$("input[name='delete_image']").val('1');
|
||||
$(this).closest("ul").fadeOut(200, function () {
|
||||
$(this).remove();
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Автозаполнение мета-тегов
|
||||
menu_item_name_touched = true;
|
||||
meta_title_touched = true;
|
||||
meta_keywords_touched = true;
|
||||
meta_description_touched = true;
|
||||
url_touched = true;
|
||||
|
||||
if ($('input[name="menu_item_name"]').val() == generate_menu_item_name() || $('input[name="name"]').val() == '')
|
||||
menu_item_name_touched = false;
|
||||
if ($('input[name="meta_title"]').val() == generate_meta_title() || $('input[name="meta_title"]').val() == '')
|
||||
meta_title_touched = false;
|
||||
if ($('input[name="meta_keywords"]').val() == generate_meta_keywords() || $('input[name="meta_keywords"]').val() == '')
|
||||
meta_keywords_touched = false;
|
||||
if ($('textarea[name="meta_description"]').val() == generate_meta_description() || $('textarea[name="meta_description"]').val() == '')
|
||||
meta_description_touched = false;
|
||||
if ($('input[name="url"]').val() == generate_url())
|
||||
url_touched = false;
|
||||
$('input[name="name"]').change(function () {
|
||||
menu_item_name_touched = true;
|
||||
});
|
||||
$('input[name="meta_title"]').change(function () {
|
||||
meta_title_touched = true;
|
||||
});
|
||||
$('input[name="meta_keywords"]').change(function () {
|
||||
meta_keywords_touched = true;
|
||||
});
|
||||
$('textarea[name="meta_description"]').change(function () {
|
||||
meta_description_touched = true;
|
||||
});
|
||||
$('input[name="url"]').change(function () {
|
||||
url_touched = true;
|
||||
});
|
||||
if ($('input[name="name"]').val() == '') {
|
||||
$('input[name="header"]').keyup(function () {
|
||||
set_meta();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
function set_meta() {
|
||||
/* MODIFICATION /15.04.2016/ coder:SP отключено автозаполнение титла и кейворда */
|
||||
|
||||
if (!menu_item_name_touched)
|
||||
$('input[name="name"]').val(generate_menu_item_name());
|
||||
if (!meta_title_touched)
|
||||
/* $('input[name="meta_title"]').val(generate_meta_title());*/
|
||||
if (!meta_keywords_touched)
|
||||
/* $('input[name="meta_keywords"]').val(generate_meta_keywords()); */
|
||||
if (!meta_description_touched) {
|
||||
descr = $('textarea[name="meta_description"]');
|
||||
descr.val(generate_meta_description());
|
||||
descr.scrollTop(descr.outerHeight());
|
||||
}
|
||||
if (!url_touched)
|
||||
$('input[name="url"]').val(generate_url());
|
||||
}
|
||||
|
||||
function generate_menu_item_name() {
|
||||
name = $('input[name="header"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_title() {
|
||||
name = $('input[name="header"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_keywords() {
|
||||
name = $('input[name="header"]').val();
|
||||
return name;
|
||||
}
|
||||
|
||||
function generate_meta_description() {
|
||||
/* if(typeof(tinyMCE.get("body")) =='object')
|
||||
{
|
||||
description = tinyMCE.get("body").getContent().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
|
||||
return description;
|
||||
}
|
||||
else
|
||||
return $('textarea[name=body]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
|
||||
*/
|
||||
}
|
||||
|
||||
function generate_url() {
|
||||
url = $('input[name="header"]').val();
|
||||
url = url.replace(/[\s]+/gi, '-');
|
||||
url = translit(url);
|
||||
url = url.replace(/[^0-9a-z_\-]+/gi, '').toLowerCase();
|
||||
return url;
|
||||
}
|
||||
|
||||
function translit(str) {
|
||||
var ru = ("А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я").split("-")
|
||||
var en = ("A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch-'-'-Y-y-'-'-E-e-YU-yu-YA-ya").split("-")
|
||||
var res = '';
|
||||
for (var i = 0, l = str.length; i < l; i++) {
|
||||
var s = str.charAt(i), n = ru.indexOf(s);
|
||||
if (n >= 0) {
|
||||
res += en[n];
|
||||
} else {
|
||||
res += s;
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
{literal}
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
var $brands_list = $('#service_brands');
|
||||
|
||||
function create_brand_row(brand_id, brand_name) {
|
||||
return '<div data-brand-id="' + brand_id + '" class="d-flex mt-2 brand_row">' +
|
||||
' <input type="hidden" name="brands[]" value="' + brand_id + '">' +
|
||||
' <div class="name flex-grow-1">' + brand_name + '</div>' +
|
||||
' <div class="icons"><a class="delete" href="#" title="Удалить"></a></div>' +
|
||||
'</div>';
|
||||
}
|
||||
|
||||
$("#brands_autocomplete").on('change', function () {
|
||||
var id = this.value,
|
||||
name = $("option:selected", this).text();
|
||||
if (!$('[data-brand-id="' + id + '"]', $brands_list).length)
|
||||
$brands_list.append(create_brand_row(id, name));
|
||||
$(this).val('');
|
||||
});
|
||||
$('#add_all_brands').click(function () {
|
||||
$brands_list.empty();
|
||||
$("option", $("#brands_autocomplete")).each(function () {
|
||||
if (this.value)
|
||||
$brands_list.append(create_brand_row(this.value, $(this).text()));
|
||||
});
|
||||
return false;
|
||||
})
|
||||
|
||||
$brands_list.click(function (e) {
|
||||
var $el = $(e.target);
|
||||
if ($el.is('a')) {
|
||||
if ($el.hasClass('delete')) {
|
||||
$el.parents('.brand_row').remove();
|
||||
return false;
|
||||
} else if($el.hasClass('enable')) {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
'object': 'page',
|
||||
'action': 'enable',
|
||||
'id': $el.data('id'),
|
||||
'values': {'visible': $el.hasClass('a-invisible') ? 1 : 0},
|
||||
'session_id': '{/literal}{$smarty.session.id}{literal}'
|
||||
},
|
||||
beforeSend: function () {
|
||||
$el.addClass('loading_icon');
|
||||
},
|
||||
success: function (data) {
|
||||
$el.toggleClass('a-invisible').toggleClass('a-visible');
|
||||
$el.removeClass('loading_icon');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
220
simpla/design/html/services.tpl
Normal file
@@ -0,0 +1,220 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li class="active"><a href="index.php?module=ServicesAdmin">Услуги</a></li>
|
||||
<li><a href="index.php?module=ServicesMenuAdmin">Меню услуг</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title =$menu->name scope=parent}
|
||||
|
||||
{* Поиск *}
|
||||
<form id="search" method="get">
|
||||
<input type="hidden" name="module" value="ServicesAdmin">
|
||||
<input type="hidden" name="filter" value='{$filter}'>
|
||||
<input type="hidden" name="brand_id" value="{$brand_id}">
|
||||
<input type="hidden" name="parent" value="{$parent}">
|
||||
<input class="search" type="text" name="keyword" value="{$keyword|escape}">
|
||||
<input class="search_button" type="submit" value="">
|
||||
</form>
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
{if $keyword && $services_count>0}
|
||||
<h1>{$services_count|plural:'Нашлась':'Нашлось':'Нашлись'} {$services_count}
|
||||
{$services_count|plural:'услуга':'услуг':'услуги'}</h1>
|
||||
{elseif $services_count>0}
|
||||
<h1>{$services_count} {$services_count|plural: 'услуга':'услуг':'услуги'}</h1>
|
||||
<a class="add" href="{url module=ServiceAdmin return=$smarty.server.REQUEST_URI}">Добавить услугу</a>
|
||||
{else}
|
||||
<h1>Нет услуг</h1>
|
||||
<a class="add" href="{url module=ServiceAdmin return=$smarty.server.REQUEST_URI}">Добавить услугу</a>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
|
||||
{if $services}
|
||||
<div id="main_list" class="">
|
||||
{include file='pagination.tpl'}
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
<div id="list" class="pb-3">
|
||||
{foreach $services as $service}
|
||||
<div class="row {cycle values="even,odd"}">
|
||||
<div class="checkbox cell pr-1">
|
||||
<input type="checkbox" name="check[]" value="{$service->id}">
|
||||
</div>
|
||||
<div class="cell">
|
||||
<a href="index.php?module=ServiceAdmin&id={$service->id}"><b>{$service->header|escape}</b></a>
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="preview" title="Предпросмотр в новом окне" href="../{$root_url}{$service->url}/"
|
||||
target="_blank"></a>
|
||||
<a class="enable{if $service->visible} a-visible{else} a-invisible{/if}" title="Активна"
|
||||
href="#"></a>
|
||||
{if !$service->has_children}
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
<span id="select">
|
||||
<select name="action">
|
||||
<option value="enable">Сделать видимыми</option>
|
||||
<option value="disable">Сделать невидимыми</option>
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
</div>
|
||||
</form>
|
||||
{include file='pagination.tpl'}
|
||||
</div>
|
||||
{else}
|
||||
Нет услуг
|
||||
{/if}
|
||||
|
||||
{* Правое меню *}
|
||||
<div id="right_menu">
|
||||
<h3 class="mb-3 mt-2">Фильтр услуг</h3>
|
||||
<ul id="service_filter">
|
||||
<li {if !$filter}class="selected"{/if}>
|
||||
<a href="{url page=null filter=null}">Все услуги</a>
|
||||
</li>
|
||||
<li {if $filter=='branded'}class="selected"{/if}>
|
||||
<a href="{url page=null filter='branded'}" class="d-inline-flex align-items-center p-1">
|
||||
Только брендовые
|
||||
</a>
|
||||
</li>
|
||||
<li {if $filter=='home'}class="selected"{/if}>
|
||||
<a href="{url page=null filter='home'}" class="d-inline-flex align-items-center p-1">
|
||||
Услуги на главной
|
||||
</a>
|
||||
</li>
|
||||
<li {if $filter=='main'}class="selected"{/if}>
|
||||
<a href="{url page=null filter='main'}" class="d-inline-flex align-items-center p-1">
|
||||
Главные услуги
|
||||
</a>
|
||||
</li>
|
||||
<li {if $filter=='enabled'}class="selected"{/if}>
|
||||
<a href="{url page=null filter='enabled'}" class="d-inline-flex align-items-center p-1">
|
||||
<img class="mr-1" src="design/images/lightbulb.png">Активные
|
||||
</a>
|
||||
</li>
|
||||
<li {if $filter=='disabled'}class="selected"{/if}>
|
||||
<a href="{url page=null filter='disabled'}" class="d-inline-flex align-items-center p-1">
|
||||
<img class="mr-1" src="design/images/lightbulb_off.png">Отключенные
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
{if $brands}
|
||||
<h3 class="mb-2 mt-2">по маркам</h3>
|
||||
<select id="brand_selector" name="brand">
|
||||
<option value=""> -- Выберите марку --</option>
|
||||
{foreach $brands as $brand}
|
||||
<option value="{$brand->id}" {if $brand->id==$brand_id}selected{/if}>{$brand->name}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
{/if}
|
||||
|
||||
{if $tree}
|
||||
<h3 class="mb-2 mt-4">по родителю</h3>
|
||||
<select id="parent_selector" class="mw-100">
|
||||
<option value=""> -- Выберите родителя --</option>
|
||||
{function name=services_tree level=0}
|
||||
{if $services}
|
||||
{foreach $services as $service}
|
||||
<option {if $parent==$service->id}selected{/if}
|
||||
value="{$service->id}">{' '|str_repeat:($level*2)}{$service->name|escape}</option>
|
||||
{if $service->children}
|
||||
{services_tree services=$service->children level=$level+1}
|
||||
{/if}
|
||||
{/foreach}
|
||||
{/if}
|
||||
{/function}
|
||||
{services_tree services=$tree}
|
||||
</select>
|
||||
{/if}
|
||||
|
||||
<div class="clearfix"></div>
|
||||
<a class="text-danger text-center d-block mt-5" href="index.php?module=ServicesAdmin" title="Сбросить все фильтры">Сбросить
|
||||
все фильтры</a>
|
||||
</div>
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
var $search_form = $('#search');
|
||||
|
||||
$('#brand_selector').on('change', function () {
|
||||
$('[name="brand_id"]', $search_form).val(this.value);
|
||||
$search_form.submit();
|
||||
});
|
||||
$('#parent_selector').on('change', function () {
|
||||
$('[name="parent"]', $search_form).val(this.value);
|
||||
$search_form.submit();
|
||||
});
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function () {
|
||||
$('#list input[type="checkbox"][name*="check"]:not(:disabled)').attr('checked', $('#list input[type="checkbox"][name*="check"]:not(:disabled):not(:checked)').length > 0);
|
||||
});
|
||||
|
||||
// Активировать
|
||||
$("a.enable").click(function () {
|
||||
var icon = $(this);
|
||||
/*var line = icon.closest(".row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();*/
|
||||
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest("div.row").find('input[type="checkbox"][name*="check"]:first').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"]').val(icon.hasClass('a-invisible') ? 'enable' : 'disable');
|
||||
$(this).closest("form").submit();
|
||||
|
||||
/*icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
'object': 'page',
|
||||
'action': 'enable',
|
||||
'id': id,
|
||||
'values': {'visible': icon.hasClass('a-invisible') ? 1 : 0},
|
||||
'session_id': '{/literal}{$smarty.session.id}{literal}'
|
||||
},
|
||||
beforeSend: function () {
|
||||
icon.addClass('loading_icon');
|
||||
},
|
||||
success: function (data) {
|
||||
$('a.enable:first', line).toggleClass('a-invisible').toggleClass('a-visible');
|
||||
icon.removeClass('loading_icon');
|
||||
}
|
||||
});*/
|
||||
return false;
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function () {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest("div.row").find('input[type="checkbox"][name*="check"]:first').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Подтвердить удаление
|
||||
$("#list_form").submit(function () {
|
||||
if ($('select[name="action"]').val() == 'delete' && !confirm("Подтвердите удаление.\n\nВнимание!\nУслуги будут удалены ТОЛЬКО если не имеют дочерних."))
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
238
simpla/design/html/services_menu.tpl
Normal file
@@ -0,0 +1,238 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li><a href="index.php?module=ServicesAdmin">Услуги</a></li>
|
||||
<li class="active"><a href="index.php?module=ServicesMenuAdmin">Меню услуг</a></li>
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Меню услуг' scope=parent}
|
||||
|
||||
{* Поиск *}
|
||||
<form id="search" method="get">
|
||||
<input class="search" type="text" name="keyword" value="">
|
||||
<input class="search_button" type="submit" value="">
|
||||
</form>
|
||||
|
||||
<style>
|
||||
.jstree-anchor {
|
||||
display: inline-flex !important;
|
||||
width: 100%;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.jstree-search a {
|
||||
color: inherit;
|
||||
}
|
||||
#list .row {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
#list .icons {
|
||||
padding-right: 20px;
|
||||
}
|
||||
#list .icons a {
|
||||
margin: 0 5px;
|
||||
}
|
||||
#list {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
<h1>Меню услуг</h1>
|
||||
</div>
|
||||
<!-- Заголовок (The End) -->
|
||||
|
||||
{if $services}
|
||||
<div id="main_list">
|
||||
<div class="mb-3">
|
||||
<a id="expand_all" href="#" class="">Развернуть все</a> /
|
||||
<a id="collapse_all" href="#">Свернуть все</a>
|
||||
</div>
|
||||
<form id="list_form" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
<div id="list" class="pb-3">
|
||||
{function name=services_tree level=0}
|
||||
{if $services}
|
||||
<ul class="list">
|
||||
{foreach $services as $service}
|
||||
<li data-id="{$service->id}" data-parent="{$service->parent}" class="row">
|
||||
<span class="flex-grow-1">
|
||||
<a href="{url module=ServiceAdmin id=$service->id return=$smarty.server.REQUEST_URI}">{$service->name|escape}</a>
|
||||
</span>
|
||||
<span class="icons">
|
||||
<a class="preview" title="Предпросмотр в новом окне" href="../{$root_url}{$service->url}/"
|
||||
target="_blank"></a>
|
||||
<a class="enable{if $service->visible} a-visible{else} a-invisible{/if}" title="Активна" href="#"></a>
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</span>
|
||||
{services_tree services=$service->children level=$level+1}
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
{/function}
|
||||
{services_tree services=$services}
|
||||
</div>
|
||||
<div id="action">
|
||||
<div id="select">
|
||||
<select name="action">
|
||||
<option value="enable">Сделать видимыми</option>
|
||||
<option value="disable">Сделать невидимыми</option>
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{else}
|
||||
Нет услуг
|
||||
{/if}
|
||||
|
||||
<div id="right_menu">
|
||||
</div>
|
||||
|
||||
{literal}
|
||||
<link rel="stylesheet" href="design/js/jstree/themes/default/style.css">
|
||||
<script src="design/js/jquery/jquery.min.js"></script>
|
||||
<script src="design/js/jstree/jstree.js"></script>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
var $tree = $("#list"),
|
||||
$form = $("#list_form");
|
||||
|
||||
function enable_node(icon, node) {
|
||||
var visible = icon.hasClass('a-invisible') ? 1 : 0;
|
||||
$tree.jstree('uncheck_all');
|
||||
$tree.jstree('check_node', node);
|
||||
$form.find('select[name="action"]').val(visible ? 'enable' : 'disable');
|
||||
$form.submit();
|
||||
/*$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
'object': 'page',
|
||||
'action': 'enable',
|
||||
'id': node.data.id,
|
||||
'values': {'visible': icon.hasClass('a-invisible') ? 1 : 0},
|
||||
'session_id': '{/literal}{$smarty.session.id}{literal}'
|
||||
},
|
||||
beforeSend: function () {
|
||||
icon.addClass('loading_icon');
|
||||
},
|
||||
success: function (data) {
|
||||
$('a.enable:first', icon.closest(".row")).toggleClass('a-invisible').toggleClass('a-visible');
|
||||
icon.removeClass('loading_icon');
|
||||
}
|
||||
});*/
|
||||
}
|
||||
|
||||
function delete_node(icon, node){
|
||||
$tree.jstree('uncheck_all');
|
||||
$tree.jstree('check_node', node);
|
||||
$form.find('select[name="action"]').val('delete')
|
||||
//$form.find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$form.submit();
|
||||
}
|
||||
|
||||
$tree.jstree({
|
||||
"core": {
|
||||
animation: 0,
|
||||
multiple: false,
|
||||
check_callback: function (operation, node, node_parent, node_position, more) {
|
||||
return operation === 'move_node' ? true : false;
|
||||
},
|
||||
themes: {"theme": "default", "dots": false, "stripes": true, icons: false},
|
||||
},
|
||||
"checkbox": {
|
||||
//visible: false,
|
||||
whole_node: false,
|
||||
tie_selection: false,
|
||||
three_state: false
|
||||
//keep_selected_style : false
|
||||
//cascade: 'down'
|
||||
},
|
||||
"plugins": [
|
||||
"dnd", "checkbox", "wholerow", "search"
|
||||
]
|
||||
}).on("click.jstree", function (e, data) {
|
||||
var $el = $(e.target);
|
||||
if ($el.is('a')) {
|
||||
e.stopPropagation();
|
||||
e.stopImmediatePropagation();
|
||||
|
||||
if($el.hasClass('enable') || $el.hasClass('delete')) {
|
||||
if($el.hasClass('enable') )
|
||||
enable_node($el, $tree.jstree('get_node', e.target));
|
||||
else if($el.hasClass('delete') )
|
||||
delete_node($el, $tree.jstree('get_node', e.target));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}).on("move_node.jstree", function (e, data) {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
'object': 'page',
|
||||
'action': 'move',
|
||||
'id': data.node.id,
|
||||
'values': {
|
||||
'parent': data.parent === "#" ? 28 : data.parent,
|
||||
'position':data.position
|
||||
},
|
||||
'session_id': '{/literal}{$smarty.session.id}{literal}'
|
||||
},
|
||||
success: function (data) {
|
||||
return;
|
||||
}
|
||||
});
|
||||
}).on("ready.jstree", function (e, data){
|
||||
//$tree.jstree('open_all');
|
||||
$tree.show();
|
||||
$.each(data.instance.get_json(null, {flat: true}), function(index, node) {
|
||||
$tree.jstree('set_id', node.id, node.data.id);
|
||||
});
|
||||
});
|
||||
|
||||
$("#search").submit(function (e) {
|
||||
e.preventDefault();
|
||||
$tree.jstree("search", $("#search .search").val());
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#collapse_all').click(function () {
|
||||
$tree.jstree('close_all');
|
||||
return false;
|
||||
});
|
||||
$('#expand_all').click(function () {
|
||||
$tree.jstree('open_all');
|
||||
return false;
|
||||
});
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function () {
|
||||
$tree.jstree('check_all');
|
||||
});
|
||||
|
||||
$form.submit(function (e) {
|
||||
// Подтвердить удаление
|
||||
if ($('select[name="action"]').val() === 'delete' && !confirm("Подтвердите удаление.\n\nВнимание!\nБудут удалены ВСЕ страницы, включая дочерние к выбранным!"))
|
||||
return false;
|
||||
|
||||
var inp = document.createElement("INPUT");
|
||||
inp.name = 'check[]';
|
||||
inp.type = "hidden";
|
||||
$($tree.jstree("get_checked", true)).each(function() {
|
||||
$form.append($(inp).clone().val(this.data.id));
|
||||
});
|
||||
//return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
172
simpla/design/html/settings.tpl
Normal file
@@ -0,0 +1,172 @@
|
||||
{capture name=tabs}
|
||||
<li class="active"><a href="index.php?module=SettingsAdmin">Настройки</a></li>
|
||||
{if in_array('currency', $manager->permissions)}<li><a href="index.php?module=CurrencyAdmin">Валюты</a></li>{/if}
|
||||
{if in_array('delivery', $manager->permissions)}<li><a href="index.php?module=DeliveriesAdmin">Доставка</a></li>{/if}
|
||||
{if in_array('payment', $manager->permissions)}<li><a href="index.php?module=PaymentMethodsAdmin">Оплата</a></li>{/if}
|
||||
{if in_array('managers', $manager->permissions)}<li><a href="index.php?module=ManagersAdmin">Менеджеры</a></li>{/if}
|
||||
{if in_array('maillist', $manager->permissions)}<li><a href="index.php?module=MailingMethodsAdmin">Рассылка</a></li>{/if}
|
||||
{/capture}
|
||||
|
||||
{$meta_title = "Настройки" scope=parent}
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success == 'saved'}Настройки сохранены{/if}</span>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error == 'watermark_is_not_writable'}Установите права на запись для файла {$config->watermark_file}{/if}</span>
|
||||
<a class="button" href="">Вернуться</a>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product enctype="multipart/form-data">
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<!-- Параметры -->
|
||||
<div class="block">
|
||||
<h2>Настройки сайта</h2>
|
||||
<ul>
|
||||
<li><label class=property>Имя сайта</label><input name="site_name" class="simpla_inp" type="text" value="{$settings->site_name|escape}" /></li>
|
||||
<li><label class=property>Имя компании</label><input name="company_name" class="simpla_inp" type="text" value="{$settings->company_name|escape}" /></li>
|
||||
<li><label class=property>Формат даты</label><input name="date_format" class="simpla_inp" type="text" value="{$settings->date_format|escape}" /></li>
|
||||
<li><label class=property>Email для восстановления пароля</label><input name="admin_email" class="simpla_inp" type="text" value="{$settings->admin_email|escape}" /></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="block layer">
|
||||
<h2>Оповещения</h2>
|
||||
<ul>
|
||||
<li><label class=property>Оповещение о заказах</label><input name="order_email" class="simpla_inp" type="text" value="{$settings->order_email|escape}" /></li>
|
||||
<li><label class=property>Оповещение о комментариях</label><input name="comment_email" class="simpla_inp" type="text" value="{$settings->comment_email|escape}" /></li>
|
||||
<li><label class=property>Обратный адрес оповещений</label><input name="notify_from_email" class="simpla_inp" type="text" value="{$settings->notify_from_email|escape}" /></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="block layer">
|
||||
<h2>Раздел "Услуги"</h2>
|
||||
<ul>
|
||||
<li><label class=property>Оповещение о заполненных формах</label><input name="form_email" class="simpla_inp" type="text" value="{$settings->form_email|escape}" /></li>
|
||||
<li><label class=property>Префикс заголовков в оповещениях</label><input name="form_prefix" class="simpla_inp" type="text" value="{$settings->form_prefix|escape}" /></li>
|
||||
<li><label class=property>Сообщение об успешной отправке</label><input name="form_sent" class="simpla_inp" type="text" value="{$settings->form_sent|escape}" /></li>
|
||||
<li><label class=property>Сообщение об ошибке</label><input name="form_fail" class="simpla_inp" type="text" value="{$settings->form_fail|escape}" /></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Параметры (The End)-->
|
||||
|
||||
|
||||
<div class="block layer">
|
||||
<h2>EMS настройка</h2>
|
||||
<ul>
|
||||
<li><label class=property>Точка отправления</label>
|
||||
<select name="emsfrom" class="simpla_inp">
|
||||
{foreach $cities AS $k=>$c}
|
||||
<option value="{$k}" {if $k==$settings->emsfrom}selected="selected"{/if}>{$c}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</li>
|
||||
<li><label class=property>со страхованием (1% от суммы заказа)</label>
|
||||
<input name=emstax value='1' type="checkbox" {if $settings->emstax}checked{/if}/>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры (The End)-->
|
||||
|
||||
<!-- Параметры -->
|
||||
<div class="block layer">
|
||||
<h2>Формат цены</h2>
|
||||
<ul>
|
||||
<li><label class=property>Разделитель копеек</label>
|
||||
<select name="decimals_point" class="simpla_inp">
|
||||
<option value='.' {if $settings->decimals_point == '.'}selected{/if}>точка: 12.45 рублей</option>
|
||||
<option value=',' {if $settings->decimals_point == ','}selected{/if}>запятая: 12,45 рублей</option>
|
||||
</select>
|
||||
</li>
|
||||
<li><label class=property>Разделитель тысяч</label>
|
||||
<select name="thousands_separator" class="simpla_inp">
|
||||
<option value='' {if $settings->thousands_separator == ''}selected{/if}>без разделителя: 1245678 рублей</option>
|
||||
<option value=' ' {if $settings->thousands_separator == ' '}selected{/if}>пробел: 1 245 678 рублей</option>
|
||||
<option value=',' {if $settings->thousands_separator == ','}selected{/if}>запятая: 1,245,678 рублей</option>
|
||||
</select>
|
||||
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры (The End)-->
|
||||
|
||||
<!-- Параметры -->
|
||||
<div class="block layer">
|
||||
<h2>Настройки каталога</h2>
|
||||
<ul>
|
||||
<li><label class=property>Товаров на странице сайта</label><input name="products_num" class="simpla_inp" type="text" value="{$settings->products_num|escape}" /></li>
|
||||
<li><label class=property>Товаров на странице админки</label><input name="products_num_admin" class="simpla_inp" type="text" value="{$settings->products_num_admin|escape}" /></li>
|
||||
<li><label class=property>Максимум товаров в заказе</label><input name="max_order_amount" class="simpla_inp" type="text" value="{$settings->max_order_amount|escape}" /></li>
|
||||
<li><label class=property>Единицы измерения товаров</label><input name="units" class="simpla_inp" type="text" value="{$settings->units|escape}" /></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры (The End)-->
|
||||
|
||||
<!-- Параметры -->
|
||||
<div class="block layer">
|
||||
<h2>Изображения товаров</h2>
|
||||
|
||||
<ul>
|
||||
<li><label class=property>Водяной знак</label>
|
||||
<input name="watermark_file" class="simpla_inp" type="file" />
|
||||
|
||||
<img style='display:block; border:1px solid #d0d0d0; margin:10px 0 10px 0;' src="{$config->root_url}/{$config->watermark_file}?{math equation='rand(10,10000)'}">
|
||||
</li>
|
||||
<li><label class=property>Горизонтальное положение водяного знака</label><input name="watermark_offset_x" class="simpla_inp" type="text" value="{$settings->watermark_offset_x|escape}" /> %</li>
|
||||
<li><label class=property>Вертикальное положение водяного знака</label><input name="watermark_offset_y" class="simpla_inp" type="text" value="{$settings->watermark_offset_y|escape}" /> %</li>
|
||||
<li><label class=property>Прозрачность знака (больше — прозрачней)</label><input name="watermark_transparency" class="simpla_inp" type="text" value="{$settings->watermark_transparency|escape}" /> %</li>
|
||||
<li><label class=property>Резкость изображений (рекомендуется 20%)</label><input name="images_sharpen" class="simpla_inp" type="text" value="{$settings->images_sharpen|escape}" /> %</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры (The End)-->
|
||||
|
||||
|
||||
<!-- Параметры -->
|
||||
<div class="block layer">
|
||||
<h2>Интеграция с <a href="http://prostiezvonki.ru">простыми звонками</a></h2>
|
||||
<ul>
|
||||
<li><label class=property>Сервер</label><input name="pz_server" class="simpla_inp" type="text" value="{$settings->pz_server|escape}" /></li>
|
||||
<li><label class=property>Пароль</label><input name="pz_password" class="simpla_inp" type="text" value="{$settings->pz_password|escape}" /></li>
|
||||
<li><label class=property>Телефоны менеджеров:</label></li>
|
||||
{foreach $managers as $manager}
|
||||
<li><label class=property>{$manager->login}</label><input name="pz_phones[{$manager->login}]" class="simpla_inp" type="text" value="{$settings->pz_phones[$manager->login]|escape}" /></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Параметры (The End)-->
|
||||
|
||||
<input class="button_green button_save" type="submit" name="save" value="Сохранить" />
|
||||
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
$('#change_password_form').hide();
|
||||
$('#change_password').click(function() {
|
||||
$('#change_password_form').show();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
250
simpla/design/html/stats.tpl
Normal file
@@ -0,0 +1,250 @@
|
||||
{capture name=tabs}
|
||||
<li class="active"><a href="{url module=StatsAdmin}">Статистика</a></li>
|
||||
{/capture}
|
||||
{$meta_title='Статистика' scope=parent}
|
||||
|
||||
{* On document load *}
|
||||
{literal}
|
||||
<script src="design/js/highcharts/js/highcharts.js" type="text/javascript"></script>
|
||||
|
||||
<script>
|
||||
var chart;
|
||||
|
||||
$(function() {
|
||||
|
||||
|
||||
var options = {
|
||||
chart: {
|
||||
zoomType: 'x',
|
||||
type: 'column',
|
||||
renderTo: 'container',
|
||||
defaultSeriesType: 'line'
|
||||
},
|
||||
title: {
|
||||
text: 'Статистика заказов'
|
||||
},
|
||||
subtitle: {
|
||||
text: ''
|
||||
},
|
||||
xAxis: {
|
||||
type: 'datetime'
|
||||
},
|
||||
yAxis: {
|
||||
title: {
|
||||
text: '{/literal}{$currency->name}{literal}'
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
plotOptions: {
|
||||
line: {
|
||||
dataLabels: {
|
||||
enabled: true
|
||||
},
|
||||
enableMouseTracking: true
|
||||
}
|
||||
},
|
||||
series: []
|
||||
|
||||
};
|
||||
|
||||
$.get('ajax/stat/stat.php', function(data) {
|
||||
|
||||
var series = {
|
||||
data: []
|
||||
};
|
||||
|
||||
series.name = 'Сумма заказов, {/literal}{$currency->sign}{literal}';
|
||||
|
||||
d = new Date();
|
||||
for(i=0; i<365; i++)
|
||||
{
|
||||
//series.data.push([Date.UTC(1900+d.getYear(), d.getMonth(), d.getDate()), 0]);
|
||||
d.setDate(d.getDate()-1);
|
||||
}
|
||||
|
||||
// Iterate over the lines and add categories or series
|
||||
$.each(data, function(lineNo, line) {
|
||||
series.data.push([Date.UTC(line.year, line.month-1, line.day), parseInt(line.y)]);
|
||||
});
|
||||
options.series.push(series);
|
||||
|
||||
// Create the chart
|
||||
var chart = new Highcharts.Chart(options);
|
||||
});
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
Highcharts.theme = {
|
||||
colors: ["#DDDF0D", "#7798BF", "#55BF3B", "#DF5353", "#aaeeee", "#ff0066", "#eeaaee",
|
||||
"#55BF3B", "#DF5353", "#7798BF", "#aaeeee"],
|
||||
chart: {
|
||||
backgroundColor: {
|
||||
linearGradient: [0, 0, 0, 400],
|
||||
stops: [
|
||||
[0, 'rgb(96, 96, 96)'],
|
||||
[1, 'rgb(16, 16, 16)']
|
||||
]
|
||||
},
|
||||
borderWidth: 0,
|
||||
borderRadius: 15,
|
||||
plotBackgroundColor: null,
|
||||
plotShadow: false,
|
||||
plotBorderWidth: 0
|
||||
},
|
||||
title: {
|
||||
style: {
|
||||
color: '#FFF',
|
||||
font: '16px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
|
||||
}
|
||||
},
|
||||
subtitle: {
|
||||
style: {
|
||||
color: '#DDD',
|
||||
font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
gridLineWidth: 0,
|
||||
lineColor: '#999',
|
||||
tickColor: '#999',
|
||||
labels: {
|
||||
style: {
|
||||
color: '#999',
|
||||
fontWeight: 'bold'
|
||||
}
|
||||
},
|
||||
title: {
|
||||
style: {
|
||||
color: '#AAA',
|
||||
font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
|
||||
}
|
||||
}
|
||||
},
|
||||
yAxis: {
|
||||
alternateGridColor: null,
|
||||
minorTickInterval: null,
|
||||
gridLineColor: 'rgba(255, 255, 255, .1)',
|
||||
lineWidth: 0,
|
||||
tickWidth: 0,
|
||||
labels: {
|
||||
style: {
|
||||
color: '#999',
|
||||
fontWeight: 'bold'
|
||||
}
|
||||
},
|
||||
title: {
|
||||
style: {
|
||||
color: '#AAA',
|
||||
font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
|
||||
}
|
||||
}
|
||||
},
|
||||
legend: {
|
||||
itemStyle: {
|
||||
color: '#CCC'
|
||||
},
|
||||
itemHoverStyle: {
|
||||
color: '#FFF'
|
||||
},
|
||||
itemHiddenStyle: {
|
||||
color: '#333'
|
||||
}
|
||||
},
|
||||
labels: {
|
||||
style: {
|
||||
color: '#CCC'
|
||||
}
|
||||
},
|
||||
tooltip: {
|
||||
backgroundColor: {
|
||||
linearGradient: [0, 0, 0, 50],
|
||||
stops: [
|
||||
[0, 'rgba(96, 96, 96, .8)'],
|
||||
[1, 'rgba(16, 16, 16, .8)']
|
||||
]
|
||||
},
|
||||
borderWidth: 0,
|
||||
style: {
|
||||
color: '#FFF'
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
plotOptions: {
|
||||
line: {
|
||||
dataLabels: {
|
||||
color: '#CCC'
|
||||
},
|
||||
marker: {
|
||||
lineColor: '#333'
|
||||
}
|
||||
},
|
||||
spline: {
|
||||
marker: {
|
||||
lineColor: '#333'
|
||||
}
|
||||
},
|
||||
scatter: {
|
||||
marker: {
|
||||
lineColor: '#333'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
toolbar: {
|
||||
itemStyle: {
|
||||
color: '#CCC'
|
||||
}
|
||||
},
|
||||
|
||||
navigation: {
|
||||
buttonOptions: {
|
||||
backgroundColor: {
|
||||
linearGradient: [0, 0, 0, 20],
|
||||
stops: [
|
||||
[0.4, '#606060'],
|
||||
[0.6, '#333333']
|
||||
]
|
||||
},
|
||||
borderColor: '#000000',
|
||||
symbolStroke: '#C0C0C0',
|
||||
hoverSymbolStroke: '#FFFFFF'
|
||||
}
|
||||
},
|
||||
|
||||
exporting: {
|
||||
buttons: {
|
||||
exportButton: {
|
||||
symbolFill: '#55BE3B'
|
||||
},
|
||||
printButton: {
|
||||
symbolFill: '#7797BE'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// special colors for some of the demo examples
|
||||
legendBackgroundColor: 'rgba(48, 48, 48, 0.8)',
|
||||
legendBackgroundColorSolid: 'rgb(70, 70, 70)',
|
||||
dataLabelsColor: '#444',
|
||||
textColor: '#E0E0E0',
|
||||
maskColor: 'rgba(255,255,255,0.3)'
|
||||
};
|
||||
|
||||
// Apply the theme
|
||||
var highchartsOptions = Highcharts.setOptions(Highcharts.theme);
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
|
||||
<div>
|
||||
<div id='container'>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
124
simpla/design/html/styles.tpl
Normal file
@@ -0,0 +1,124 @@
|
||||
{capture name=tabs}
|
||||
<li><a href="index.php?module=ThemeAdmin">Тема</a></li>
|
||||
<li><a href="index.php?module=TemplatesAdmin">Шаблоны</a></li>
|
||||
<li class="active"><a href="index.php?module=StylesAdmin">Стили</a></li>
|
||||
<li><a href="index.php?module=ImagesAdmin">Изображения</a></li>
|
||||
{/capture}
|
||||
|
||||
{if $style_file}
|
||||
{$meta_title = "Стиль $style_file" scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Подключаем редактор кода *}
|
||||
<link rel="stylesheet" href="design/js/codemirror/lib/codemirror.css">
|
||||
<script src="design/js/codemirror/lib/codemirror.js"></script>
|
||||
<script src="design/js/codemirror/lib/overlay.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="design/js/codemirror/mode/css/css.css">
|
||||
<script src="design/js/codemirror/mode/css/css.js"></script>
|
||||
|
||||
{literal}
|
||||
<style type="text/css">
|
||||
.CodeMirror {font-family:'Courier New'; padding-bottom:20px; margin-bottom:10px; border:1px solid #c0c0c0; background-color: #ffffff; height: auto; min-height: 300px; width:100%;}
|
||||
.activeline {background: #f0fcff !important;}
|
||||
.smarty {color: #ff008a;}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
// Сохранение кода аяксом
|
||||
function save()
|
||||
{
|
||||
$('.CodeMirror').css('background-color','#e0ffe0');
|
||||
content = editor.getValue();
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/save_style.php',
|
||||
data: {'content': content, 'theme':'{/literal}{$theme}{literal}', 'style': '{/literal}{$style_file}{literal}', 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
|
||||
$('.CodeMirror').animate({'background-color': '#ffffff'});
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
}
|
||||
|
||||
// Нажали кнопку Сохранить
|
||||
$('input[name="save"]').click(function() {
|
||||
save();
|
||||
});
|
||||
|
||||
// Обработка ctrl+s
|
||||
var isCtrl = false;
|
||||
var isCmd = false;
|
||||
$(document).keyup(function (e) {
|
||||
if(e.which == 17) isCtrl=false;
|
||||
if(e.which == 91) isCmd=false;
|
||||
}).keydown(function (e) {
|
||||
if(e.which == 17) isCtrl=true;
|
||||
if(e.which == 91) isCmd=true;
|
||||
if(e.which == 83 && (isCtrl || isCmd)) {
|
||||
save();
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
<h1>Тема {$theme}, стиль {$style_file}</h1>
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>
|
||||
{if $message_error == 'permissions'}Установите права на запись для файла {$style_file}
|
||||
{elseif $message_error == 'theme_locked'}Текущая тема защищена от изменений. Создайте копию темы.
|
||||
{else}{$message_error}{/if}
|
||||
</span>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
<!-- Список файлов для выбора -->
|
||||
<div class="block layer">
|
||||
<div class="templates_names">
|
||||
{foreach item=s from=$styles}
|
||||
<a {if $style_file == $s}class="selected"{/if} href='index.php?module=StylesAdmin&file={$s}'>{$s}</a>
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{if $style_file}
|
||||
<div class="block">
|
||||
<form>
|
||||
<textarea id="content" name="content" style="width:700px;height:500px;">{$style_content|escape}</textarea>
|
||||
</form>
|
||||
|
||||
<input class="button_green button_save" type="button" name="save" value="Сохранить" />
|
||||
<div class="block">
|
||||
|
||||
|
||||
{* Подключение редактора *}
|
||||
{literal}
|
||||
<script>
|
||||
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById("content"), {
|
||||
mode: {name: "css"},
|
||||
lineNumbers: true,
|
||||
matchBrackets: false,
|
||||
enterMode: 'keep',
|
||||
indentWithTabs: false,
|
||||
indentUnit: 1,
|
||||
tabMode: 'classic',
|
||||
onCursorActivity: function() {
|
||||
editor.setLineClass(hlLine, null);
|
||||
hlLine = editor.setLineClass(editor.getCursor().line, "activeline");
|
||||
}
|
||||
});
|
||||
var hlLine = editor.setLineClass(0, "activeline");
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
{/if}
|
||||
141
simpla/design/html/templates.tpl
Normal file
@@ -0,0 +1,141 @@
|
||||
{capture name=tabs}
|
||||
<li><a href="index.php?module=ThemeAdmin">Тема</a></li>
|
||||
<li class="active"><a href="index.php?module=TemplatesAdmin">Шаблоны</a></li>
|
||||
<li><a href="index.php?module=StylesAdmin">Стили</a></li>
|
||||
<li><a href="index.php?module=ImagesAdmin">Изображения</a></li>
|
||||
{/capture}
|
||||
|
||||
{if $template_file}
|
||||
{$meta_title = "Шаблон $template_file" scope=parent}
|
||||
{/if}
|
||||
|
||||
{* Подключаем редактор кода *}
|
||||
<link rel="stylesheet" href="design/js/codemirror/lib/codemirror.css">
|
||||
<script src="design/js/codemirror/lib/codemirror.js"></script>
|
||||
<script src="design/js/codemirror/lib/overlay.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="design/js/codemirror/mode/xml/xml.css">
|
||||
<script src="design/js/codemirror/mode/xml/xml.js"></script>
|
||||
|
||||
{literal}
|
||||
<style type="text/css">
|
||||
.CodeMirror {font-family:'Courier New';padding-bottom:20px; margin-bottom:10px; border:1px solid #c0c0c0; background-color: #ffffff; height: auto; min-height: 300px; width:100%;}
|
||||
.activeline {background: #f0fcff !important;}
|
||||
.smarty {color: #ff008a;}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
// Сохранение кода аяксом
|
||||
function save()
|
||||
{
|
||||
$('.CodeMirror').css('background-color','#e0ffe0');
|
||||
content = editor.getValue();
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/save_template.php',
|
||||
data: {'content': content, 'theme':'{/literal}{$theme}{literal}', 'template': '{/literal}{$template_file}{literal}', 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
|
||||
$('.CodeMirror').animate({'background-color': '#ffffff'});
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
}
|
||||
|
||||
// Нажали кнопку Сохранить
|
||||
$('input[name="save"]').click(function() {
|
||||
save();
|
||||
});
|
||||
|
||||
// Обработка ctrl+s
|
||||
var isCtrl = false;
|
||||
var isCmd = false;
|
||||
$(document).keyup(function (e) {
|
||||
if(e.which == 17) isCtrl=false;
|
||||
if(e.which == 91) isCmd=false;
|
||||
}).keydown(function (e) {
|
||||
if(e.which == 17) isCtrl=true;
|
||||
if(e.which == 91) isCmd=true;
|
||||
if(e.which == 83 && (isCtrl || isCmd)) {
|
||||
save();
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
<h1>Тема {$theme}, шаблон {$template_file}</h1>
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>
|
||||
{if $message_error == 'permissions'}Установите права на запись для файла {$template_file}
|
||||
{elseif $message_error == 'theme_locked'}Текущая тема защищена от изменений. Создайте копию темы.
|
||||
{else}{$message_error}{/if}
|
||||
</span>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
<!-- Список файлов для выбора -->
|
||||
<div class="block layer">
|
||||
<div class="templates_names">
|
||||
{foreach item=t from=$templates}
|
||||
<a {if $template_file == $t}class="selected"{/if} href='index.php?module=TemplatesAdmin&file={$t}'>{$t}</a>
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{if $template_file}
|
||||
<div class="block">
|
||||
<form>
|
||||
<textarea id="template_content" name="template_content" style="width:700px;height:500px;">{$template_content|escape}</textarea>
|
||||
</form>
|
||||
|
||||
<input class="button_green button_save" type="button" name="save" value="Сохранить" />
|
||||
</div>
|
||||
|
||||
{* Подключение редактора *}
|
||||
{literal}
|
||||
<script>
|
||||
CodeMirror.defineMode("smarty", function(config, parserConfig) {
|
||||
var smartyOverlay = {
|
||||
token: function(stream, state){
|
||||
|
||||
if (stream.match("{*"))
|
||||
return null;
|
||||
if (stream.match("{") && (stream.next()!=' ') && stream.next()!= null) {
|
||||
while ((ch = stream.next()) != null)
|
||||
if (ch == "}") break;
|
||||
return "smarty";
|
||||
}
|
||||
while (stream.next() != null && !stream.match('{', false)) {}
|
||||
return null;
|
||||
}
|
||||
};
|
||||
return CodeMirror.overlayParser(CodeMirror.getMode(config, parserConfig.backdrop || "text/html"), smartyOverlay);
|
||||
});
|
||||
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById("template_content"), {
|
||||
mode: {name: "smarty", htmlMode: true},
|
||||
|
||||
lineNumbers: true,
|
||||
matchBrackets: false,
|
||||
enterMode: 'keep',
|
||||
indentWithTabs: false,
|
||||
indentUnit: 1,
|
||||
tabMode: 'classic',
|
||||
onCursorActivity: function() {
|
||||
editor.setLineClass(hlLine, null);
|
||||
hlLine = editor.setLineClass(editor.getCursor().line, "activeline");
|
||||
}
|
||||
});
|
||||
var hlLine = editor.setLineClass(0, "activeline");
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
{/if}
|
||||
107
simpla/design/html/theme.tpl
Normal file
@@ -0,0 +1,107 @@
|
||||
{capture name=tabs}
|
||||
<li class="active"><a href="index.php?module=ThemeAdmin">Тема</a></li>
|
||||
<li><a href="index.php?module=TemplatesAdmin">Шаблоны</a></li>
|
||||
<li><a href="index.php?module=StylesAdmin">Стили</a></li>
|
||||
<li><a href="index.php?module=ImagesAdmin">Изображения</a></li>
|
||||
{/capture}
|
||||
|
||||
{if $theme->name}
|
||||
{$meta_title = "Тема {$theme->name}" scope=parent}
|
||||
{/if}
|
||||
|
||||
<script>
|
||||
{literal}
|
||||
|
||||
$(function() {
|
||||
|
||||
// Выбрать тему
|
||||
$('.set_main_theme').click(function() {
|
||||
$("form input[name=action]").val('set_main_theme');
|
||||
$("form input[name=theme]").val($(this).closest('li').attr('theme'));
|
||||
$("form").submit();
|
||||
});
|
||||
|
||||
// Клонировать текущую тему
|
||||
$('#header .add').click(function() {
|
||||
$("form input[name=action]").val('clone_theme');
|
||||
$("form").submit();
|
||||
});
|
||||
|
||||
// Редактировать название
|
||||
$("a.edit").click(function() {
|
||||
name = $(this).closest('li').attr('theme');
|
||||
inp1 = $('<input type=hidden name="old_name[]">').val(name);
|
||||
inp2 = $('<input type=text name="new_name[]">').val(name);
|
||||
$(this).closest('li').find("p.name").html('').append(inp1).append(inp2);
|
||||
inp2.focus().select();
|
||||
return false;
|
||||
});
|
||||
|
||||
// Удалить тему
|
||||
$('.delete').click(function() {
|
||||
$("form input[name=action]").val('delete_theme');
|
||||
$("form input[name=theme]").val($(this).closest('li').attr('theme'));
|
||||
$("form").submit();
|
||||
});
|
||||
|
||||
$("form").submit(function() {
|
||||
if($("form input[name=action]").val()=='delete_theme' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
{/literal}
|
||||
</script>
|
||||
|
||||
<div id="header">
|
||||
<h1 class="{if $theme->locked}locked{/if}">Текущая тема — {$theme->name}</h1>
|
||||
<a class="add" href="#">Создать копию темы {$settings->theme}</a>
|
||||
</div>
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error == 'permissions'}Установите права на запись для папки {$themes_dir}
|
||||
{elseif $message_error == 'name_exists'}Тема с таким именем уже существует
|
||||
{else}{$message_error}{/if}</span>
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
<div class="block layer">
|
||||
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
<input type=hidden name="action">
|
||||
<input type=hidden name="theme">
|
||||
|
||||
<ul class="themes">
|
||||
{foreach $themes as $t}
|
||||
<li theme='{$t->name|escape}'>
|
||||
{if $theme->name == $t->name}<img class="tick" src='design/images/tick.png'> {/if}
|
||||
{if $t->locked}<img class="tick" src='design/images/lock_small.png'> {/if}
|
||||
{if $theme->name != $t->name && !$t->locked}
|
||||
<a href='#' title="Удалить" class='delete'><img src='design/images/delete.png'></a>
|
||||
<a href='#' title="Переименовать" class='edit'><img src='design/images/pencil.png'></a>
|
||||
{elseif $theme->name != $t->name}
|
||||
{*<a href='#' title="Выбрать" class='select set_main_theme'><img src='design/images/tick.png'></a>*}
|
||||
{elseif !$t->locked}
|
||||
<a href='#' title="Удалить" class='delete'><img src='design/images/delete.png'></a>
|
||||
<a href='#' title="Изменить название" class='edit'><img src='design/images/pencil.png'></a>
|
||||
{/if}
|
||||
{if $theme->name == $t->name}
|
||||
<p class=name>{$t->name|escape|truncate:16:'...'}</p>
|
||||
{else}
|
||||
<p class=name><a href='#' class='set_main_theme'>{$t->name|escape|truncate:16:'...'}</a></p>
|
||||
{/if}
|
||||
<a href="index.php?module=TemplatesAdmin"><img class="preview" src='{$root_dir}../design/{$t->name}/preview.png'></a>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
|
||||
<div class="block">
|
||||
<input class="button_green button_save" type="submit" name="save" value="Сохранить" />
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
77
simpla/design/html/tinymce_init.tpl
Normal file
@@ -0,0 +1,77 @@
|
||||
|
||||
|
||||
<script type="text/javascript" src="design/js/ckeditor/ckeditor.js"></script>
|
||||
|
||||
<script>
|
||||
var tinyMCE = {
|
||||
get:function(){}
|
||||
}
|
||||
$(function(){
|
||||
$('.editor_large, .editor_small').each(function(){
|
||||
var name = $(this).attr('name');
|
||||
CKEDITOR.replace( name, {
|
||||
height:400
|
||||
});
|
||||
});
|
||||
/*
|
||||
CKEDITOR.replace( 'body', {
|
||||
height:400
|
||||
});
|
||||
CKEDITOR.replace( 'annotation', {
|
||||
height:400
|
||||
});
|
||||
*/
|
||||
});
|
||||
</script>
|
||||
|
||||
{*
|
||||
|
||||
<script language="javascript" type="text/javascript" src="design/js/tiny_mce/plugins/smimage/smplugins.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="design/js/tiny_mce/tiny_mce.js"></script>
|
||||
<script language="javascript">
|
||||
|
||||
tinyMCE.init({literal}{{/literal}
|
||||
// General options
|
||||
mode : "specific_textareas",
|
||||
editor_selector : /editor/,
|
||||
theme : "advanced",
|
||||
language : "ru",
|
||||
theme_advanced_path : false,
|
||||
apply_source_formatting : false,
|
||||
plugins : "jaretypograph,smimage,smeditimage,smexplorer,safari,spellchecker,style,table,save,advimage,advlink,autolink,inlinepopups,media,contextmenu,paste,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras",
|
||||
relative_urls : false,
|
||||
remove_script_host : false,
|
||||
convert_urls : true,
|
||||
verify_html: false,
|
||||
remove_linebreaks : false,
|
||||
content_css :"../design/{$settings->theme}/css/style.css",
|
||||
spellchecker_languages : "+Russian=ru,+English=en",
|
||||
valid_elements : "*[*]",
|
||||
extended_valid_elements : "*[*],script[charset|defer|language|src|type],style",
|
||||
|
||||
// Theme options
|
||||
theme_advanced_buttons1 : "save,newdocument,|,paste,pastetext,pasteword,|,undo,redo,|,bold,italic,underline,strikethrough,|,sub,sup,|,bullist,numlist,|,justifyleft,justifycenter,justifyright,justifyfull,|,forecolor,backcolor,|,styleselect,formatselect,fontselect,fontsizeselect",
|
||||
theme_advanced_buttons2 : "tablecontrols,|,link,unlink,anchor,smimage,smeditimage,smexplorer,charmap,nonbreaking,|,styleprops,attribs,|,jaretypograph,removeformat,cleanup,spellchecker,|,visualaid,fullscreen,code",
|
||||
theme_advanced_buttons3 : "",
|
||||
theme_advanced_buttons4 : "",
|
||||
theme_advanced_toolbar_location : "top",
|
||||
theme_advanced_toolbar_align : "left",
|
||||
theme_advanced_statusbar_location : "bottom",
|
||||
theme_advanced_resizing : true,
|
||||
|
||||
file_browser_callback : "SMPlugins",
|
||||
plugin_smexplorer_directory : "{$config->subfolder}files/uploads",
|
||||
plugin_smimage_directory : "{$config->subfolder}files/uploads",
|
||||
|
||||
setup : function(ed) {
|
||||
if(typeof set_meta == 'function')
|
||||
{
|
||||
ed.onKeyUp.add(set_meta);
|
||||
ed.onChange.add(set_meta);
|
||||
}
|
||||
}
|
||||
|
||||
{literal}}{/literal});
|
||||
|
||||
</script>
|
||||
*}
|
||||
176
simpla/design/html/user.tpl
Normal file
@@ -0,0 +1,176 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li class="active"><a href="index.php?module=UsersAdmin">Покупатели</a></li>
|
||||
{if in_array('groups', $manager->permissions)}<li><a href="index.php?module=GroupsAdmin">Группы</a></li>{/if}
|
||||
{if in_array('coupons', $manager->permissions)}<li><a href="index.php?module=CouponsAdmin">Купоны</a></li>{/if}
|
||||
{/capture}
|
||||
|
||||
{if $user->id}
|
||||
{$meta_title = $user->name|escape scope=parent}
|
||||
{/if}
|
||||
|
||||
{if $message_success}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_success">
|
||||
<span>{if $message_success=='updated'}Пользователь отредактирован{else}{$message_success|escape}{/if}</span>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
{if $message_error}
|
||||
<!-- Системное сообщение -->
|
||||
<div class="message message_error">
|
||||
<span>{if $message_error=='login_exists'}Пользователь с таким email уже зарегистрирован
|
||||
{elseif $message_error=='empty_name'}Введите имя пользователя
|
||||
{elseif $message_error=='empty_email'}Введите email пользователя
|
||||
{else}{$message_error|escape}{/if}</span>
|
||||
{if $smarty.get.return}
|
||||
<a class="button" href="{$smarty.get.return}">Вернуться</a>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- Системное сообщение (The End)-->
|
||||
{/if}
|
||||
|
||||
|
||||
|
||||
<!-- Основная форма -->
|
||||
<form method=post id=product>
|
||||
<input type=hidden name="session_id" value="{$smarty.session.id}">
|
||||
<div id="name">
|
||||
<input class="name" name=name type="text" value="{$user->name|escape}"/>
|
||||
<input name=id type="hidden" value="{$user->id|escape}"/>
|
||||
<div class="checkbox">
|
||||
<input name="enabled" value='1' type="checkbox" id="active_checkbox" {if $user->enabled}checked{/if}/> <label for="active_checkbox">Активен</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id=column_left>
|
||||
<!-- Левая колонка свойств товара -->
|
||||
|
||||
<!-- Параметры страницы -->
|
||||
<div class="block">
|
||||
<ul>
|
||||
{if $groups}
|
||||
<li>
|
||||
<label class=property>Группа</label>
|
||||
<select name="group_id">
|
||||
<option value='0'>Не входит в группу</option>
|
||||
{foreach from=$groups item=g}
|
||||
<option value='{$g->id}' {if $user->group_id == $g->id}selected{/if}>{$g->name|escape}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</li>
|
||||
{/if}
|
||||
<li><label class=property>Email</label><input name="email" class="simpla_inp" type="text" value="{$user->email|escape}" /></li>
|
||||
<li><label class=property>Дата регистрации</label><input name="email" class="simpla_inp" type="text" disabled value="{$user->created|date}" /></li>
|
||||
<li><label class=property>Последний IP</label><input name="email" class="simpla_inp" type="text" disabled value="{$user->last_ip|escape}" /></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- Параметры страницы (The End)-->
|
||||
|
||||
<input class="button_green button_save" type="submit" name="user_info" value="Сохранить" />
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Левая колонка свойств товара (The End)-->
|
||||
|
||||
|
||||
</form>
|
||||
<!-- Основная форма (The End) -->
|
||||
|
||||
|
||||
{if $orders}
|
||||
<div class="block" id=column_left>
|
||||
<form id="list" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
<h2>Заказы пользователя</h2>
|
||||
|
||||
<div>
|
||||
{foreach $orders as $order}
|
||||
<div class="{if $order->paid}green{/if} row">
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$order->id}" />
|
||||
</div>
|
||||
<div class="order_date cell">
|
||||
{$order->date|date} {$order->date|time}
|
||||
</div>
|
||||
<div class="name cell">
|
||||
<a href="{url module=OrderAdmin id=$order->id return=$smarty.server.REQUEST_URI}">Заказ №{$order->id}</a>
|
||||
</div>
|
||||
<div class="name cell">
|
||||
{$order->total_price} {$currency->sign}
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
{if $order->paid}
|
||||
<img src='design/images/cash_stack.png' alt='Оплачен' title='Оплачен'>
|
||||
{else}
|
||||
<img src='design/images/cash_stack_gray.png' alt='Не оплачен' title='Не оплачен'>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a href='#' class=delete></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id='check_all' class='dash_link'>Выбрать все</label>
|
||||
|
||||
<span id=select>
|
||||
<select name="action">
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
|
||||
<input id="apply_action" class="button_green" name="user_orders" type="submit" value="Применить">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
{* On document load *}
|
||||
{literal}
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', 1-$('#list input[type="checkbox"][name*="check"]').attr('checked'));
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form#list").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form#list").submit();
|
||||
});
|
||||
|
||||
// Подтверждение удаления
|
||||
$("#list").submit(function() {
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
184
simpla/design/html/users.tpl
Normal file
@@ -0,0 +1,184 @@
|
||||
{* Вкладки *}
|
||||
{capture name=tabs}
|
||||
<li class="active"><a href="index.php?module=UsersAdmin">Покупатели</a></li>
|
||||
{if in_array('groups', $manager->permissions)}<li><a href="index.php?module=GroupsAdmin">Группы</a></li>{/if}
|
||||
{if in_array('coupons', $manager->permissions)}<li><a href="index.php?module=CouponsAdmin">Купоны</a></li>{/if}
|
||||
{/capture}
|
||||
|
||||
{* Title *}
|
||||
{$meta_title='Покупатели' scope=parent}
|
||||
|
||||
{* Поиск *}
|
||||
{if $users || $keyword}
|
||||
<form method="get">
|
||||
<div id="search">
|
||||
<input type="hidden" name="module" value='UsersAdmin'>
|
||||
<input class="search" type="text" name="keyword" value="{$keyword|escape}" />
|
||||
<input class="search_button" type="submit" value=""/>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
|
||||
{* Заголовок *}
|
||||
<div id="header">
|
||||
{if $keyword && $users_count>0}
|
||||
<h1>{$users_count|plural:'Нашелся':'Нашлось':'Нашлись'} {$users_count} {$users_count|plural:'покупатель':'покупателей':'покупателя'}</h1>
|
||||
{elseif $users_count>0}
|
||||
<h1>{$users_count} {$users_count|plural:'покупатель':'покупателей':'покупателя'}</h1>
|
||||
{else}
|
||||
<h1>Нет покупателей</h1>
|
||||
{/if}
|
||||
|
||||
{if $users_count>0}
|
||||
<form method="post" action="{url module=ExportUsersAdmin}" target="_blank">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
<input type="image" src="./design/images/export_excel.png" name="export" title="Экспортировать этих покупателей">
|
||||
</form>
|
||||
{/if}
|
||||
|
||||
</div>
|
||||
|
||||
{if $users}
|
||||
<!-- Основная часть -->
|
||||
<div id="main_list">
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
<div id="sort_links" style='display:block;'>
|
||||
<!-- Ссылки для сортировки -->
|
||||
Упорядочить по
|
||||
{if $sort!='name'}<a href="{url sort=name}">имени</a>{else}имени{/if} или
|
||||
{if $sort!='date'}<a href="{url sort=date}">дате</a>{else}дате{/if}
|
||||
<!-- Ссылки для сортировки (The End) -->
|
||||
</div>
|
||||
|
||||
<form id="form_list" method="post">
|
||||
<input type="hidden" name="session_id" value="{$smarty.session.id}">
|
||||
|
||||
<div id="list">
|
||||
{foreach $users as $user}
|
||||
<div class="{if !$user->enabled}invisible{/if} row">
|
||||
<div class="checkbox cell">
|
||||
<input type="checkbox" name="check[]" value="{$user->id}"/>
|
||||
</div>
|
||||
<div class="user_name cell">
|
||||
<a href="index.php?module=UserAdmin&id={$user->id}">{$user->name|escape}</a>
|
||||
</div>
|
||||
<div class="user_email cell">
|
||||
<a href="mailto:{$user->name|escape}<{$user->email|escape}>">{$user->email|escape}</a>
|
||||
</div>
|
||||
<div class="user_group cell">
|
||||
{$groups[$user->group_id]->name}
|
||||
</div>
|
||||
<div class="icons cell">
|
||||
<a class="enable" title="Активен" href="#"></a>
|
||||
<a class="delete" title="Удалить" href="#"></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
<div id="action">
|
||||
<label id="check_all" class="dash_link">Выбрать все</label>
|
||||
|
||||
<span id=select>
|
||||
<select name="action">
|
||||
<option value="disable">Заблокировать</option>
|
||||
<option value="enable">Разблокировать</option>
|
||||
<option value="delete">Удалить</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<input id="apply_action" class="button_green" type="submit" value="Применить">
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<!-- Листалка страниц -->
|
||||
{include file='pagination.tpl'}
|
||||
<!-- Листалка страниц (The End) -->
|
||||
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<!-- Меню -->
|
||||
<div id="right_menu">
|
||||
<ul>
|
||||
<li {if !$group->id}class="selected"{/if}><a href='index.php?module=UsersAdmin'>Все группы</a></li>
|
||||
</ul>
|
||||
<!-- Группы -->
|
||||
{if $groups}
|
||||
<ul>
|
||||
{foreach $groups as $g}
|
||||
<li {if $group->id == $g->id}class="selected"{/if}><a href="index.php?module=UsersAdmin&group_id={$g->id}">{$g->name}</a></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
<!-- Группы (The End)-->
|
||||
|
||||
</div>
|
||||
<!-- Меню (The End) -->
|
||||
|
||||
|
||||
{literal}
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Раскраска строк
|
||||
function colorize()
|
||||
{
|
||||
$("#list div.row:even").addClass('even');
|
||||
$("#list div.row:odd").removeClass('even');
|
||||
}
|
||||
// Раскрасить строки сразу
|
||||
colorize();
|
||||
|
||||
// Выделить все
|
||||
$("#check_all").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', 1-$('#list input[type="checkbox"][name*="check"]').attr('checked'));
|
||||
});
|
||||
|
||||
// Удалить
|
||||
$("a.delete").click(function() {
|
||||
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
|
||||
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
|
||||
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
|
||||
$(this).closest("form").submit();
|
||||
});
|
||||
|
||||
// Скрыт/Видим
|
||||
$("a.enable").click(function() {
|
||||
var icon = $(this);
|
||||
var line = icon.closest(".row");
|
||||
var id = line.find('input[type="checkbox"][name*="check"]').val();
|
||||
var state = line.hasClass('invisible')?1:0;
|
||||
icon.addClass('loading_icon');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'ajax/update_object.php',
|
||||
data: {'object': 'user', 'id': id, 'values': {'enabled': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||||
success: function(data){
|
||||
icon.removeClass('loading_icon');
|
||||
if(state)
|
||||
line.removeClass('invisible');
|
||||
else
|
||||
line.addClass('invisible');
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Подтверждение удаления
|
||||
$("form").submit(function() {
|
||||
if($('#list input[type="checkbox"][name*="check"]:checked').length>0)
|
||||
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
BIN
simpla/design/images/accept.png
Normal file
|
After Width: | Height: | Size: 712 B |
BIN
simpla/design/images/bgd.jpg
Normal file
|
After Width: | Height: | Size: 7.8 KiB |
BIN
simpla/design/images/bgd.png
Normal file
|
After Width: | Height: | Size: 119 KiB |
BIN
simpla/design/images/bookmark.gif
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
simpla/design/images/bullet_delete.png
Normal file
|
After Width: | Height: | Size: 333 B |
BIN
simpla/design/images/bullet_error.png
Normal file
|
After Width: | Height: | Size: 368 B |
BIN
simpla/design/images/but_green.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
simpla/design/images/but_red.jpg
Normal file
|
After Width: | Height: | Size: 408 B |
BIN
simpla/design/images/but_search.gif
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
simpla/design/images/but_yellow.jpg
Normal file
|
After Width: | Height: | Size: 388 B |
BIN
simpla/design/images/cash_stack.png
Normal file
|
After Width: | Height: | Size: 685 B |
BIN
simpla/design/images/cash_stack_gray.png
Normal file
|
After Width: | Height: | Size: 540 B |
BIN
simpla/design/images/cd_add.png
Normal file
|
After Width: | Height: | Size: 884 B |
BIN
simpla/design/images/clock_history_frame.png
Normal file
|
After Width: | Height: | Size: 803 B |
BIN
simpla/design/images/clock_history_frame@2x.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
simpla/design/images/coin_stack_gold.png
Normal file
|
After Width: | Height: | Size: 791 B |
BIN
simpla/design/images/coin_stack_gold@2x.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
simpla/design/images/coin_stack_gold_off.png
Normal file
|
After Width: | Height: | Size: 730 B |
BIN
simpla/design/images/coin_stack_gold_off@2x.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
simpla/design/images/combobox.png
Normal file
|
After Width: | Height: | Size: 219 B |
BIN
simpla/design/images/cross-circle-frame.png
Normal file
|
After Width: | Height: | Size: 886 B |