first commit

This commit is contained in:
Konstantin
2026-05-30 09:27:58 +03:00
commit de0344d218
2371 changed files with 661486 additions and 0 deletions
@@ -0,0 +1,68 @@
<nav id="column-left">
<div id="navigation"><span class="fa fa-bars"></span> {{ text_navigation }}</div>
<ul id="menu">
{% set i = 0 %}
{% for menu in menus %}
<li id="{{ menu.id }}">
{% if menu.href %}<a href="{{ menu.href }}"><i class="fa {{ menu.icon }} fw"></i> {{ menu.name }}</a>{% else %}<a href="#collapse{{ i }}" data-toggle="collapse" class="parent collapsed"><i class="fa {{ menu.icon }} fw"></i> {{ menu.name }}</a>{% endif %}
{% if menu.children %}
<ul id="collapse{{ i }}" class="collapse">
{% set j = 0 %}
{% for children_1 in menu.children %}
<li>{% if children_1.href %}
<a href="{{ children_1.href }}">{{ children_1.name }}</a>
{% else %}
<a href="#collapse{{ i }}-{{ j }}" data-toggle="collapse" class="parent collapsed">{{ children_1.name }}</a>
{% endif %}
{% if children_1.children %}
<ul id="collapse{{ i }}-{{ j }}" class="collapse">
{% set k = 0 %}
{% for children_2 in children_1.children %}
<li>{% if children_2.href %}
<a href="{{ children_2.href }}">{{ children_2.name }}</a>
{% else %}
<a href="#collapse-{{ i }}-{{ j }}-{{ k }}" data-toggle="collapse" class="parent collapsed">{{ children_2.name }}</a>
{% endif %}
{% if children_2.children %}
<ul id="collapse-{{ i }}-{{ j }}-{{ k }}" class="collapse">
{% for children_3 in children_2.children %}
<li><a href="{{ children_3.href }}">{{ children_3.name }}</a></li>
{% endfor %}
</ul>
{% endif %}</li>
{% set k = k + 1 %}
{% endfor %}
</ul>
{% endif %} </li>
{% set j = j + 1 %}
{% endfor %}
</ul>
{% endif %}
</li>
{% set i = i + 1 %}
{% endfor %}
</ul>
<div id="stats">
<ul>
<li>
<div>{{ text_complete_status }} <span class="pull-right">{{ complete_status }}%</span></div>
<div class="progress">
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="{{ complete_status }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ complete_status }}%"> <span class="sr-only">{{ complete_status }}%</span></div>
</div>
</li>
<li>
<div>{{ text_processing_status }} <span class="pull-right">{{ processing_status }}%</span></div>
<div class="progress">
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="{{ processing_status }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ processing_status }}%"> <span class="sr-only">{{ processing_status }}%</span></div>
</div>
</li>
<li>
<div>{{ text_other_status }} <span class="pull-right">{{ other_status }}%</span></div>
<div class="progress">
<div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="{{ other_status }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ other_status }}%"> <span class="sr-only">{{ other_status }}%</span></div>
</div>
</li>
</ul>
</div>
</nav>
@@ -0,0 +1,58 @@
{{ header }}{{ column_left }}
<div id="content">
<div class="page-header">
<div class="container-fluid">
<div class="pull-right">
<button type="button" id="button-developer" title="{{ button_developer }}" data-loading-text="{{ text_loading }}" class="btn btn-info"><i class="fa fa-cog"></i></button>
</div>
<h1>{{ heading_title }}</h1>
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
</div>
</div>
<div class="container-fluid">{% if error_install %}
<div class="alert alert-danger alert-dismissible">
<button type="button" class="close pull-right" data-dismiss="alert">&times;</button>
<i class="fa fa-exclamation-circle"></i> {{ error_install }}</div>
{% endif %}
{% for row in rows %}
<div class="row">{% for dashboard_1 in row %}
{% set class = 'col-lg-%s %s'|format(dashboard_1.width, 'col-md-3 col-sm-6') %}
{% for dashboard_2 in row %}
{% if dashboard_2.width > 3 %}
{% set class = 'col-lg-%s %s'|format(dashboard_1.width, 'col-md-12 col-sm-12') %}
{% endif %}
{% endfor %}
<div class="{{ class }}">{{ dashboard_1.output }}</div>
{% endfor %}</div>
{% endfor %}</div>
{{ security }}
<script type="text/javascript"><!--
$('#button-developer').on('click', function() {
$.ajax({
url: 'index.php?route=common/developer&user_token={{ user_token }}',
dataType: 'html',
beforeSend: function() {
$('#button-developer').button('loading');
},
complete: function() {
$('#button-developer').button('reset');
},
success: function(html) {
$('#modal-developer').remove();
$('body').prepend('<div id="modal-developer" class="modal">' + html + '</div>');
$('#modal-developer').modal('show');
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
//--></script>
</div>
{{ footer }}
@@ -0,0 +1,117 @@
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title"><i class="fa fa-cog"></i> {{ heading_title }}</h4>
</div>
<div class="modal-body">
<table class="table table-bordered">
<thead>
<tr>
<td>{{ column_component }}</td>
<td style="width: 150px;">{{ entry_cache }}</td>
<td class="text-right" style="width: 1px;">{{ column_action }}</td>
</tr>
</thead>
<tr>
<td>{{ entry_theme }}</td>
<td ><div class="btn-group" data-toggle="buttons">{% if developer_theme %}
<label class="btn btn-success active" {% if not eval %}disabled="disabled"{% endif %}>
<input type="radio" name="developer_theme" value="1" autocomplete="off" {% if not eval %}disabled="disabled"{% endif %} checked/>
{{ button_on }}
</label>
{% else %}
<label class="btn btn-success" {% if not eval %}disabled="disabled"{% endif %}>
<input type="radio" name="developer_theme" value="1" autocomplete="off" {% if not eval %}disabled="disabled"{% endif %}/>
{{ button_on }}
</label>
{% endif %}
{% if not developer_theme %}
<label class="btn btn-danger active" {% if not eval %}disabled="disabled"{% endif %}>
<input type="radio" name="developer_theme" value="0" autocomplete="off" {% if not eval %}disabled="disabled"{% endif %} checked/>
{{ button_off }}
</label>
{% else %}
<label class="btn btn-danger" {% if not eval %}disabled="disabled"{% endif %}>
<input type="radio" name="developer_theme" value="0" autocomplete="off" {% if not eval %}disabled="disabled"{% endif %}/>
{{ button_off }}
</label>
{% endif %}</div></td>
<td class="text-right"><button type="button" value="theme" data-toggle="tooltip" title="{{ button_refresh }}" class="btn btn-warning"><i class="fa fa-refresh"></i></button></td>
</tr>
<tr>
<td colspan="2">{{ entry_systemcache }}</td>
<td class="text-right"><button type="button" value="systemcache" data-toggle="tooltip" title="{{ button_refresh }}" class="btn btn-warning"><i class="fa fa-refresh"></i></button></td>
</tr>
<tr>
<td colspan="2">{{ entry_imgcache }}</td>
<td class="text-right"><button type="button" value="imgcache" data-toggle="tooltip" title="{{ button_refresh }}" class="btn btn-warning"><i class="fa fa-refresh"></i></button></td>
</tr>
<tr>
<td colspan="2">{{ entry_allcache }}</td>
<td class="text-right"><button type="button" value="allcache" data-toggle="tooltip" title="{{ button_refresh }}" class="btn btn-warning"><i class="fa fa-refresh"></i></button></td>
</tr>
</table>
</div>
</div>
</div>
<script type="text/javascript"><!--
$('input[name=\'developer_theme\']').on('change', function() {
$.ajax({
url: 'index.php?route=common/developer/edit&user_token={{ user_token }}',
type: 'post',
data: $('input[name=\'developer_theme\']:checked'),
dataType: 'json',
beforeSend: function() {
$('input[name=\'developer_theme\']').prop('disabled', true);
},
complete: function() {
$('input[name=\'developer_theme\']').prop('disabled', false);
},
success: function(json) {
$('.alert-dismissible').remove();
if (json['error']) {
$('#modal-developer .modal-body').prepend('<div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> ' + json['error']['warning'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
}
if (json['success']) {
$('#modal-developer .modal-body').prepend('<div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> ' + json['success'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
}
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
$('#modal-developer table button').on('click', function() {
var element = this;
$.ajax({
url: 'index.php?route=common/developer/' + $(element).attr('value') + '&user_token={{ user_token }}',
dataType: 'json',
beforeSend: function() {
$(element).button('loading');
},
complete: function() {
$(element).button('reset');
},
success: function(json) {
$('.alert-dismissible').remove();
if (json['error']) {
$('#modal-developer .modal-body').prepend('<div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> ' + json['error']['warning'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
}
if (json['success']) {
$('#modal-developer .modal-body').prepend('<div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> ' + json['success'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
}
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
//--></script>
@@ -0,0 +1,240 @@
<div id="filemanager" class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title">{{ heading_title }}</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-sm-5"><a href="{{ parent }}" data-toggle="tooltip" title="{{ button_parent }}" id="button-parent" class="btn btn-default"><i class="fa fa-level-up"></i></a> <a href="{{ refresh }}" data-toggle="tooltip" title="{{ button_refresh }}" id="button-refresh" class="btn btn-default"><i class="fa fa-refresh"></i></a>
<button type="button" data-toggle="tooltip" title="{{ button_upload }}" id="button-upload" class="btn btn-primary"><i class="fa fa-upload"></i></button>
<button type="button" data-toggle="tooltip" title="{{ button_folder }}" id="button-folder" class="btn btn-default"><i class="fa fa-folder"></i></button>
<button type="button" data-toggle="tooltip" title="{{ button_delete }}" id="button-delete" class="btn btn-danger"><i class="fa fa-trash-o"></i></button>
</div>
<div class="col-sm-7">
<div class="input-group">
<input type="text" name="search" value="{{ filter_name }}" placeholder="{{ entry_search }}" class="form-control">
<span class="input-group-btn">
<button type="button" data-toggle="tooltip" title="{{ button_search }}" id="button-search" class="btn btn-primary"><i class="fa fa-search"></i></button>
</span></div>
</div>
</div>
<hr />
{% for image in images|batch(4) %}
<div class="row">
{% for image in image %}
<div class="col-sm-3 col-xs-6 text-center">
{% if image.type == 'directory' %}
<div class="text-center"><a href="{{ image.href }}" class="directory" style="vertical-align: middle;"><i class="fa fa-folder fa-5x"></i></a></div>
<label>
<input type="checkbox" name="path[]" value="{{ image.path }}" />
{{ image.name }}</label>
{% endif %}
{% if image.type == 'image' %}
<a href="{{ image.href }}" class="thumbnail"><img src="{{ image.thumb }}" alt="{{ image.name }}" title="{{ image.name }}" /></a>
<label>
<input type="checkbox" name="path[]" value="{{ image.path }}" />
{{ image.name }}</label>
{% endif %}
</div>
{% endfor %}
</div>
<br />
{% endfor %}
</div>
<div class="modal-footer">{{ pagination }}</div>
</div>
</div>
<script type="text/javascript"><!--
{% if target %}
$('a.thumbnail').on('click', function(e) {
e.preventDefault();
{% if thumb %}
$('#{{ thumb|escape('js') }}').find('img').attr('src', $(this).find('img').attr('src'));
{% endif %}
$('#{{ target|escape('js') }}').val($(this).parent().find('input').val());
$('#modal-image').modal('hide');
});
{% endif %}
$('a.directory').on('click', function(e) {
e.preventDefault();
$('#modal-image').load($(this).attr('href'));
});
$('.pagination a').on('click', function(e) {
e.preventDefault();
$('#modal-image').load($(this).attr('href'));
});
$('#button-parent').on('click', function(e) {
e.preventDefault();
$('#modal-image').load($(this).attr('href'));
});
$('#button-refresh').on('click', function(e) {
e.preventDefault();
$('#modal-image').load($(this).attr('href'));
});
$('input[name=\'search\']').on('keydown', function(e) {
if (e.which == 13) {
$('#button-search').trigger('click');
}
});
$('#button-search').on('click', function(e) {
var url = 'index.php?route=common/filemanager&user_token={{ user_token }}&directory={{ directory }}';
var filter_name = $('input[name=\'search\']').val();
if (filter_name) {
url += '&filter_name=' + encodeURIComponent(filter_name);
}
{% if thumb %}
url += '&thumb=' + '{{ thumb|escape('js') }}';
{% endif %}
{% if target %}
url += '&target=' + '{{ target|escape('js') }}';
{% endif %}
$('#modal-image').load(url);
});
//--></script>
<script type="text/javascript"><!--
$('#button-upload').on('click', function() {
$('#form-upload').remove();
$('body').prepend('<form enctype="multipart/form-data" id="form-upload" style="display: none;"><input type="file" name="file[]" value="" multiple="multiple" /></form>');
$('#form-upload input[name=\'file[]\']').trigger('click');
if (typeof timer != 'undefined') {
clearInterval(timer);
}
timer = setInterval(function() {
if ($('#form-upload input[name=\'file[]\']').val() != '') {
clearInterval(timer);
$.ajax({
url: 'index.php?route=common/filemanager/upload&user_token={{ user_token }}&directory={{ directory }}',
type: 'post',
dataType: 'json',
data: new FormData($('#form-upload')[0]),
cache: false,
contentType: false,
processData: false,
beforeSend: function() {
$('#button-upload i').replaceWith('<i class="fa fa-circle-o-notch fa-spin"></i>');
$('#button-upload').prop('disabled', true);
},
complete: function() {
$('#button-upload i').replaceWith('<i class="fa fa-upload"></i>');
$('#button-upload').prop('disabled', false);
},
success: function(json) {
if (json['error']) {
alert(json['error']);
}
if (json['success']) {
alert(json['success']);
$('#button-refresh').trigger('click');
}
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
}
}, 500);
});
$('#button-folder').popover({
html: true,
placement: 'bottom',
trigger: 'click',
title: '{{ entry_folder }}',
content: function() {
html = '<div class="input-group">';
html += ' <input type="text" name="folder" value="" placeholder="{{ entry_folder }}" class="form-control">';
html += ' <span class="input-group-btn"><button type="button" title="{{ button_folder }}" id="button-create" class="btn btn-primary"><i class="fa fa-plus-circle"></i></button></span>';
html += '</div>';
return html;
}
});
$('#button-folder').on('shown.bs.popover', function() {
$('#button-create').on('click', function() {
$.ajax({
url: 'index.php?route=common/filemanager/folder&user_token={{ user_token }}&directory={{ directory }}',
type: 'post',
dataType: 'json',
data: 'folder=' + encodeURIComponent($('input[name=\'folder\']').val()),
beforeSend: function() {
$('#button-create').prop('disabled', true);
},
complete: function() {
$('#button-create').prop('disabled', false);
},
success: function(json) {
if (json['error']) {
alert(json['error']);
}
if (json['success']) {
alert(json['success']);
$('#button-refresh').trigger('click');
}
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
});
$('#modal-image #button-delete').on('click', function(e) {
if (confirm('{{ text_confirm }}')) {
$.ajax({
url: 'index.php?route=common/filemanager/delete&user_token={{ user_token }}',
type: 'post',
dataType: 'json',
data: $('input[name^=\'path\']:checked'),
beforeSend: function() {
$('#button-delete').prop('disabled', true);
},
complete: function() {
$('#button-delete').prop('disabled', false);
},
success: function(json) {
if (json['error']) {
alert(json['error']);
}
if (json['success']) {
alert(json['success']);
$('#button-refresh').trigger('click');
}
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
}
});
//--></script>
@@ -0,0 +1,2 @@
<footer id="footer">{{ text_footer }}<br />{{ text_version }}</footer></div>
</body></html>
@@ -0,0 +1,35 @@
{{ header }}
<div id="content">
<div class="container-fluid"><br />
<br />
<div class="row">
<div class="col-sm-offset-4 col-sm-4">
<div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title"><i class="fa fa-repeat"></i> {{ heading_title }}</h1>
</div>
<div class="panel-body">
{% if error_warning %}
<div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
<button type="button" class="close" data-dismiss="alert">&times;</button>
</div>
{% endif %}
<form action="{{ action }}" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="input-email">{{ entry_email }}</label>
<div class="input-group"><span class="input-group-addon"><i class="fa fa-envelope"></i></span>
<input type="text" name="email" value="{{ email }}" placeholder="{{ entry_email }}" id="input-email" class="form-control" />
</div>
</div>
<div class="text-right">
<button type="submit" class="btn btn-primary"><i class="fa fa-check"></i> {{ button_reset }}</button>
<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
{{ footer }}
@@ -0,0 +1,74 @@
<!DOCTYPE html>
<html dir="{{ direction }}" lang="{{ lang }}">
<head>
<meta charset="UTF-8" />
<title>{{ title }}</title>
<base href="{{ base }}" />
{% if description %}
<meta name="description" content="{{ description }}" />
{% endif %}
{% if keywords %}
<meta name="keywords" content="{{ keywords }}" />
{% endif %}
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" />
<script type="text/javascript" src="view/javascript/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="view/javascript/bootstrap/js/bootstrap.min.js"></script>
<link href="view/stylesheet/bootstrap.css" type="text/css" rel="stylesheet" />
<link href="view/javascript/font-awesome/css/font-awesome.min.css" type="text/css" rel="stylesheet" />
<script src="view/javascript/jquery/datetimepicker/moment/moment.min.js" type="text/javascript"></script>
<script src="view/javascript/jquery/datetimepicker/moment/moment-with-locales.min.js" type="text/javascript"></script>
<script src="view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js" type="text/javascript"></script>
<link href="view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.css" type="text/css" rel="stylesheet" media="screen" />
<link type="text/css" href="view/stylesheet/stylesheet.css" rel="stylesheet" media="screen" />
{% for style in styles %}
<link type="text/css" href="{{ style.href }}" rel="{{ style.rel }}" media="{{ style.media }}" />
{% endfor %}
{% for link in links %}
<link href="{{ link.href }}" rel="{{ link.rel }}" />
{% endfor %}
<script src="view/javascript/common.js" type="text/javascript"></script>
{% for script in scripts %}
<script type="text/javascript" src="{{ script }}"></script>
{% endfor %}
</head>
<body>
<div id="container">
<header id="header" class="navbar navbar-static-top">
<div class="container-fluid">
<div id="header-logo" class="navbar-header"><a href="{{ home }}" class="navbar-brand"><img src="view/image/logo.png" alt="{{ heading_title }}" title="{{ heading_title }}" /></a></div>
{% if logged %}<a href="#" id="button-menu" class="hidden-md hidden-lg"><span class="fa fa-bars"></span></a>
<ul class="nav pull-left">
<li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" title="{{ text_new }}"><i class="fa fa-plus fa-lg"></i> <span class="header-item">{{ text_new }}</span></a>
<ul class="dropdown-menu dropdown-menu-left alerts-dropdown">
<li><a href="{{ new_product }}" style="display: block; overflow: auto;">{{ text_new_product }}</a></li>
<li><a href="{{ new_category }}" style="display: block; overflow: auto;">{{ text_new_category }}</a></li>
<li><a href="{{ new_manufacturer }}" style="display: block; overflow: auto;">{{ text_new_manufacturer }}</a></li>
<li><a href="{{ new_customer }}" style="display: block; overflow: auto;">{{ text_new_customer }}</a></li>
<li><a href="{{ new_download }}" style="display: block; overflow: auto;">{{ text_new_download }}</a></li>
</ul>
</li>
</ul>
<div id="oc-search-div" class="col-sm-3 col-md-3 pull-left">
{{ search }}
</div>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown"><img src="{{ image }}" alt="{{ firstname }} {{ lastname }}" title="{{ username }}" id="user-profile" class="img-circle" />{{ firstname }} {{ lastname }} <i class="fa fa-caret-down fa-fw"></i></a>
<ul class="dropdown-menu dropdown-menu-right">
<li><a href="{{ profile }}"><i class="fa fa-user-circle-o fa-fw"></i> {{ text_profile }}</a></li>
<li role="separator" class="divider"></li>
<li class="dropdown-header">{{ text_store }}</li>
{% for store in stores %}
<li><a href="{{ store.href }}" target="_blank">{{ store.name }}</a></li>
{% endfor %}
<li role="separator" class="divider"></li>
<li class="dropdown-header">{{ text_help }}</li>
<li><a href="https://ocstore.com/?utm_source=ocstore3" target="_blank"><i class="fa fa-opencart fa-fw"></i> {{ text_homepage }}</a></li>
<li><a href="https://docs.ocstore.com/?utm_source=ocstore3" target="_blank"><i class="fa fa-file-text-o fa-fw"></i> {{ text_documentation }}</a></li>
<li><a href="https://opencartforum.com/?utm_source=ocstore3" target="_blank"><i class="fa fa-comments-o fa-fw"></i> {{ text_support }}</a></li>
</ul>
</li>
<li><a href="{{ logout }}"><i class="fa fa-sign-out"></i> <span class="hidden-xs hidden-sm hidden-md">{{ text_logout }}</span></a></li>
</ul>
{% endif %}</div>
</header>
@@ -0,0 +1,51 @@
{{ header }}
<div id="content">
<div class="container-fluid"><br />
<br />
<div class="row">
<div class="col-sm-offset-4 col-sm-4">
<div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title"><i class="fa fa-lock"></i> {{ text_login }}</h1>
</div>
<div class="panel-body">
{% if success %}
<div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> {{ success }}
<button type="button" class="close" data-dismiss="alert">&times;</button>
</div>
{% endif %}
{% if error_warning %}
<div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
<button type="button" class="close" data-dismiss="alert">&times;</button>
</div>
{% endif %}
<form action="{{ action }}" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="input-username">{{ entry_username }}</label>
<div class="input-group"><span class="input-group-addon"><i class="fa fa-user"></i></span>
<input type="text" name="username" value="{{ username }}" placeholder="{{ entry_username }}" id="input-username" class="form-control" />
</div>
</div>
<div class="form-group">
<label for="input-password">{{ entry_password }}</label>
<div class="input-group"><span class="input-group-addon"><i class="fa fa-lock"></i></span>
<input type="password" name="password" value="{{ password }}" placeholder="{{ entry_password }}" id="input-password" class="form-control" />
</div>
{% if forgotten %}
<span class="help-block"><a href="{{ forgotten }}">{{ text_forgotten }}</a></span>
{% endif %}
</div>
<div class="text-right">
<button type="submit" class="btn btn-primary"><i class="fa fa-key"></i> {{ button_login }}</button>
</div>
{% if redirect %}
<input type="hidden" name="redirect" value="{{ redirect }}" />
{% endif %}
</form>
</div>
</div>
</div>
</div>
</div>
</div>
{{ footer }}
@@ -0,0 +1,99 @@
{{ header }}{{ column_left }}
<div id="content">
<div class="page-header">
<div class="container-fluid">
<div class="pull-right">
<button type="submit" form="form-user" data-toggle="tooltip" title="{{ button_save }}" class="btn btn-primary"><i class="fa fa-save"></i></button>
<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a></div>
<h1>{{ heading_title }}</h1>
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
</div>
</div>
<div class="container-fluid">
{% if success %}
<div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> {{ success }}
<button type="button" class="close" data-dismiss="alert">&times;</button>
</div>
{% endif %}
{% if error_warning %}
<div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
<button type="button" class="close" data-dismiss="alert">&times;</button>
</div>
{% endif %}
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><i class="fa fa-pencil"></i> {{ text_edit }}</h3>
</div>
<div class="panel-body">
<form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-user" class="form-horizontal">
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-username">{{ entry_username }}</label>
<div class="col-sm-10">
<input type="text" name="username" value="{{ username }}" placeholder="{{ entry_username }}" id="input-username" class="form-control" />
{% if error_username %}
<div class="text-danger">{{ error_username }}</div>
{% endif %}
</div>
</div>
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-firstname">{{ entry_firstname }}</label>
<div class="col-sm-10">
<input type="text" name="firstname" value="{{ firstname }}" placeholder="{{ entry_firstname }}" id="input-firstname" class="form-control" />
{% if error_firstname %}
<div class="text-danger">{{ error_firstname }}</div>
{% endif %}
</div>
</div>
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-lastname">{{ entry_lastname }}</label>
<div class="col-sm-10">
<input type="text" name="lastname" value="{{ lastname }}" placeholder="{{ entry_lastname }}" id="input-lastname" class="form-control" />
{% if error_lastname %}
<div class="text-danger">{{ error_lastname }}</div>
{% endif %}
</div>
</div>
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-email">{{ entry_email }}</label>
<div class="col-sm-10">
<input type="text" name="email" value="{{ email }}" placeholder="{{ entry_email }}" id="input-email" class="form-control" />
{% if error_email %}
<div class="text-danger">{{ error_email }}</div>
{% endif %}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="input-image">{{ entry_image }}</label>
<div class="col-sm-10"><a href="" id="thumb-image" data-toggle="image" class="img-thumbnail"><img src="{{ thumb }}" alt="" title="" data-placeholder="{{ placeholder }}" /></a>
<input type="hidden" name="image" value="{{ image }}" id="input-image" />
</div>
</div>
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-password">{{ entry_password }}</label>
<div class="col-sm-10">
<input type="password" name="password" value="{{ password }}" placeholder="{{ entry_password }}" id="input-password" class="form-control" autocomplete="off" />
{% if error_password %}
<div class="text-danger">{{ error_password }}</div>
{% endif %}
</div>
</div>
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-confirm">{{ entry_confirm }}</label>
<div class="col-sm-10">
<input type="password" name="confirm" value="{{ confirm }}" placeholder="{{ entry_confirm }}" id="input-confirm" class="form-control" />
{% if error_confirm %}
<div class="text-danger">{{ error_confirm }}</div>
{% endif %}
</div>
</div>
</form>
</div>
</div>
</div>
</div>
{{ footer }}
@@ -0,0 +1,39 @@
{{ header }}
<div id="content">
<div class="container-fluid"><br />
<br />
<div class="row">
<div class="col-sm-offset-4 col-sm-4">
<div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title"><i class="fa fa-repeat"></i> {{ heading_title }}</h1>
</div>
<div class="panel-body">
<form action="{{ action }}" method="post" enctype="multipart/form-data">
<p>{{ text_password }}</p>
<div class="form-group">
<label class="control-label" for="input-password">{{ entry_password }}</label>
<input type="password" name="password" value="{{ password }}" id="input-password" class="form-control" />
{% if error_password %}
<div class="text-danger">{{ error_password }}</div>
{% endif %}
</div>
<div class="form-group">
<label class="control-label" for="input-confirm">{{ entry_confirm }}</label>
<input type="password" name="confirm" value="{{ confirm }}" id="input-confirm" class="form-control" />
{% if error_confirm %}
<div class="text-danger">{{ error_confirm }}</div>
{% endif %}
</div>
<div class="text-right">
<button type="submit" class="btn btn-primary"><i class="fa fa-save"></i> {{ button_save }}</button>
<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
{{ footer }}
@@ -0,0 +1,139 @@
<div id="modal-security" class="modal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title text-danger"><i class="fa fa-exclamation-triangle"></i> {{ heading_title }}</h4>
</div>
<div class="modal-body">
<div class="alert alert-info"><i class="fa fa-exclamation-circle"></i> {{text_security }}</div>
<form class="form-horizontal">
<fieldset>
<legend>{{ text_choose }}</legend>
<div class="form-group">
<select name="type" id="input-type" class="form-control">
<option value="automatic">{{ text_automatic }}</option>
<option value="manual">{{ text_manual }}</option>
</select>
</div>
</fieldset>
<fieldset id="collapse-automatic" class="collapse">
<legend>{{ text_automatic }}</legend>
<div class="form-group">
<div class="input-group">
<div class="input-group-btn dropdown">
<button type="button" id="button-path" data-toggle="dropdown" class="btn btn-default">{{ document_root }} <span class="caret"></span></button>
<ul class="dropdown-menu">
{% for path in paths %}
{% if path|length > document_root|length %}
<li><a href="{{ path }}"><i class="fa fa-exclamation-triangle fa-fw text-danger"></i> {{ path }}</a></li>
{% else %}
<li><a href="{{ path }}"><i class="fa fa-check-circle fa-fw text-success"></i> {{ path }}</a></li>
{% endif %}
{% endfor %}
</ul>
</div>
<input type="text" name="directory" value="storage" placeholder="{{ entry_directory }}" class="form-control" />
<div class="input-group-btn">
<button type="button" id="button-move" data-loading-text="{{ text_loading }}" class="btn btn-danger"><i class="fa fa-exclamation-triangle"></i> {{ button_move }}</button>
</div>
</div>
<input type="hidden" name="path" value="{{ document_root }}" />
</div>
</fieldset>
<fieldset id="collapse-manual" class="collapse">
<legend>{{ text_manual }}</legend>
<div class="form-group">
<div style="height: 300px; overflow-y: scroll;" class="form-control" disabled="disabled"></div>
</div>
</fieldset>
</form>
</div>
</div>
</div>
</div>
<script type="text/javascript"><!--
$(document).ready(function() {
$('#modal-security').modal('show');
});
$('#modal-security select[name=\'type\']').on('change', function() {
$('#modal-security fieldset.collapse').removeClass('in');
$('#modal-security #collapse-' + $(this).val()).addClass('in');
});
$('#modal-security select[name=\'type\']').trigger('change');
$('#modal-security .dropdown-menu a').on('click', function(e) {
e.preventDefault();
$('#modal-security #button-path').html($(this).html() + ' <span class="caret"></span>');
$('#modal-security input[name=\'path\']').val($(this).attr('href'));
});
$('#modal-security .dropdown-menu a').on('click', function(e) {
e.preventDefault();
$('#button-path').html($(this).text() + ' <span class="caret"></span>');
$('input[name=\'path\']').val($(this).attr('href'));
$('input[name=\'path\']').trigger('change');
});
$('#button-move').on('click', function() {
var element = this;
$.ajax({
url: 'index.php?route=common/security/move&user_token={{ user_token }}',
type: 'post',
data: $('input[name=\'path\'], input[name=\'directory\']'),
dataType: 'json',
crossDomain: true,
beforeSend: function() {
$(element).button('loading');
},
complete: function() {
$(element).button('reset');
},
success: function(json) {
$('.alert-dismissible').remove();
if (json['error']) {
$('#modal-security .modal-body').prepend('<div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> ' + json['error'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
}
if (json['success']) {
$('#modal-security .modal-body').prepend('<div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> ' + json['success'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
}
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
$('#modal-security select[name=\'type\']').on('change', function () {
html = '<ol>';
html += '<li><p>{{ text_move }}</p>';
html += '<p><strong>{{ storage }}</strong></p>';
html += '<p>{{ text_to }}</p>';
html += '<p><strong>' + $('#modal-security input[name=\'path\']').val() + $('#modal-security input[name=\'directory\']').val() + '/</strong></p></li>';
html += '<li><p>{{ text_config }}</p>';
html += '<p><strong>define(\'DIR_STORAGE\', DIR_SYSTEM . \'storage/\');</strong></p>';
html += '<p>to</p>';
html += '<p><strong>define(\'DIR_STORAGE\', \'' + $('#modal-security input[name=\'path\']').val() + $('#modal-security input[name=\'directory\']').val() + '/\');</strong></p></li>';
html += '<li><p>{{ text_admin }}</p>';
html += '<p><strong>define(\'DIR_STORAGE\', DIR_SYSTEM . \'storage/\');</strong></p>';
html += '<p>to</p>';
html += '<p><strong>define(\'DIR_STORAGE\', \'' + $('#modal-security input[name=\'path\']').val() + $('#modal-security input[name=\'directory\']').val() + '/\');</strong></p></li>';
html += '</ol>';
$('#collapse-manual .form-control').html(html);
});
$('input[name=\'path\']').trigger('change');
//--></script>