Commit bf665118 authored by Evren Kutar's avatar Evren Kutar

ADD translation template for catalog datas

ADD notify handler to interceptor
ADD toastr for notifications
rref #5050 GH-26
parent 74775a3d
...@@ -160,7 +160,8 @@ module.exports = function (grunt) { ...@@ -160,7 +160,8 @@ module.exports = function (grunt) {
"app/bower_components/metisMenu/dist/metisMenu.js", "app/bower_components/metisMenu/dist/metisMenu.js",
"app/bower_components/Chart.js/Chart.js", "app/bower_components/Chart.js/Chart.js",
"app/bower_components/intro.js/intro.js", "app/bower_components/intro.js/intro.js",
"app/bower_components/moment/min/moment.min.js" "app/bower_components/moment/min/moment.min.js",
"app/bower_components/toastr/toastr.min.js"
], ],
dest: 'dist/bower_components/components.js' dest: 'dist/bower_components/components.js'
}, },
...@@ -174,7 +175,8 @@ module.exports = function (grunt) { ...@@ -174,7 +175,8 @@ module.exports = function (grunt) {
"app/bower_components/angular-loading-bar/build/loading-bar.min.css", "app/bower_components/angular-loading-bar/build/loading-bar.min.css",
"app/bower_components/font-awesome/css/font-awesome.min.css", "app/bower_components/font-awesome/css/font-awesome.min.css",
"app/bower_components/intro.js/intro.css", "app/bower_components/intro.js/intro.css",
"app/bower_components/intro.js/themes/introjs-nassim.css" "app/bower_components/intro.js/themes/introjs-nassim.css",
"app/bower_components/toastr/toastr.min.css"
] ]
} }
}, },
......
...@@ -1856,4 +1856,8 @@ table.dataTable thead .sorting:after { ...@@ -1856,4 +1856,8 @@ table.dataTable thead .sorting:after {
text-align: center; text-align: center;
margin-bottom: 20px; margin-bottom: 20px;
color: #636363 ; color: #636363 ;
}
#toast-container {
margin-top: 90px;
} }
\ No newline at end of file
...@@ -46,6 +46,7 @@ angular.module( ...@@ -46,6 +46,7 @@ angular.module(
* *
* For development needs backendurl can be switched from both dev/settings page and querystring `?backendurl=http://example.com` * For development needs backendurl can be switched from both dev/settings page and querystring `?backendurl=http://example.com`
*/ */
// todo: convert it to service
.constant("RESTURL", (function () { .constant("RESTURL", (function () {
// todo: below backendurl definition is for development purpose and will be deleted // todo: below backendurl definition is for development purpose and will be deleted
var backendurl = location.href.indexOf('nightly') > -1 ? "//nightly.api.ulakbus.net/" : "//api.ulakbus.net/"; var backendurl = location.href.indexOf('nightly') > -1 ? "//nightly.api.ulakbus.net/" : "//api.ulakbus.net/";
...@@ -67,6 +68,7 @@ angular.module( ...@@ -67,6 +68,7 @@ angular.module(
return {url: backendurl}; return {url: backendurl};
})()) })())
.constant('toastr', window.toastr)
.config(function ($logProvider) { .config(function ($logProvider) {
$logProvider.debugEnabled(true); $logProvider.debugEnabled(true);
}); });
\ No newline at end of file
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
</h3> </h3>
<div class="node-table"> <div class="node-table">
<ng-include src="'shared/templates/nodeTable.html'"></ng-include> <ng-include src="'components/crud/templates/nodeTable.html'"></ng-include>
</div> </div>
<hr> <hr>
</div> </div>
...@@ -27,8 +27,11 @@ ...@@ -27,8 +27,11 @@
</span> </span>
</h3> </h3>
<div class="list-node-table"> <div class="list-node-table" ng-if="!meta.translate_widget">
<ng-include src="'shared/templates/nodeTable.html'"></ng-include> <ng-include src="'components/crud/templates/nodeTable.html'"></ng-include>
</div>
<div class="list-node-table" ng-if="meta.translate_widget">
<ng-include src="'shared/templates/translate.html'"></ng-include>
</div> </div>
<hr> <hr>
</div> </div>
......
...@@ -63,11 +63,10 @@ ...@@ -63,11 +63,10 @@
</td> </td>
<td ng-if="meta.allow_actions!==false"> <td ng-if="meta.allow_actions!==false">
<div ng-hide="meta.object_actions.length > 0"> <div ng-hide="meta.object_actions.length > 0">
<button modal-for-nodes="{{node.schema.model_name}},{{node.schema.formType}},edit,{{$index}}"> <span modal-for-nodes="{{node.schema.model_name}},{{node.schema.formType}},edit,{{$index}}">
Düzenle <i class="fa fa-pencil-square-o fa-fw"></i>
</button> </span>
<br> <span ng-click="remove(node, 'ListNode', $index)"><i class="fa fa-times fa-fw"></i></span>
<button ng-click="remove(node, 'ListNode', $index)">Sil</button>
</div> </div>
<div ng-show="meta.object_actions.length > 0"> <div ng-show="meta.object_actions.length > 0">
<!-- define object actions here --> <!-- define object actions here -->
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
<link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.min.css" type="text/css"> <link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.min.css" type="text/css">
<link rel="stylesheet" href="bower_components/intro.js/introjs.css" type="text/css"> <link rel="stylesheet" href="bower_components/intro.js/introjs.css" type="text/css">
<link rel="stylesheet" href="bower_components/intro.js/themes/introjs-nassim.css" type="text/css"> <link rel="stylesheet" href="bower_components/intro.js/themes/introjs-nassim.css" type="text/css">
<link rel="stylesheet" href="bower_components/toastr/toastr.min.css" type="text/css">
</head> </head>
<body ng-controller="KeyListenController" ng-keydown="down($event)"> <body ng-controller="KeyListenController" ng-keydown="down($event)">
...@@ -88,6 +89,7 @@ ...@@ -88,6 +89,7 @@
<script src="bower_components/angular-schema-form/dist/bootstrap-decorator.min.js"></script> <script src="bower_components/angular-schema-form/dist/bootstrap-decorator.min.js"></script>
<script src="bower_components/angular-gettext/dist/angular-gettext.min.js"></script> <script src="bower_components/angular-gettext/dist/angular-gettext.min.js"></script>
<script src="bower_components/moment/min/moment.min.js"></script> <script src="bower_components/moment/min/moment.min.js"></script>
<script src="bower_components/toastr/toastr.min.js"></script>
<!-- TODO: check all js and remove unused --> <!-- TODO: check all js and remove unused -->
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
<link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.min.css" type="text/css"> <link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.min.css" type="text/css">
<link rel="stylesheet" href="bower_components/intro.js/introjs.css" type="text/css"> <link rel="stylesheet" href="bower_components/intro.js/introjs.css" type="text/css">
<link rel="stylesheet" href="bower_components/intro.js/themes/introjs-nassim.css" type="text/css"> <link rel="stylesheet" href="bower_components/intro.js/themes/introjs-nassim.css" type="text/css">
<link rel="stylesheet" href="bower_components/toastr/toastr.min.css" type="text/css">
<!-- @endif --> <!-- @endif -->
<!-- @if NODE_ENV == 'PRODUCTION' --> <!-- @if NODE_ENV == 'PRODUCTION' -->
...@@ -96,6 +97,7 @@ ...@@ -96,6 +97,7 @@
<script src="bower_components/angular-schema-form/dist/bootstrap-decorator.min.js"></script> <script src="bower_components/angular-schema-form/dist/bootstrap-decorator.min.js"></script>
<script src="bower_components/angular-gettext/dist/angular-gettext.min.js"></script> <script src="bower_components/angular-gettext/dist/angular-gettext.min.js"></script>
<script src="bower_components/moment/min/moment.min.js"></script> <script src="bower_components/moment/min/moment.min.js"></script>
<script src="bower_components/toastr/toastr.min.js"></script>
<!-- TODO: check all js and remove unused --> <!-- TODO: check all js and remove unused -->
......
...@@ -51,6 +51,7 @@ angular.module( ...@@ -51,6 +51,7 @@ angular.module(
* *
* For development needs backendurl can be switched from both dev/settings page and querystring `?backendurl=http://example.com` * For development needs backendurl can be switched from both dev/settings page and querystring `?backendurl=http://example.com`
*/ */
// todo: convert it to service
.constant("RESTURL", (function () { .constant("RESTURL", (function () {
// todo: below backendurl definition is for development purpose and will be deleted // todo: below backendurl definition is for development purpose and will be deleted
var backendurl = location.href.indexOf('nightly') > -1 ? "//nightly.api.ulakbus.net/" : "//api.ulakbus.net/"; var backendurl = location.href.indexOf('nightly') > -1 ? "//nightly.api.ulakbus.net/" : "//api.ulakbus.net/";
...@@ -72,6 +73,7 @@ angular.module( ...@@ -72,6 +73,7 @@ angular.module(
return {url: backendurl}; return {url: backendurl};
})()) })())
.constant('toastr', window.toastr)
.config(function ($logProvider) { .config(function ($logProvider) {
// @if NODE_ENV='PRODUCTION' // @if NODE_ENV='PRODUCTION'
$logProvider.debugEnabled(false); $logProvider.debugEnabled(false);
......
...@@ -1095,6 +1095,7 @@ angular.module('ulakbus.formService', ['ui.bootstrap']) ...@@ -1095,6 +1095,7 @@ angular.module('ulakbus.formService', ['ui.bootstrap'])
}); });
var data = { var data = {
"form": $scope.model, "form": $scope.model,
"object_key": $scope.object_key,
"token": $scope.token, "token": $scope.token,
"model": $scope.form_params.model, "model": $scope.form_params.model,
"cmd": $scope.form_params.cmd, "cmd": $scope.form_params.cmd,
......
...@@ -21,7 +21,7 @@ angular.module('ulakbus') ...@@ -21,7 +21,7 @@ angular.module('ulakbus')
* - API returns `is_login` key to check if current user is authenticated. Interceptor checks and if not logged * - API returns `is_login` key to check if current user is authenticated. Interceptor checks and if not logged
* in redirects to login page. * in redirects to login page.
*/ */
$httpProvider.interceptors.push(function ($q, $rootScope, $location, $timeout, $log) { $httpProvider.interceptors.push(function ($q, $rootScope, $location, $timeout, $log, toastr) {
return { return {
'request': function (config) { 'request': function (config) {
if (config.method === "POST") { if (config.method === "POST") {
...@@ -55,6 +55,10 @@ angular.module('ulakbus') ...@@ -55,6 +55,10 @@ angular.module('ulakbus')
} }
} }
// handle toast notifications here
if (response.data.notify) {toastr.info(response.data.notify)}
return response; return response;
}, },
'responseError': function (rejection) { 'responseError': function (rejection) {
...@@ -109,7 +113,8 @@ angular.module('ulakbus') ...@@ -109,7 +113,8 @@ angular.module('ulakbus')
if (errorInModal) { if (errorInModal) {
errorModal(); errorModal();
} else { } else {
$rootScope.$broadcast('alertBox', alertContent); //$rootScope.$broadcast('alertBox', alertContent);
toastr.error(alertContent.msg, alertContent.title);
} }
}; };
......
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -1872,6 +1872,10 @@ table.dataTable thead .sorting:after { ...@@ -1872,6 +1872,10 @@ table.dataTable thead .sorting:after {
color: #636363 ; color: #636363 ;
} }
#toast-container {
margin-top: 90px;
}
/* /*
* metismenu - v1.1.3 * metismenu - v1.1.3
* Easy menu jQuery plugin for Twitter Bootstrap 3 * Easy menu jQuery plugin for Twitter Bootstrap 3
...@@ -2187,3 +2191,6 @@ table.dataTable thead .sorting:after { ...@@ -2187,3 +2191,6 @@ table.dataTable thead .sorting:after {
left: 50%; left: 50%;
top: 50%; top: 50%;
} }
.toast-title{font-weight:700}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#fff;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}button.toast-close-button{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999;pointer-events:none}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-position:15px center;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}#toast-container>:hover{-moz-box-shadow:0 0 12px #000;-webkit-box-shadow:0 0 12px #000;box-shadow:0 0 12px #000;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=)!important}#toast-container>.toast-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=)!important}#toast-container>.toast-success{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==)!important}#toast-container>.toast-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=)!important}#toast-container.toast-bottom-center>div,#toast-container.toast-top-center>div{width:300px;margin-left:auto;margin-right:auto}#toast-container.toast-bottom-full-width>div,#toast-container.toast-top-full-width>div{width:96%;margin-left:auto;margin-right:auto}.toast{background-color:#030303}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@media all and (max-width:240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width:241px) and (max-width:480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width:481px) and (max-width:768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}}
\ No newline at end of file
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment