2416 lines
189 KiB
JavaScript
2416 lines
189 KiB
JavaScript
![]() |
/*!
|
||
|
* Vue.js v1.0.27
|
||
|
* (c) 2016 Evan You
|
||
|
* Released under the MIT License.
|
||
|
*/
|
||
|
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.Vue=e()}(this,function(){"use strict";function t(e,n,r){if(i(e,n))return void(e[n]=r);if(e._isVue)return void t(e._data,n,r);var s=e.__ob__;if(!s)return void(e[n]=r);if(s.convert(n,r),s.dep.notify(),s.vms)for(var o=s.vms.length;o--;){var a=s.vms[o];a._proxy(n),a._digest()}return r}function e(t,e){if(i(t,e)){delete t[e];var n=t.__ob__;if(!n)return void(t._isVue&&(delete t._data[e],t._digest()));if(n.dep.notify(),n.vms)for(var r=n.vms.length;r--;){var s=n.vms[r];s._unproxy(e),s._digest()}}}function i(t,e){return Ii.call(t,e)}function n(t){return Mi.test(t)}function r(t){var e=(t+"").charCodeAt(0);return 36===e||95===e}function s(t){return null==t?"":t.toString()}function o(t){if("string"!=typeof t)return t;var e=Number(t);return isNaN(e)?t:e}function a(t){return"true"===t||"false"!==t&&t}function h(t){var e=t.charCodeAt(0),i=t.charCodeAt(t.length-1);return e!==i||34!==e&&39!==e?t:t.slice(1,-1)}function l(t){return t.replace(Vi,c)}function c(t,e){return e?e.toUpperCase():""}function u(t){return t.replace(Wi,"$1-$2").replace(Wi,"$1-$2").toLowerCase()}function f(t){return t.replace(Bi,c)}function p(t,e){return function(i){var n=arguments.length;return n?n>1?t.apply(e,arguments):t.call(e,i):t.call(e)}}function d(t,e){e=e||0;for(var i=t.length-e,n=new Array(i);i--;)n[i]=t[i+e];return n}function v(t,e){for(var i=Object.keys(e),n=i.length;n--;)t[i[n]]=e[i[n]];return t}function m(t){return null!==t&&"object"==typeof t}function g(t){return zi.call(t)===Ui}function _(t,e,i,n){Object.defineProperty(t,e,{value:i,enumerable:!!n,writable:!0,configurable:!0})}function y(t,e){var i,n,r,s,o,a=function a(){var h=Date.now()-s;h<e&&h>=0?i=setTimeout(a,e-h):(i=null,o=t.apply(r,n),i||(r=n=null))};return function(){return r=this,n=arguments,s=Date.now(),i||(i=setTimeout(a,e)),o}}function b(t,e){for(var i=t.length;i--;)if(t[i]===e)return i;return-1}function w(t){var e=function e(){if(!e.cancelled)return t.apply(this,arguments)};return e.cancel=function(){e.cancelled=!0},e}function C(t,e){return t==e||!(!m(t)||!m(e))&&JSON.stringify(t)===JSON.stringify(e)}function $(t){this.size=0,this.limit=t,this.head=this.tail=void 0,this._keymap=Object.create(null)}function k(){return cn.charCodeAt(pn+1)}function x(){return cn.charCodeAt(++pn)}function A(){return pn>=fn}function O(){for(;k()===An;)x()}function T(t){return t===Cn||t===$n}function N(t){return On[t]}function j(t,e){return Tn[t]===e}function E(){for(var t,e=x();!A();)if(t=x(),t===xn)x();else if(t===e)break}function F(t){for(var e=0,i=t;!A();)if(t=k(),T(t))E();else if(i===t&&e++,j(i,t)&&e--,x(),0===e)break}function S(){for(var t=pn;!A();)if(dn=k(),T(dn))E();else if(N(dn))F(dn);else if(dn===kn){if(x(),dn=k(),dn!==kn){vn!==_n&&vn!==wn||(vn=yn);break}x()}else{if(dn===An&&(vn===bn||vn===wn)){O();break}vn===yn&&(vn=bn),x()}return cn.slice(t+1,pn)||null}function D(){for(var t=[];!A();)t.push(P());return t}function P(){var t,e={};return vn=yn,e.name=S().trim(),vn=wn,t=R(),t.length&&(e.args=t),e}function R(){for(var t=[];!A()&&vn!==yn;){var e=S();if(!e)break;t.push(L(e))}return t}function L(t){if(gn.test(t))return{value:o(t),dynamic:!1};var e=h(t),i=e===t;return{value:i?t:e,dynamic:i}}function H(t){var e=mn.get(t);if(e)return e;cn=t,un={},fn=cn.length,pn=-1,dn="",vn=_n;var i;return cn.indexOf("|")<0?un.expression=cn.trim():(un.expression=S().trim(),i=D(),i.length&&(un.filters=i)),mn.put(t,un),un}function I(t){return t.replace(jn,"\\$&")}function M(){var t=I(Hn.delimiters[0]),e=I(Hn.delimiters[1]),i=I(Hn.unsafeDelimiters[0]),n=I(Hn.unsafeDelimiters[1]);Fn=new RegExp(i+"((?:.|\\n)+?)"+n+"|"+t+"((?:.|\\n)+?)"+e,"g"),Sn=new RegExp("^"+i+"((?:.|\\n)+?)"+n+"$"),En=new $(1e3)}function V(t){En||M();var e=En.get(t);if(e)return e;if(!Fn.test(t))return null;for(var i,n,r,s,o,a,h=[],l=Fn.lastIndex=0;i=Fn.exec(t);)n=i.index,n>l&&h.push({value:t.slice(l,n)}),r=Sn.test(i[0]),s=r?i[1]:i[2],o=s.charCodeAt(0),a=42===o,s=a?s.slice(1):s,h.push({tag:!0,value:s.trim(),html:r,oneTime:a}),l=n+i
|
||
|
e.replace&&rt(i,t),this._isCompiled=!0,this._callHook("compiled")}},t.prototype._initElement=function(t){yt(t)?(this._isFragment=!0,this.$el=this._fragmentStart=t.firstChild,this._fragmentEnd=t.lastChild,3===this._fragmentStart.nodeType&&(this._fragmentStart.data=this._fragmentEnd.data=""),this._fragment=t):this.$el=t,this.$el.__vue__=this,this._callHook("beforeCompile")},t.prototype._bindDir=function(t,e,i,n,r){this._directives.push(new Ai(t,this,e,i,n,r))},t.prototype._destroy=function(t,e){if(this._isBeingDestroyed)return void(e||this._cleanup());var i,n,r=this,s=function(){!i||n||e||r._cleanup()};t&&this.$el&&(n=!0,this.$remove(function(){n=!1,s()})),this._callHook("beforeDestroy"),this._isBeingDestroyed=!0;var o,a=this.$parent;for(a&&!a._isBeingDestroyed&&(a.$children.$remove(this),this._updateRef(!0)),o=this.$children.length;o--;)this.$children[o].$destroy();for(this._propsUnlinkFn&&this._propsUnlinkFn(),this._unlinkFn&&this._unlinkFn(),o=this._watchers.length;o--;)this._watchers[o].teardown();this.$el&&(this.$el.__vue__=null),i=!0,s()},t.prototype._cleanup=function(){this._isDestroyed||(this._frag&&this._frag.children.$remove(this),this._data&&this._data.__ob__&&this._data.__ob__.removeVm(this),this.$el=this.$parent=this.$root=this.$children=this._watchers=this._context=this._scope=this._directives=null,this._isDestroyed=!0,this._callHook("destroyed"),this.$off())}}function Ti(t){t.prototype._applyFilters=function(t,e,i,n){var r,s,o,a,h,l,c,u,f;for(l=0,c=i.length;l<c;l++)if(r=i[n?c-l-1:l],s=jt(this.$options,"filters",r.name,!0),s&&(s=n?s.write:s.read||s,"function"==typeof s)){if(o=n?[t,e]:[t],h=n?2:1,r.args)for(u=0,f=r.args.length;u<f;u++)a=r.args[u],o[u+h]=a.dynamic?this.$get(a.value):a.value;t=s.apply(this,o)}return t},t.prototype._resolveComponent=function(e,i){var n;if(n="function"==typeof e?e:jt(this.$options,"components",e,!0))if(n.options)i(n);else if(n.resolved)i(n.resolved);else if(n.requested)n.pendingCallbacks.push(i);else{n.requested=!0;var r=n.pendingCallbacks=[i];n.call(this,function(e){g(e)&&(e=t.extend(e)),n.resolved=e;for(var i=0,s=r.length;i<s;i++)r[i](e)},function(t){})}}}function Ni(t){function i(t){return JSON.parse(JSON.stringify(t))}t.prototype.$get=function(t,e){var i=Yt(t);if(i){if(e){var n=this;return function(){n.$arguments=d(arguments);var t=i.get.call(n,n);return n.$arguments=null,t}}try{return i.get.call(this,this)}catch(t){}}},t.prototype.$set=function(t,e){var i=Yt(t,!0);i&&i.set&&i.set.call(this,this,e)},t.prototype.$delete=function(t){e(this._data,t)},t.prototype.$watch=function(t,e,i){var n,r=this;"string"==typeof t&&(n=H(t),t=n.expression);var s=new re(r,t,e,{deep:i&&i.deep,sync:i&&i.sync,filters:n&&n.filters,user:!i||i.user!==!1});return i&&i.immediate&&e.call(r,s.value),function(){s.teardown()}},t.prototype.$eval=function(t,e){if(ao.test(t)){var i=H(t),n=this.$get(i.expression,e);return i.filters?this._applyFilters(n,null,i.filters):n}return this.$get(t,e)},t.prototype.$interpolate=function(t){var e=V(t),i=this;return e?1===e.length?i.$eval(e[0].value)+"":e.map(function(t){return t.tag?i.$eval(t.value):t.value}).join(""):t},t.prototype.$log=function(t){var e=t?Bt(this._data,t):this._data;if(e&&(e=i(e)),!t){var n;for(n in this.$options.computed)e[n]=i(this[n]);if(this._props)for(n in this._props)e[n]=i(this[n])}console.log(e)}}function ji(t){function e(t,e,n,r,s,o){e=i(e);var a=!Z(e),h=r===!1||a?s:o,l=!a&&!t._isAttached&&!Z(t.$el);return t._isFragment?(gt(t._fragmentStart,t._fragmentEnd,function(i){h(i,e,t)}),n&&n()):h(t.$el,e,t,n),l&&t._callHook("attached"),t}function i(t){return"string"==typeof t?document.querySelector(t):t}function n(t,e,i,n){e.appendChild(t),n&&n()}function r(t,e,i,n){tt(t,e),n&&n()}function s(t,e,i){it(t),i&&i()}t.prototype.$nextTick=function(t){an(t,this)},t.prototype.$appendTo=function(t,i,r){return e(this,t,i,r,n,U)},t.prototype.$prependTo=function(t,e,n){return t=i(t),t.hasChildNodes()?this.$before(t.firstChild,e,n):this.$appendTo(t,e,n),this},t.prototype.$before=function(t,i,n){return e(this,t,i,n,r,q)},t.prototype.$after=function(t,e,n){return t=i(t
|
||
|
for(e in t)i=t[e],i!==n[e]&&(n[e]=i,this.handleSingle(e,i))},handleSingle:function(t,e){if(t=Te(t))if(null!=e&&(e+=""),e){var i=_s.test(e)?"important":"";i?(e=e.replace(_s,"").trim(),this.el.style.setProperty(t.kebab,e,i)):this.el.style[t.camel]=e}else this.el.style[t.camel]=""}},Cs="http://www.w3.org/1999/xlink",$s=/^xlink:/,ks=/^v-|^:|^@|^(?:is|transition|transition-mode|debounce|track-by|stagger|enter-stagger|leave-stagger)$/,xs=/^(?:value|checked|selected|muted)$/,As=/^(?:draggable|contenteditable|spellcheck)$/,Os={value:"_value","true-value":"_trueValue","false-value":"_falseValue"},Ts={priority:Zr,bind:function(){var t=this.arg,e=this.el.tagName;t||(this.deep=!0);var i=this.descriptor,n=i.interp;n&&(i.hasOneTime&&(this.expression=W(n,this._scope||this.vm)),(ks.test(t)||"name"===t&&("PARTIAL"===e||"SLOT"===e))&&(this.el.removeAttribute(t),this.invalid=!0))},update:function(t){if(!this.invalid){var e=this.arg;this.arg?this.handleSingle(e,t):this.handleObject(t||{})}},handleObject:ws.handleObject,handleSingle:function(t,e){var i=this.el,n=this.descriptor.interp;if(this.modifiers.camel&&(t=l(t)),!n&&xs.test(t)&&t in i){var r="value"===t&&null==e?"":e;i[t]!==r&&(i[t]=r)}var s=Os[t];if(!n&&s){i[s]=e;var o=i.__v_model;o&&o.listener()}return"value"===t&&"TEXTAREA"===i.tagName?void i.removeAttribute(t):void(As.test(t)?i.setAttribute(t,e?"true":"false"):null!=e&&e!==!1?"class"===t?(i.__v_trans&&(e+=" "+i.__v_trans.id+"-transition"),ht(i,e)):$s.test(t)?i.setAttributeNS(Cs,t,e===!0?"":e):i.setAttribute(t,e===!0?"":e):i.removeAttribute(t))}},Ns={priority:Yr,bind:function(){if(this.arg){var t=this.id=l(this.arg),e=(this._scope||this.vm).$els;i(e,t)?e[t]=this.el:Lt(e,t,this.el)}},unbind:function(){var t=(this._scope||this.vm).$els;t[this.id]===this.el&&(t[this.id]=null)}},js={bind:function(){}},Es={bind:function(){var t=this.el;this.vm.$once("pre-hook:compiled",function(){t.removeAttribute("v-cloak")})}},Fs={text:Rr,html:qr,for:ss,if:os,show:as,model:ps,on:vs,bind:Ts,el:Ns,ref:js,cloak:Es},Ss={deep:!0,update:function(t){t?"string"==typeof t?this.setClass(t.trim().split(/\s+/)):this.setClass(je(t)):this.cleanup()},setClass:function(t){this.cleanup(t);for(var e=0,i=t.length;e<i;e++){var n=t[e];n&&Ee(this.el,n,lt)}this.prevKeys=t},cleanup:function(t){var e=this.prevKeys;if(e)for(var i=e.length;i--;){var n=e[i];(!t||t.indexOf(n)<0)&&Ee(this.el,n,ct)}}},Ds={priority:Kr,params:["keep-alive","transition-mode","inline-template"],bind:function(){this.el.__vue__||(this.keepAlive=this.params.keepAlive,this.keepAlive&&(this.cache={}),this.params.inlineTemplate&&(this.inlineTemplate=ut(this.el,!0)),this.pendingComponentCb=this.Component=null,this.pendingRemovals=0,this.pendingRemovalCb=null,this.anchor=vt("v-component"),rt(this.el,this.anchor),this.el.removeAttribute("is"),this.el.removeAttribute(":is"),this.descriptor.ref&&this.el.removeAttribute("v-ref:"+u(this.descriptor.ref)),this.literal&&this.setComponent(this.expression))},update:function(t){this.literal||this.setComponent(t)},setComponent:function(t,e){if(this.invalidatePending(),t){var i=this;this.resolveComponent(t,function(){i.mountComponent(e)})}else this.unbuild(!0),this.remove(this.childVM,e),this.childVM=null},resolveComponent:function(t,e){var i=this;this.pendingComponentCb=w(function(n){i.ComponentName=n.options.name||("string"==typeof t?t:null),i.Component=n,e()}),this.vm._resolveComponent(t,this.pendingComponentCb)},mountComponent:function(t){this.unbuild(!0);var e=this,i=this.Component.options.activate,n=this.getCached(),r=this.build();i&&!n?(this.waitingFor=r,Fe(i,r,function(){e.waitingFor===r&&(e.waitingFor=null,e.transition(r,t))})):(n&&r._updateRef(),this.transition(r,t))},invalidatePending:function(){this.pendingComponentCb&&(this.pendingComponentCb.cancel(),this.pendingComponentCb=null)},build:function(t){var e=this.getCached();if(e)return e;if(this.Component){var i={name:this.ComponentName,el:le(this.el),template:this.inlineTemplate,parent:this._host||this.vm,_linkerCachable:!this.inlineTemplate,_ref:this.descriptor.ref,_asComponent:!0,_isRouterView:this._isRouterV
|
||
|
//# sourceMappingURL=vue.min.js.map
|
||
|
/**
|
||
|
* vue-resource v0.7.0
|
||
|
* https://github.com/vuejs/vue-resource
|
||
|
* Released under the MIT License.
|
||
|
*/
|
||
|
|
||
|
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.VueResource=e():t.VueResource=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){function r(t){var e=n(1);e.config=t.config,e.warning=t.util.warn,e.nextTick=t.util.nextTick,t.url=n(2),t.http=n(8),t.resource=n(23),t.Promise=n(10),Object.defineProperties(t.prototype,{$url:{get:function(){return e.options(t.url,this,this.$options.url)}},$http:{get:function(){return e.options(t.http,this,this.$options.http)}},$resource:{get:function(){return t.resource.bind(this)}},$promise:{get:function(){return function(e){return new t.Promise(e,this)}.bind(this)}}})}window.Vue&&Vue.use(r),t.exports=r},function(t,e){function n(t,e,o){for(var i in e)o&&(r.isPlainObject(e[i])||r.isArray(e[i]))?(r.isPlainObject(e[i])&&!r.isPlainObject(t[i])&&(t[i]={}),r.isArray(e[i])&&!r.isArray(t[i])&&(t[i]=[]),n(t[i],e[i],o)):void 0!==e[i]&&(t[i]=e[i])}var r=e,o=[],i=window.console;r.warn=function(t){i&&r.warning&&(!r.config.silent||r.config.debug)&&i.warn("[VueResource warn]: "+t)},r.error=function(t){i&&i.error(t)},r.trim=function(t){return t.replace(/^\s*|\s*$/g,"")},r.toLower=function(t){return t?t.toLowerCase():""},r.isArray=Array.isArray,r.isString=function(t){return"string"==typeof t},r.isFunction=function(t){return"function"==typeof t},r.isObject=function(t){return null!==t&&"object"==typeof t},r.isPlainObject=function(t){return r.isObject(t)&&Object.getPrototypeOf(t)==Object.prototype},r.options=function(t,e,n){return n=n||{},r.isFunction(n)&&(n=n.call(e)),r.merge(t.bind({$vm:e,$options:n}),t,{$options:n})},r.each=function(t,e){var n,o;if("number"==typeof t.length)for(n=0;n<t.length;n++)e.call(t[n],t[n],n);else if(r.isObject(t))for(o in t)t.hasOwnProperty(o)&&e.call(t[o],t[o],o);return t},r.defaults=function(t,e){for(var n in e)void 0===t[n]&&(t[n]=e[n]);return t},r.extend=function(t){var e=o.slice.call(arguments,1);return e.forEach(function(e){n(t,e)}),t},r.merge=function(t){var e=o.slice.call(arguments,1);return e.forEach(function(e){n(t,e,!0)}),t}},function(t,e,n){function r(t,e){var n,i=t;return s.isString(t)&&(i={url:t,params:e}),i=s.merge({},r.options,this.$options,i),r.transforms.forEach(function(t){n=o(t,n,this.$vm)},this),n(i)}function o(t,e,n){return function(r){return t.call(n,r,e)}}function i(t,e,n){var r,o=s.isArray(e),a=s.isPlainObject(e);s.each(e,function(e,u){r=s.isObject(e)||s.isArray(e),n&&(u=n+"["+(a||r?u:"")+"]"),!n&&o?t.add(e.name,e.value):r?i(t,e,u):t.add(u,e)})}var s=n(1),a=document.documentMode,u=document.createElement("a");r.options={url:"",root:null,params:{}},r.transforms=[n(3),n(5),n(6),n(7)],r.params=function(t){var e=[],n=encodeURIComponent;return e.add=function(t,e){s.isFunction(e)&&(e=e()),null===e&&(e=""),this.push(n(t)+"="+n(e))},i(e,t),e.join("&").replace(/%20/g,"+")},r.parse=function(t){return a&&(u.href=t,t=u.href),u.href=t,{href:u.href,protocol:u.protocol?u.protocol.replace(/:$/,""):"",port:u.port,host:u.host,hostname:u.hostname,pathname:"/"===u.pathname.charAt(0)?u.pathname:"/"+u.pathname,search:u.search?u.search.replace(/^\?/,""):"",hash:u.hash?u.hash.replace(/^#/,""):""}},t.exports=s.url=r},function(t,e,n){var r=n(4);t.exports=function(t){var e=[],n=r.expand(t.url,t.params,e);return e.forEach(function(e){delete t.params[e]}),n}},function(t,e){e.expand=function(t,e,n){var r=this.parse(t),o=r.expand(e);return n&&n.push.apply(n,r.vars),o},e.parse=function(t){var n=["+","#",".","/",";","?","&"],r=[];return{vars:r,expand:function(o){return t.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(t,i,s){if(i){var a=null,u=[];if(-1!==n.indexOf(i.charAt(0))&&(a=i.charAt(0),i=i.substr(1)),i.split(/,/g).forEach(function(t){var n=/([^:\*]*)(?::(\d+)|(\*))?/.exec(t);u.push.apply(u,e.getValues(o,a,n[1],n[2]||n[3])),r.push(n[1])}),a&&"+"!==a){var c=",";return"?"===a?c="&":"#"!
|
||
|
/************************************************
|
||
|
DOCUMENT READY
|
||
|
************************************************/
|
||
|
var tabela = null;
|
||
|
var anketa_id = 0;
|
||
|
|
||
|
$(document).ready(function () {
|
||
|
// pridobimo ID ankete, ko je dokument naložen
|
||
|
anketa_id = $('#srv_meta_anketa_id').val();
|
||
|
|
||
|
//vklopljeno iskanje za vse select box elemente
|
||
|
$('.h-selected select.hierarhija-select').chosen();
|
||
|
$('.h-selected.hierarhija-select').chosen();
|
||
|
|
||
|
//Vklopi nice input file
|
||
|
$("input[type=file]").nicefileinput({
|
||
|
label: 'Poišči datoteko...'
|
||
|
});
|
||
|
|
||
|
|
||
|
//Data Tables konfiguracija za vpis šifrantov
|
||
|
if ($('#vpis-sifrantov-admin-tabela').length > 0) {
|
||
|
tabela = $('#vpis-sifrantov-admin-tabela').DataTable({
|
||
|
"processing": true,
|
||
|
"lengthMenu": [[20, 40, 100, 200, -1], [20, 40, 100, 200, "vse"]],
|
||
|
"ajax": 'ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=get-datatables-data',
|
||
|
"drawCallback": function (settings) {
|
||
|
if (tabela.page.info().recordsTotal == 0) {
|
||
|
$('#div-datatables').hide();
|
||
|
$('#hierarhija-jstree-ime').hide();
|
||
|
$('#admin_hierarhija_jstree').hide();
|
||
|
} else {
|
||
|
$('#div-datatables').show();
|
||
|
$('#hierarhija-jstree-ime').show();
|
||
|
$('#admin_hierarhija_jstree').show();
|
||
|
}
|
||
|
},
|
||
|
"createdRow": function (row, data, rowIndex) {
|
||
|
// gremo po vseh td elementih
|
||
|
$.each($('td', row), function (colIndex) {
|
||
|
|
||
|
// SQL query nam vrne objek, ki ga uporabimo za datatables vpis vrstice
|
||
|
if (data[colIndex] && data[colIndex].label) {
|
||
|
// Vsaka celica ima id strukture, ki je potreben za urejanje uporabbnikov za posamezno vrstico
|
||
|
$(this).attr('data-struktura', data[colIndex].id);
|
||
|
|
||
|
// Vsaka celica ima številko nivoja - level
|
||
|
$(this).attr('data-level', data[colIndex].level);
|
||
|
|
||
|
// Prikaz podatkov
|
||
|
$(this).html(data[colIndex].label);
|
||
|
}
|
||
|
|
||
|
});
|
||
|
},
|
||
|
"language": {
|
||
|
"url": "modules/mod_hierarhija/js/vendor/datatables-slovenian.json"
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
// datatables za prikaz že vpisanih šifrantov
|
||
|
if ($('#pregled-sifrantov-admin-tabela').length > 0) {
|
||
|
$('#pregled-sifrantov-admin-tabela').DataTable({
|
||
|
ajax: 'ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=get-datatables-data&m=1&p=1',
|
||
|
"language": {
|
||
|
"url": "modules/mod_hierarhija/js/vendor/datatables-slovenian.json"
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
// Klik na ikono za komentar
|
||
|
$('.surveycomment').on('click', function () {
|
||
|
dodajKomentar();
|
||
|
});
|
||
|
|
||
|
// Klik na ikono za upload logo - naloži logotip
|
||
|
$('.logo-upload').on('click', function () {
|
||
|
uploadLogo();
|
||
|
});
|
||
|
|
||
|
// Skrivamo filtrov in vprašanj pri analizah
|
||
|
$('.znak').on('click', function (e) {
|
||
|
var razred = e.currentTarget.className;
|
||
|
|
||
|
if (razred == 'znak minus') {
|
||
|
$('#div_means_dropdowns').animate('slow').hide();
|
||
|
$('.minus').hide();
|
||
|
$('.plus').show();
|
||
|
} else {
|
||
|
$('#div_means_dropdowns').animate('slow').show();
|
||
|
$('.plus').hide();
|
||
|
$('.minus').show();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// Skrijemo error, ki se je pojavil
|
||
|
$('.error-display').delay(10000).fadeOut('slow');
|
||
|
});
|
||
|
// uredi vrstico
|
||
|
// function urediVrsticoHierarhije(id) {
|
||
|
// var anketa_id = $('#anketa_id').val();
|
||
|
// var el = $('.btn-urejanje-hierarhije[data-id="' + id + '"]').parent().siblings().last();
|
||
|
// var text = el.html().split(" - ");
|
||
|
//
|
||
|
// // pridobi vse uporabnike, ki so dodani na trenutno hierarhijo
|
||
|
// var opcije = [];
|
||
|
// // $.post("ajax.php?anketa=" + anketa_id + "&t=hierarhija-ajax&a=gradnja-hierarhije&m=get-uporabniki", {
|
||
|
// // id: id
|
||
|
// // }).success(function (data) {
|
||
|
// // if (data == 0)
|
||
|
// // return opcije;
|
||
|
// //
|
||
|
// // // vse emaili dodamo med opcije in polje, ki ga kasneje združimo v string
|
||
|
// // $.each(JSON.parse(data), function (key, val) {
|
||
|
// // opcije.push('<option value="' + key + '" ' + val.selected + '>' + val.uporabnik + '</option>');
|
||
|
// // });
|
||
|
// //
|
||
|
// // el.html('Izbira: <b>' + text[0] + '</b><br/>Uporabniki:<select id="select2-email-' + id + '" multiple>' + opcije.join("") + '</seclect>');
|
||
|
// // $('.btn-urejanje-hierarhije[data-id="' + id + '"]').text('Vpiši').attr('onclick', 'vpisiVrsticoHierarhije(' + id + ')');
|
||
|
// //
|
||
|
// // $('#select2-email-' + id).select2();
|
||
|
// // });
|
||
|
//
|
||
|
//
|
||
|
// }
|
||
|
|
||
|
var vrsticaAktivnoUrejanje = {
|
||
|
html: '',
|
||
|
id: 0,
|
||
|
izbris: 0
|
||
|
};
|
||
|
|
||
|
function urediVrsticoHierarhije(id) {
|
||
|
// V kolikor je ponovno kliknil na urejanje, potem samo vrnemo in na ponovno neurejanje
|
||
|
if (vrsticaAktivnoUrejanje.id == id) {
|
||
|
// Vpišemo stare podatke vrstice, brez urejanja
|
||
|
$('#vpis-sifrantov-admin-tabela .aktivno-urejanje').html(vrsticaAktivnoUrejanje.html);
|
||
|
|
||
|
// Odstranimo razrede
|
||
|
$('#vpis-sifrantov-admin-tabela .h-uporabnik').remove();
|
||
|
$('#vpis-sifrantov-admin-tabela .aktivno-urejanje').removeClass();
|
||
|
|
||
|
// če je bil uporabnik izbrisan potem osvežimo celotno tabelo
|
||
|
if (vrsticaAktivnoUrejanje.izbris == 1)
|
||
|
tabela.ajax.reload(null, false);
|
||
|
|
||
|
|
||
|
// Ponastavimo globalno spremenljivko
|
||
|
return vrsticaAktivnoUrejanje = {
|
||
|
html: '',
|
||
|
id: 0,
|
||
|
izbris: 0
|
||
|
};
|
||
|
}
|
||
|
|
||
|
// V kolikor obstaja podatek cele vrstice od prej in je aktivni razred . aktivno-urejanje, potem vsebino prekopiramo
|
||
|
if (vrsticaAktivnoUrejanje.html.length > 0 && $('#vpis-sifrantov-admin-tabela .aktivno-urejanje').length > 0)
|
||
|
$('#vpis-sifrantov-admin-tabela .aktivno-urejanje').html(vrsticaAktivnoUrejanje.html);
|
||
|
|
||
|
|
||
|
// Izbriše ikonice za urejanje uprabnikov in odstrani aktivni razred urejanja
|
||
|
$('#vpis-sifrantov-admin-tabela .h-uporabnik').remove();
|
||
|
$('#vpis-sifrantov-admin-tabela .aktivno-urejanje').removeClass();
|
||
|
|
||
|
|
||
|
// Vsi elementi, ki vsebujejo ID strukture
|
||
|
var vrstica = $('[data-struktura="' + id + '"]').parent();
|
||
|
var stolpci = vrstica.children('[data-struktura]');
|
||
|
|
||
|
// Obarvamo ozadje vrstice
|
||
|
vrstica.addClass('aktivno-urejanje');
|
||
|
|
||
|
// Celotno vrstico shranimo globalno in tudi id
|
||
|
vrsticaAktivnoUrejanje = {
|
||
|
html: $('#vpis-sifrantov-admin-tabela .aktivno-urejanje').html(),
|
||
|
id: id
|
||
|
}
|
||
|
|
||
|
// Pridobimo vse TD celice in v vsaki dodamo ikono ter uporabnike za urejati
|
||
|
stolpci.each(function (key, val) {
|
||
|
var self = this;
|
||
|
var html = $(this).html().split("<br>");
|
||
|
var idStrukture = $(this).attr('data-struktura');
|
||
|
var uporabnikiHtml = '';
|
||
|
|
||
|
// Ajax request, ki pridobi vse uporabnike za vsak nivo posebej
|
||
|
$.post('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=gradnja-hierarhije&m=get-uporabniki', {
|
||
|
id: idStrukture
|
||
|
}, function (data) {
|
||
|
var urejanjeUporabnika = '';
|
||
|
|
||
|
// Ikona za pop up, kjer dodajamo še email
|
||
|
urejanjeUporabnika = '<div class="h-uporabnik"><span class="faicon users icon-as_link" onclick="odpriPopup(' + idStrukture + ')"></span></div>';
|
||
|
|
||
|
// Če imamo uporabnike na tem nivoju potem jih ustrezno dodamo
|
||
|
if (data.length > 0) {
|
||
|
var podatki = JSON.parse(data);
|
||
|
|
||
|
// V kolikor imamo uporabnika samo na zadnjem nivoju, potem ni možnosti urejanja, ker ima opcijo briši nivo in uporabnika
|
||
|
if ($(self).attr('data-level') == podatki.maxLevel) {
|
||
|
|
||
|
// Opcije za urejanje uporabnika ne potrebujemo na zadnjem nivoju
|
||
|
urejanjeUporabnika = '<div class="h-uporabnik"><span class="icon user-red" onclick="odpriPopup(' + idStrukture + ', 1)"></span></div>';
|
||
|
|
||
|
uporabnikiHtml = '<div class="h-uporabnik-prikazi">Uporabnik/i:' +
|
||
|
'<ul>';
|
||
|
|
||
|
// Dodamo vse uporabnike, ki so na tem nivoju
|
||
|
if (podatki.uporabniki) {
|
||
|
$.each(podatki.uporabniki, function (key, val) {
|
||
|
uporabnikiHtml += '<li>' + val.uporabnik + '</li>';
|
||
|
});
|
||
|
}
|
||
|
|
||
|
uporabnikiHtml += '</ul></div>';
|
||
|
|
||
|
}
|
||
|
else {
|
||
|
// Izpišemo uporabnike in možnost brisanja
|
||
|
uporabnikiHtml = '<div class="h-uporabnik-prikazi">Uporabnik/i:' +
|
||
|
'<ul>';
|
||
|
|
||
|
// Dodamo vse uporabnike, ki so na tem nivoju
|
||
|
if (podatki.uporabniki) {
|
||
|
$.each(podatki.uporabniki, function (key, val) {
|
||
|
uporabnikiHtml += '<li>' + val.uporabnik + ' <span class="icon brisi-x" data-id="' + val.id + '" onclick="izbrisiUporabnikaDataTables(' + val.id + ')"></span></li>';
|
||
|
});
|
||
|
}
|
||
|
|
||
|
uporabnikiHtml += '</ul></div>';
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
$(self).html(html[0] + urejanjeUporabnika + uporabnikiHtml);
|
||
|
|
||
|
});
|
||
|
|
||
|
|
||
|
});
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Prikaži pop-up za uvoz vseh uporabnikov preko tekstovnega polja
|
||
|
*/
|
||
|
function uvoziUporabnike() {
|
||
|
$('#fade').fadeTo('slow', 0.5);
|
||
|
$('#vrednost_edit').html('').fadeIn('slow').load('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=gradnja-hierarhije&m=import-user&s=get');
|
||
|
|
||
|
var position = $(window).scrollTop();
|
||
|
$('#vrednost_edit').css('top', position + 300);
|
||
|
}
|
||
|
|
||
|
function shraniVseVpisaneUporabnike() {
|
||
|
var users = $('#users-email-import').val();
|
||
|
|
||
|
if (users.length < 5)
|
||
|
return false;
|
||
|
|
||
|
$.post('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=gradnja-hierarhije&m=import-user&s=post', {
|
||
|
users: JSON.stringify(users)
|
||
|
}).then(function (response) {
|
||
|
// Pridobimoo uporabnike za select box
|
||
|
var uporabniki = JSON.parse(response);
|
||
|
|
||
|
gradnjaHierarhijeApp.user.dropdown = uporabniki;
|
||
|
gradnjaHierarhijeApp.osebe.prikazi = false;
|
||
|
|
||
|
// Zapremo Pop up
|
||
|
vrednost_cancel();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Vrstico hierarhije kopiramo v možnost za urejanje uporabnikov, pridobimo zadnji id
|
||
|
*/
|
||
|
function kopirajVrsticoHierarhije(id) {
|
||
|
// Poženemo funkcijo v datoteki custom-vue.js
|
||
|
gradnjaHierarhijeApp.pridobiIdSifrantovInUporabnike(id);
|
||
|
}
|
||
|
|
||
|
// Odpre PopUp in naloži možnost za dodajanje novega uporabnika - textarea
|
||
|
function odpriPopup(id, last) {
|
||
|
var last = last || 0;
|
||
|
|
||
|
$('#fade').fadeTo('slow', 0.5);
|
||
|
$('#vrednost_edit').html('').fadeIn('slow').load('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=gradnja-hierarhije&m=uredi-uporabnike-v-strukturi', {
|
||
|
struktura: id,
|
||
|
last: last
|
||
|
});
|
||
|
|
||
|
var position = $(window).scrollTop();
|
||
|
$('#vrednost_edit').css('top', position + 300);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Zamenjamo email uporabnika na zadnjem nivoju z novim emailom - find and replace all
|
||
|
*/
|
||
|
function zamenjajUporabnikaZNovim() {
|
||
|
$('#fade').fadeTo('slow', 0.5);
|
||
|
$('#vrednost_edit').html('').fadeIn('slow').load('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=gradnja-hierarhije&m=zamenjaj-uporabnika-v-strukturi');
|
||
|
|
||
|
var position = $(window).scrollTop();
|
||
|
$('#vrednost_edit').css('top', position + 300);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Testno preverimo koliko uporabnikov se bo zamenjalo
|
||
|
*/
|
||
|
function testnoPreveriKolikoUporabnikovBoZamnjenihVStrukturi() {
|
||
|
var findEmail = $('#find-email').val();
|
||
|
var replaceEmail = $('#replace-email').val();
|
||
|
|
||
|
|
||
|
if (errorPreverjanjeEmailaZaZamenjavo(findEmail, replaceEmail))
|
||
|
return false;
|
||
|
|
||
|
$.post('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=gradnja-hierarhije&m=post-st-zamenjav', {
|
||
|
'find_email': findEmail
|
||
|
}).then(function (response) {
|
||
|
var besedilo = 'Elektronski naslov <b>' + findEmail + '</b> ni bil najden med obstoječimi uporabniki in ga ni mogoče zamenjati.';
|
||
|
|
||
|
if (response > 0)
|
||
|
besedilo = 'Elektronski naslov <b>' + findEmail + '</b> bo zamenjan z naslovom <b>' + replaceEmail + '</b>.<br />Število zamenjav: <b>' + response + '</b>.';
|
||
|
|
||
|
$('#st_zamenjav_uporabnikov').html(besedilo)
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function potriZamenjavoUporabnika() {
|
||
|
var findEmail = $('#find-email').val();
|
||
|
var replaceEmail = $('#replace-email').val();
|
||
|
|
||
|
if (errorPreverjanjeEmailaZaZamenjavo(findEmail, replaceEmail))
|
||
|
return false;
|
||
|
|
||
|
$.post('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=gradnja-hierarhije&m=post-zamenjaj-uporabnika-z-novim', {
|
||
|
'find_email': findEmail,
|
||
|
'replace_email': replaceEmail
|
||
|
}).then(function (response) {
|
||
|
|
||
|
tabela.ajax.reload(null, false);
|
||
|
|
||
|
// zapremo popup
|
||
|
$('#fade').fadeOut('slow');
|
||
|
$('#vrednost_edit').hide();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Preverimo, če sta emaila pravilno vpisana tist, ki ga iščemo in tisti, ki je za zamenjavo
|
||
|
* @param findEmail
|
||
|
* @param replaceEmail
|
||
|
* @returns {boolean}
|
||
|
*/
|
||
|
function errorPreverjanjeEmailaZaZamenjavo(findEmail, replaceEmail) {
|
||
|
// Preden preverimo odstranimo vse errorje
|
||
|
$('#find-email').siblings('.error-label').hide();
|
||
|
$('#find-email').removeClass('error');
|
||
|
$('#replace-email').siblings('.error-label').hide();
|
||
|
$('#replace-email').removeClass('error')
|
||
|
|
||
|
if (!preveriFormatEmail(findEmail)) {
|
||
|
$('#find-email').siblings('.error-label').show();
|
||
|
$('#find-email').addClass('error');
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
if (!preveriFormatEmail(replaceEmail)) {
|
||
|
$('#replace-email').siblings('.error-label').show();
|
||
|
$('#replace-email').addClass('error');
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
};
|
||
|
|
||
|
|
||
|
function preveriFormatEmail(email) {
|
||
|
var EMAIL_REGEX = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
||
|
|
||
|
return EMAIL_REGEX.test(email);
|
||
|
}
|
||
|
|
||
|
// Shranimo email vpisanih oseb pri urejanju za specifično strukturo
|
||
|
function shrani_email(id, last) {
|
||
|
var emails = $('#vpis-email-popup').val().split('\n');
|
||
|
var last = last || 0;
|
||
|
|
||
|
//Loop po vseh vpisanih emailih
|
||
|
$.each(emails, function (key, val) {
|
||
|
val = val.split(',');
|
||
|
|
||
|
// V kolikor email ni pravilen ga odstranimo iz polja
|
||
|
if (!preveriPravilnoVpisanmail(val[0])) {
|
||
|
emails.splice(key, 1);
|
||
|
} else {
|
||
|
emails[key] = val;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// V kolikor ni bil vpisan email, ampak je samo klik na potrdi
|
||
|
if (typeof emails[0] == 'undefined')
|
||
|
return 'error';
|
||
|
|
||
|
// Posredujemo samo pravilne emaile
|
||
|
$.post('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=gradnja-hierarhije&m=post-dodatne-uporabnike-k-strukturi', {
|
||
|
uporabniki: JSON.stringify(emails),
|
||
|
struktura: id,
|
||
|
last: last
|
||
|
}, function () {
|
||
|
|
||
|
// osvežimo celoten DataTables
|
||
|
tabela.ajax.reload(null, false);
|
||
|
|
||
|
// Osvežimo tudi jsTree
|
||
|
jstree_json_data(anketa_id, 1);
|
||
|
|
||
|
// zapremo popup
|
||
|
$('#fade').fadeOut('slow');
|
||
|
$('#vrednost_edit').hide();
|
||
|
|
||
|
// celotno strukturo shranimo v string in srv_hierarhija_save
|
||
|
gradnjaHierarhijeApp.shraniUporabnikeNaHierarhijo();
|
||
|
});
|
||
|
|
||
|
}
|
||
|
|
||
|
function preveriPravilnoVpisanmail(email) {
|
||
|
var EMAIL_REGEX = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
||
|
|
||
|
return EMAIL_REGEX.test(email);
|
||
|
}
|
||
|
|
||
|
// Izbriši uporabnika iz DataTables
|
||
|
function izbrisiUporabnikaDataTables(id) {
|
||
|
var str_id = $('[data-id="' + id + '"]').parents('[data-struktura]').attr('data-struktura');
|
||
|
|
||
|
$.post('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=brisi&m=uporabnika', {
|
||
|
uporabnik_id: id,
|
||
|
struktura_id: str_id
|
||
|
}).then(function () {
|
||
|
// Če je uporabnik uspešno izbrisan iz baze, potem tudi izbrišemo iz DataTables
|
||
|
$('[data-id="' + id + '"]').parent().remove();
|
||
|
|
||
|
vrsticaAktivnoUrejanje.izbris = 1;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// vpiši vrstico v bazo
|
||
|
function vpisiVrsticoHierarhije(id) {
|
||
|
var polje = [];
|
||
|
|
||
|
// vse izbrani ID oseb
|
||
|
$('#select2-email-' + id + ' option:selected').each(function () {
|
||
|
polje.push($(this).val());
|
||
|
});
|
||
|
|
||
|
$.post("ajax.php?anketa=" + anketa_id + "&t=hierarhija-ajax&a=gradnja-hierarhije&m=post-uporabniki", {
|
||
|
uporabniki: JSON.stringify(polje),
|
||
|
struktura: id
|
||
|
}, function (data) {
|
||
|
// v kolikor ni vpisanega uporabnika potem opozorimo
|
||
|
if (data == 'uporabnik') {
|
||
|
return swal({
|
||
|
title: "Opozorilo!",
|
||
|
text: "Uporabnik mora biti določen.",
|
||
|
type: "error",
|
||
|
timer: 2000,
|
||
|
confirmButtonText: "OK"
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// osvežimo tabelo, ko smo vpisali podatke
|
||
|
tabela.ajax.reload(null, false);
|
||
|
jstree_json_data(anketa_id, 1);
|
||
|
});
|
||
|
|
||
|
}
|
||
|
|
||
|
// datatables urejanje, brisanje
|
||
|
function brisiVrsticoHierarhije(id, osveziTabelo) {
|
||
|
|
||
|
var osveziTabelo = osveziTabelo || 0;
|
||
|
|
||
|
$.post("ajax.php?anketa=" + anketa_id + "&t=hierarhija-ajax&a=brisi_element_v_hierarhiji", {
|
||
|
id: id
|
||
|
}, function (p) {
|
||
|
//Hierarhije je že zgrajena
|
||
|
if (p == 2) {
|
||
|
swal({
|
||
|
title: "Hierarhija je zaklenjena!",
|
||
|
text: "Brisanje ni več mogoče, ker je hierarhija zaklenjena za urejanje.",
|
||
|
type: "error",
|
||
|
timer: 2000,
|
||
|
confirmButtonText: "OK"
|
||
|
});
|
||
|
//ko javimo napako moramo jstree osvežiti, ker v nasprotnem primeru js še vedno izbriše omenjen element
|
||
|
jstree_json_data(anketa_id, 1);
|
||
|
}
|
||
|
|
||
|
//Hierarhije je že zgrajena
|
||
|
if (p == 'obstaja') {
|
||
|
swal({
|
||
|
title: "Brisanje ni mogoče!",
|
||
|
text: "Ne morete izbrisati omenjenega elementa, ker imate pod njem še izbrano hierarhijo.",
|
||
|
type: "error",
|
||
|
timer: 2000,
|
||
|
confirmButtonText: "OK"
|
||
|
});
|
||
|
//ko javimo napako moramo jstree osvežiti, ker v nasprotnem primeru js še vedno izbriše omenjen element
|
||
|
jstree_json_data(anketa_id, 1);
|
||
|
}
|
||
|
|
||
|
|
||
|
tabela.ajax.reload(null, false);
|
||
|
jstree_json_data(anketa_id, 1);
|
||
|
|
||
|
// celotno strukturo shranimo v string in srv_hierarhija_save
|
||
|
gradnjaHierarhijeApp.shraniUporabnikeNaHierarhijo();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
//preverimo, če je obkljukano polje
|
||
|
function preveriCheckDodajEmail() {
|
||
|
if ($("#dovoli-vpis-emaila").is(':checked')) {
|
||
|
$('#vpis-emaila').show();
|
||
|
}
|
||
|
else {
|
||
|
$('#vpis-emaila').val('').hide();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Opoyorimo v kolikor želi uporabni nadaljevati in ni shraniv emaila trenutnega uporabnika
|
||
|
*/
|
||
|
function opozoriUporabnikaKerNiPotrdilPodatkov(href) {
|
||
|
var level = gradnjaHierarhijeApp.podatki.maxLevel;
|
||
|
|
||
|
// V kolikor imamo uporabnika na zadnjem nivoju
|
||
|
if (typeof gradnjaHierarhijeApp.osebe.nove[level] === 'object') {
|
||
|
swal({
|
||
|
title: "Opozorilo!",
|
||
|
text: "Vnesli ste strukturo za dotičnega uporabnika, vendar omenjene podatke niste shranili. Ali jih želite izbrisati?",
|
||
|
type: "error",
|
||
|
showCancelButton: true,
|
||
|
confirmButtonText: "Nadaljuj",
|
||
|
cancelButtonText: "Prekliči"
|
||
|
}, function (dismiss) {
|
||
|
|
||
|
// V kolikor se uporabnik strinja,ga preusmerimo na naslednji korak
|
||
|
if (dismiss)
|
||
|
window.location.href = href;
|
||
|
|
||
|
});
|
||
|
} else {
|
||
|
window.location.href = href;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Shrani komentar k hierarhiji
|
||
|
*/
|
||
|
function shraniKomentar() {
|
||
|
|
||
|
var komentar = $('#hierarhija-komentar').val();
|
||
|
var id = $('#hierarhija-komentar').attr('data-id');
|
||
|
|
||
|
$.post("ajax.php?anketa=" + anketa_id + "&t=hierarhija-ajax&a=komentar-k-hierarhiji&m=post", {
|
||
|
id: id,
|
||
|
komentar: komentar
|
||
|
}).success(function (podatki) {
|
||
|
if (podatki == 1) {
|
||
|
// zapremo popup
|
||
|
$('#fade').fadeOut('slow');
|
||
|
$('#vrednost_edit').hide();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Predogled emaila za učitelje in managerje
|
||
|
*
|
||
|
* 1 - email za učitelje na zadnjem nivoju
|
||
|
* 2 - email za managerje na vseh ostalih nivojih
|
||
|
*
|
||
|
* @param int vrsta - za katero vrsta emaila gre
|
||
|
*/
|
||
|
function previewMail(vrsta) {
|
||
|
|
||
|
|
||
|
$('#fade').fadeTo('slow', 0.5);
|
||
|
|
||
|
$('#vrednost_edit').html('').fadeIn('slow').load('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=ostalo&m=preview-mail', {
|
||
|
vrsta: vrsta,
|
||
|
});
|
||
|
|
||
|
var position = $(window).scrollTop();
|
||
|
$('#vrednost_edit').css('top', position + 300);
|
||
|
}
|
||
|
|
||
|
|
||
|
/************************************************
|
||
|
Hierarhija - jstree, bootstrap select
|
||
|
************************************************/
|
||
|
function jstree_json_data(anketa, refresh) {
|
||
|
$.ajax({
|
||
|
async: true,
|
||
|
type: "GET",
|
||
|
url: "ajax.php?anketa=" + anketa + "&t=hierarhija-ajax&a=json_jstree",
|
||
|
dataType: "json",
|
||
|
success: function (json) {
|
||
|
if (typeof refresh === 'undefined') {
|
||
|
jstree_vkljuci(json);
|
||
|
}
|
||
|
else {
|
||
|
//v kolikor imamo jsTree že postavljen samo osvežimo podatke
|
||
|
var $jstree = $('#admin_hierarhija_jstree').jstree(true);
|
||
|
$jstree.settings.core.data = json;
|
||
|
$jstree.refresh();
|
||
|
}
|
||
|
},
|
||
|
error: function (xhr, ajaxOptions, thrownError) {
|
||
|
console.log(thrownError);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function jstree_vkljuci(jsonData) {
|
||
|
$("#admin_hierarhija_jstree").jstree({
|
||
|
//'plugins': ['contextmenu', 'dnd', 'massload', 'sort', 'types'],
|
||
|
'plugins': ['search', 'massload', 'contextmenu'],
|
||
|
'contextmenu': {
|
||
|
"items": function ($node) {
|
||
|
return {
|
||
|
"Delete": {
|
||
|
"label": "Briši",
|
||
|
"action": function (data) {
|
||
|
var ref = $.jstree.reference(data.reference),
|
||
|
sel = ref.get_selected();
|
||
|
if (!sel.length) {
|
||
|
return false;
|
||
|
}
|
||
|
ref.delete_node(sel);
|
||
|
|
||
|
var url = window.location.href;
|
||
|
var par = url.match(/(?:anketa=)(\w+)/g);
|
||
|
var anketa_id = par[0].slice(7, par[0].length);
|
||
|
|
||
|
//pošljemo POST ukaz, da pobrišemo element
|
||
|
brisiVrsticoHierarhije($node.id);
|
||
|
}
|
||
|
},
|
||
|
//"Edit": {
|
||
|
// "label": "Urejanje uporabnika",
|
||
|
// 'action': function () {
|
||
|
//
|
||
|
//
|
||
|
// }
|
||
|
//}
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
'core': {
|
||
|
"animation": 0,
|
||
|
"check_callback": true,
|
||
|
"expand_selected_onload": true,
|
||
|
"themes": {
|
||
|
"name": "proton",
|
||
|
"responsive": true
|
||
|
},
|
||
|
"data": jsonData,
|
||
|
},
|
||
|
//"types": {
|
||
|
// "#": {
|
||
|
// "max_children": 1,
|
||
|
// "max_depth": 20,
|
||
|
// "valid_children": ["root"]
|
||
|
// },
|
||
|
// "root": {
|
||
|
// "icon": "glyphicon glyphicon-home",
|
||
|
// "valid_children": ["default"]
|
||
|
// },
|
||
|
// "default": {
|
||
|
// "valid_children": ["default", "file"]
|
||
|
// },
|
||
|
// "file": {
|
||
|
// "icon": "glyphicon glyphicon-home",
|
||
|
// "valid_children": []
|
||
|
// }
|
||
|
//}
|
||
|
}).on('loaded.jstree', function () {
|
||
|
$("#admin_hierarhija_jstree").jstree('open_all');
|
||
|
}).bind("select_node.jstree", function (event, data) {
|
||
|
//V kolikor kliknemo na hierarhijo z levim miškinim klikom, potem v meniju select izberemo ustrezne vrednosti
|
||
|
// ko vrednost zberemo iz jstree je potrebno baziti, da preverimo, če je neznan event, ker v nasprotnem primeru submit sproži omenjeno skripto
|
||
|
if (event.isTrigger == 2 && (typeof data.event !== "undefined")) {
|
||
|
//Pošljemo id, kamor je bil izveden klik in nato prikažemo ustrezne select opcije
|
||
|
var url = window.location.href;
|
||
|
var par = url.match(/(?:anketa=)(\w+)/g);
|
||
|
var anketa_id = par[0].slice(7, par[0].length);
|
||
|
|
||
|
$.post("ajax.php?anketa=" + anketa_id + "&t=hierarhija-ajax&a=posodobi_sifrante", {
|
||
|
id: data.node.id
|
||
|
}).success(function (podatki) {
|
||
|
var sifrant = JSON.parse(podatki);
|
||
|
var st_naprej = 2;
|
||
|
|
||
|
|
||
|
// najprej je potrebno vsa polja skriti, da nato prikažemo samo potrebna
|
||
|
for (var st = 1; st <= sifrant.user.max_level; st++) {
|
||
|
$('.h-nivo-' + st).val('').trigger("liszt:updated"); //update chosen list -> v novejših verzijah je chosen:update
|
||
|
$('.h-level-' + st).removeClass('h-selected').hide();
|
||
|
}
|
||
|
|
||
|
//naredimo zanko po vseh nivojih
|
||
|
$.each(sifrant, function (key, val) {
|
||
|
//izluščimo samo številke,ker uporabnika ne potrebujemo
|
||
|
if ($.isNumeric(key)) {
|
||
|
$('.h-level-' + key).addClass('h-selected').show();
|
||
|
$('.h-nivo-' + key).val(val.select).chosen().trigger("liszt:updated");
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// prikažemo še možnost vnos naslednjega elementa
|
||
|
var naslednjiSifrant = data.node.parents.length + 1;
|
||
|
|
||
|
// Če uporabnik ni admin, potem ime ŠOLE ne vnesemo v HIERARHIJO in zato nam prikaže en element premalo in je potrebno +1, da nam prikaže možnost vnosa tudi naslednjega elementa
|
||
|
if (sifrant.user.id_strukture != 'admin')
|
||
|
naslednjiSifrant += 1;
|
||
|
|
||
|
$('.h-level-' + naslednjiSifrant).addClass('h-selected').show();
|
||
|
$('.h-nivo-' + naslednjiSifrant).val('').chosen();
|
||
|
|
||
|
|
||
|
});
|
||
|
|
||
|
}
|
||
|
});
|
||
|
|
||
|
}
|
||
|
|
||
|
function dodajKomentar() {
|
||
|
$('#fade').fadeTo('slow', 0.5);
|
||
|
$('#vrednost_edit').html('').fadeIn('slow').load('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=komentar-k-hierarhiji&m=get');
|
||
|
|
||
|
var position = $(window).scrollTop();
|
||
|
$('#vrednost_edit').css('top', position + 300);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Odpre popup za nalaganje logotipa
|
||
|
*/
|
||
|
function uploadLogo() {
|
||
|
$('#fade').fadeTo('slow', 0.5);
|
||
|
$('#vrednost_edit').html('').fadeIn('slow').load('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=upload-logo&m=get', function () {
|
||
|
|
||
|
//Vklopi nice input file
|
||
|
$("input[type=file]").nicefileinput({
|
||
|
label: 'Poišči datoteko...'
|
||
|
});
|
||
|
|
||
|
});
|
||
|
|
||
|
|
||
|
var position = $(window).scrollTop();
|
||
|
$('#vrednost_edit').css('top', position + 300);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Izbriše logotip, ki je že naložen
|
||
|
* @param $id
|
||
|
*/
|
||
|
function izbrisiLogo($id) {
|
||
|
var id = $('form > input[name="id"]').val();
|
||
|
|
||
|
$.post('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=upload-logo&m=delete', {
|
||
|
id: id
|
||
|
}).success(function () {
|
||
|
$('#hierarhija-logo').remove();
|
||
|
});
|
||
|
}
|
||
|
/**************************** HIERARHIJA END ***************************/
|
||
|
|
||
|
function printElement(ime) {
|
||
|
var divToPrint = $('.printElement');
|
||
|
|
||
|
if (ime == 'Status') {
|
||
|
var objekt = divToPrint.html();
|
||
|
divToPrint = '<table class="printTable" id="printHierarhijaStatus">' + objekt + '</table>';
|
||
|
} else if (ime == 'Analize') {
|
||
|
divToPrint = document.getElementById('div_means_data').innerHTML;
|
||
|
}
|
||
|
|
||
|
var newWin = window.open('', ime, 'scrollbars=1');
|
||
|
|
||
|
newWin.document.write('<html><head><title>Okno za tiskanje - ' + ime + '</title>');
|
||
|
newWin.document.write('<meta http-equiv="Cache-Control" content="no-store"/>');
|
||
|
newWin.document.write('<meta http-equiv="Pragma" content="no-cache"/>');
|
||
|
newWin.document.write('<meta http-equiv="Expires" content="0"/>');
|
||
|
|
||
|
newWin.document.write('<link rel="stylesheet" href="css/print.css#13042017">');
|
||
|
newWin.document.write('<link rel="stylesheet" href="css/style_print.css" media="print">');
|
||
|
newWin.document.write('</head><body class="print_analiza">');
|
||
|
newWin.document.write('<div id="printIcon">');
|
||
|
newWin.document.write('<a href="#" onclick="window.print(); return false;">Natisni</a>');
|
||
|
newWin.document.write('</div>');
|
||
|
|
||
|
newWin.document.write(divToPrint);
|
||
|
newWin.document.write('</body></html>');
|
||
|
newWin.focus();
|
||
|
|
||
|
newWin.document.close();
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Posodobi nastavitve v bazi, za pošiljanje kod samo za učitelja ali tudi za vse
|
||
|
*
|
||
|
* @param string {vrednost}
|
||
|
*/
|
||
|
function posodobiPosiljanjeKod(vrednost, val) {
|
||
|
$.post('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=ostalo&m=opcije', {
|
||
|
name: vrednost,
|
||
|
value: val,
|
||
|
method: (val == 0 ? 'delete' : '')
|
||
|
}).success(function () {
|
||
|
$('#poslji-kode').val(vrednost);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* POšlji obvestilo učiteljem, kateri še niso bili obveščeni
|
||
|
*
|
||
|
* @param {}
|
||
|
* @return
|
||
|
*/
|
||
|
function obvestiUciteljeZaResevanjeAnkete() {
|
||
|
$.post('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=ostalo&m=poslji-email-samo-uciteljem').success(function () {
|
||
|
$('#obvesti-samo-ucitelje').html('<span style="color:#fa4913;">Elektronsko sporočilo s kodo je bilo posredovano vsem učiteljem, ki so na zgornjem seznamu</span>');
|
||
|
});
|
||
|
}
|
||
|
// ker aplikacije ne sprejema JSON potem vuejs emulira json in pošlje kot navadno polje
|
||
|
Vue.http.options.emulateJSON = true;
|
||
|
|
||
|
// select2 direktiva
|
||
|
Vue.directive('select', {
|
||
|
twoWay: true,
|
||
|
priority: 1000,
|
||
|
|
||
|
params: ['options'],
|
||
|
|
||
|
bind: function () {
|
||
|
var that = this;
|
||
|
|
||
|
|
||
|
$(this.el).select2({
|
||
|
width: '100%'
|
||
|
}).on('change', function () {
|
||
|
that.set(this.value)
|
||
|
});
|
||
|
|
||
|
},
|
||
|
update: function (value) {
|
||
|
$(this.el).val(value).trigger('change');
|
||
|
},
|
||
|
unbind: function () {
|
||
|
$(this.el).off().select2('destroy')
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
|
||
|
// Definiramo globalne spremenljivke za Vuejs
|
||
|
var gradnjaHierarhijeApp = '';
|
||
|
var hierarhijaApp = '';
|
||
|
|
||
|
$(document).ready(function () {
|
||
|
if (document.querySelector('#hierarhija-app')) {
|
||
|
hierarhijaApp = new Vue({
|
||
|
el: '#hierarhija-app',
|
||
|
data: {
|
||
|
novaHierarhijaSt: 1, // številka prve ravni je vedno default 1, in pomeni da še nimamo nobenega vpisa ravni
|
||
|
inputNivo: [],
|
||
|
anketaId: $('#srv_meta_anketa_id').val(),
|
||
|
sifrant: '',
|
||
|
imeHierarhije: {
|
||
|
shrani: '',
|
||
|
aktivna: '',
|
||
|
index: '-1',
|
||
|
id: '-1',
|
||
|
urejanje: false,
|
||
|
editTitle: false
|
||
|
},
|
||
|
prikaziImeZaShranjevanje: false,
|
||
|
shranjenaHierarhija: [
|
||
|
{
|
||
|
id: 'default',
|
||
|
ime: 'Hierarhija Šolski center',
|
||
|
anketa: '',
|
||
|
stUporabnikov: 0,
|
||
|
hierarhija: [
|
||
|
{
|
||
|
st: 1,
|
||
|
ime: 'Šolski center',
|
||
|
sifranti: [
|
||
|
{ime: 'Ljubljana'},
|
||
|
{ime: 'Maribor'},
|
||
|
{ime: 'Koper'}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
st: 2,
|
||
|
ime: 'Šola',
|
||
|
sifranti: [
|
||
|
{ime: 'Gimnazija'},
|
||
|
{ime: 'Poklicna šola'}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
st: 3,
|
||
|
ime: 'Program',
|
||
|
sifranti: [
|
||
|
{ime: 'Gimnazijec'},
|
||
|
{ime: 'Fizik'}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
st: 4,
|
||
|
ime: 'Letnik',
|
||
|
sifranti: [
|
||
|
{ime: '1. letnik'},
|
||
|
{ime: '2. letnik'},
|
||
|
{ime: '3. letnik'},
|
||
|
{ime: '4. letnik'}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
st: 5,
|
||
|
ime: 'Razred',
|
||
|
sifranti: [
|
||
|
{ime: 'a'},
|
||
|
{ime: 'b'},
|
||
|
{ime: 'c'},
|
||
|
{ime: 'd'}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
st: 6,
|
||
|
ime: 'Predmet',
|
||
|
sifranti: [
|
||
|
{ime: 'mat'},
|
||
|
{ime: 'fiz'},
|
||
|
{ime: 'slo'},
|
||
|
{ime: 'geo'}
|
||
|
]
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
id: 'default',
|
||
|
ime: 'Šola',
|
||
|
anketa: '',
|
||
|
stUporabnikov: 0,
|
||
|
hierarhija: [
|
||
|
{
|
||
|
st: 1,
|
||
|
ime: 'Letnik',
|
||
|
sifranti: [
|
||
|
{ime: '1. letnik'},
|
||
|
{ime: '2. letnik'},
|
||
|
{ime: '3. letnik'},
|
||
|
{ime: '4. letnik'}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
st: 2,
|
||
|
ime: 'Razred',
|
||
|
sifranti: [
|
||
|
{ime: 'a'},
|
||
|
{ime: 'b'},
|
||
|
{ime: 'c'},
|
||
|
{ime: 'd'}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
st: 3,
|
||
|
ime: 'Predmet',
|
||
|
sifranti: [
|
||
|
{ime: 'mat'},
|
||
|
{ime: 'fiz'},
|
||
|
{ime: 'slo'},
|
||
|
{ime: 'geo'}
|
||
|
]
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
defaultHierarhija: '',
|
||
|
// omogočimo predogled hierarhije
|
||
|
previewHierarhije: {
|
||
|
vklop: true,
|
||
|
input: [],
|
||
|
ime: '',
|
||
|
index: '',
|
||
|
id: '',
|
||
|
uporabniki: 0
|
||
|
},
|
||
|
|
||
|
imeNivoja: '',
|
||
|
brisanjeDropdownMenija: [], // ali je opcija za meni vklopljena ali izklopljena
|
||
|
vklopiUrejanje: true, // Vklopimo možnost urejanja preimenovanja
|
||
|
vpisanaStruktura: false, // pove nam če je vpisana struktura oz. so dodani uporabniki na hierarhijo
|
||
|
kopirajTudiUporabnike: 0, // iz seznama shranjenih hierarhij kopiramo tudi uporabnike/strukturo, če je seveda shranjena
|
||
|
},
|
||
|
|
||
|
// watch:{
|
||
|
// 'imeHierarhije.shrani':function(val, oldVal){
|
||
|
// this.imeHierarhije.aktivna = val;
|
||
|
// }
|
||
|
// },
|
||
|
ready: function () {
|
||
|
// Pridobi število nivojev
|
||
|
this.pridobiStNivojev();
|
||
|
|
||
|
var that = this;
|
||
|
// Pridobi nivoje in podatke
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=json_nivoji_podatki').success(function (data) {
|
||
|
if (data != 'undefined' && data.length > 0) {
|
||
|
$.each(data, function (index, value) {
|
||
|
that.inputNivo.push(value);
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// Pridobimo shranjene hierarhije v bazi
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=json_shranjene_hierarhije').success(function (data) {
|
||
|
if (data != 'undefined' && data.length > 0) {
|
||
|
$.each(data, function (index, value) {
|
||
|
that.shranjenaHierarhija.push(value);
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
// pridobimo vse nastavitve iz baze
|
||
|
this.vseNastavitveIzBaze();
|
||
|
},
|
||
|
|
||
|
// Pridobimo trenutno število nivojev in dodamo novega
|
||
|
methods: {
|
||
|
// Omogoči možnost preimenovanja ankete
|
||
|
editTitleToogle: function () {
|
||
|
return this.imeHierarhije.editTitle = !this.imeHierarhije.editTitle;
|
||
|
},
|
||
|
|
||
|
dodajNivoHierarhije: function (st) {
|
||
|
var that = this;
|
||
|
var ime = this.imeNivoja || 'nivo';
|
||
|
var st = this.novaHierarhijaSt;
|
||
|
this.imeNivoja = '';
|
||
|
|
||
|
// POST request
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=post_nivoji', {
|
||
|
nivo: st,
|
||
|
ime: ime
|
||
|
}).success(function (data) {
|
||
|
// ko dobimo id od ravni potem napolnimo dom element inputNivo
|
||
|
that.inputNivo.push({
|
||
|
st: st,
|
||
|
ime: ime,
|
||
|
id: data,
|
||
|
sifranti: []
|
||
|
});
|
||
|
|
||
|
// posodobimo število nivojev
|
||
|
that.pridobiStNivojev();
|
||
|
|
||
|
});
|
||
|
|
||
|
},
|
||
|
|
||
|
odstraniNivoHierarhije: function (index, id) {
|
||
|
var st = this.inputNivo[index].st;
|
||
|
|
||
|
this.inputNivo.forEach(function (obj) {
|
||
|
if (obj.st > st)
|
||
|
obj.st = obj.st - 1;
|
||
|
});
|
||
|
|
||
|
var that = this;
|
||
|
|
||
|
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=brisi_nivo_hierarhija', {
|
||
|
id_nivoja: id
|
||
|
}).then(function (response) {
|
||
|
if (response.status == 200 && response.data == 0) {
|
||
|
swal({
|
||
|
title: "Napaka!",
|
||
|
text: "Omenjen nivo ni mogoče izbrisati, ker je že uporabljen pri izgradnji hierarhije.",
|
||
|
type: "warning",
|
||
|
confirmButtonText: "OK"
|
||
|
});
|
||
|
} else {
|
||
|
that.inputNivo.splice(index, 1);
|
||
|
that.novaHierarhijaSt = (that.novaHierarhijaSt - 1);
|
||
|
}
|
||
|
});
|
||
|
},
|
||
|
|
||
|
// izbrišemo vse ravni v hierarhiji, da lahko uporabnik na novo ustvarja
|
||
|
izbrisiCelotnoHierarhijo: function () {
|
||
|
|
||
|
// Prejšno hierarhijo vedno shranimo
|
||
|
if (this.inputNivo.length > 0)
|
||
|
this.shraniTrenutnoHierarhijo();
|
||
|
|
||
|
// Če uporabnik ne vpiše imena potem obstoječo ne brišemo
|
||
|
if (this.pobrisiHierarhijoInZacniNovo()) {
|
||
|
// Vse spremenljivke postavimo na 0
|
||
|
this.imeHierarhije = {
|
||
|
aktivna: '',
|
||
|
shrani: '',
|
||
|
index: '-1',
|
||
|
id: '-1'
|
||
|
};
|
||
|
|
||
|
this.previewHierarhije.vklop = false;
|
||
|
}
|
||
|
},
|
||
|
|
||
|
// PObrišemo trenutno aktivno hierarhijo in začnemo novo, ki jo tudi shranimo za kasnejši preklic
|
||
|
pobrisiHierarhijoInZacniNovo: function () {
|
||
|
var that = this;
|
||
|
|
||
|
//# V kolikor dela novo hierarhijo potem vedno prikažemo možnost za vpis imena
|
||
|
swal({
|
||
|
title: "Nova hierarhija",
|
||
|
text: "Vpišite ime nove hierarhije:",
|
||
|
type: "input",
|
||
|
animation: "slide-from-top",
|
||
|
closeOnConfirm: false,
|
||
|
closeOnCancel: true,
|
||
|
showCancelButton: true,
|
||
|
cancelButtonText: 'Prekliči',
|
||
|
allowOutsideClick: true,
|
||
|
inputPlaceholder: "Primer: Hierarhija šola"
|
||
|
}, function (inputValue) {
|
||
|
if (inputValue === false) return false;
|
||
|
if (inputValue === "") {
|
||
|
swal.showInputError("Ime hierarhije je obvezno!");
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
//# Pobrišemo vse ravni in vso trenutno hierarhij v kolikor vpiše novo
|
||
|
that.$http.post('ajax.php?anketa=' + that.anketaId + '&t=hierarhija-ajax&a=izbrisi_vse_ravni');
|
||
|
|
||
|
// Ime hierarhije shranimo v vue spremenljivko
|
||
|
that.getSaveOptions('aktivna_hierarhija_ime', inputValue);
|
||
|
that.imeHierarhije.shrani = inputValue;
|
||
|
|
||
|
// Ime hierarhije shranimo tudi v srv_hierarhija_shrani, da dobimo ID vnosa, kamor potem shranjujemo json podatke z vsemi šifranti in nivoji
|
||
|
that.$http.post('ajax.php?anketa=' + that.anketaId + '&t=hierarhija-ajax&a=shrani_hierarhijo', {
|
||
|
ime: inputValue,
|
||
|
hierarhija: null
|
||
|
}).success(function (id) {
|
||
|
// shranimo tudi ID hierarhije
|
||
|
that.getSaveOptions('srv_hierarhija_shrani_id', id);
|
||
|
});
|
||
|
|
||
|
|
||
|
location.reload();
|
||
|
});
|
||
|
|
||
|
|
||
|
},
|
||
|
|
||
|
// Dodamo šifrant k ustreznemu nivoju/ravni
|
||
|
dodajSifrant: function (index, idNivoja) {
|
||
|
var text = $('[data-nivo="' + idNivoja + '"]').val();
|
||
|
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=post_sifranti', {
|
||
|
idNivoja: idNivoja,
|
||
|
imeSifranta: text
|
||
|
}).success(function (data) {
|
||
|
this.inputNivo[index].sifranti.push({
|
||
|
ime: text
|
||
|
});
|
||
|
|
||
|
$('[data-nivo="' + idNivoja + '"]').val('');
|
||
|
|
||
|
var opcije = '';
|
||
|
$.each(data, function (index, value) {
|
||
|
opcije += '<option value = "#">' + value + '</option>';
|
||
|
});
|
||
|
|
||
|
$('#nivo-' + idNivoja + ' td:eq( 1 )').html('<select name="nivo" data-opcije="' + idNivoja + '">' + opcije + '</select>');
|
||
|
});
|
||
|
|
||
|
},
|
||
|
|
||
|
brisiSifrant: function (idNivoja) {
|
||
|
var that = this;
|
||
|
|
||
|
// Toogle spremenljivka, ki prikaže urejanje ali drop down meni
|
||
|
if (typeof this.brisanjeDropdownMenija[idNivoja] == 'undefined')
|
||
|
this.brisanjeDropdownMenija[idNivoja] = false;
|
||
|
|
||
|
this.brisanjeDropdownMenija[idNivoja] = !this.brisanjeDropdownMenija[idNivoja];
|
||
|
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=brisi_sifrante', {
|
||
|
idNivoja: idNivoja,
|
||
|
}).success(function (data) {
|
||
|
|
||
|
if (that.brisanjeDropdownMenija[idNivoja]) {
|
||
|
var opcije = '<div class="sifranti-razmik"><ul>';
|
||
|
$.each(data, function (index, value) {
|
||
|
opcije += '<li class="sifranti-brisanje" data-sifrant="' + value.id + '"><span class="icon brisi-x" onclick="izbrisiSifrant(' + value.id + ')"></span>' + value.ime + '</li>';
|
||
|
});
|
||
|
opcije += '</ul></div>';
|
||
|
|
||
|
$('#nivo-' + idNivoja + ' td:eq( 1 )').html(opcije);
|
||
|
} else {
|
||
|
$('[data-nivo="' + idNivoja + '"]').val('');
|
||
|
|
||
|
var opcije = '';
|
||
|
$.each(data, function (index, value) {
|
||
|
opcije += '<option value = "#">' + value.ime + '</option>';
|
||
|
});
|
||
|
|
||
|
$('#nivo-' + idNivoja + ' td:eq( 1 )').html('<select name="nivo" data-opcije="' + idNivoja + '">' + opcije + '</select>');
|
||
|
}
|
||
|
|
||
|
});
|
||
|
|
||
|
},
|
||
|
|
||
|
posodobiUnikatnega: function (id, obj) {
|
||
|
if (obj.unikaten == 0) {
|
||
|
obj.unikaten = 1;
|
||
|
} else {
|
||
|
obj.unikaten = 0;
|
||
|
}
|
||
|
|
||
|
$.post("ajax.php?anketa=" + this.anketaId + "&t=hierarhija-ajax&a=popravi_nivo_hierarhija", {
|
||
|
id_nivoja: id,
|
||
|
unikaten: obj.unikaten
|
||
|
});
|
||
|
},
|
||
|
|
||
|
// posodobi ime labele nivoja
|
||
|
preimenujLabeloNivoja: function (id) {
|
||
|
this.$http.post("ajax.php?anketa=" + this.anketaId + "&t=hierarhija-ajax&a=popravi_nivo_hierarhija", {
|
||
|
id_nivoja: id,
|
||
|
besedilo: $('[data-labela="' + id + '"]').text()
|
||
|
});
|
||
|
},
|
||
|
|
||
|
// Pridobimo število nivojev, ki je vpisano za izbrano anketo
|
||
|
pridobiStNivojev: function () {
|
||
|
var that = this;
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=st_nivojev').success(function (data) {
|
||
|
that.novaHierarhijaSt = (data + 1);
|
||
|
|
||
|
if (data > 0)
|
||
|
that.previewHierarhije.vklop = false;
|
||
|
|
||
|
});
|
||
|
},
|
||
|
|
||
|
// Shranimo trenutno izdelano hierarhijo
|
||
|
shraniTrenutnoHierarhijo: function (shraniPodIstiId) {
|
||
|
// Če želimo izvesti update ali create new
|
||
|
var shraniPodIstiId = shraniPodIstiId || false;
|
||
|
|
||
|
// V kolikor samo uporabimo checkbox in je še vedno isto potem naredimo update
|
||
|
if (this.imeHierarhije.shrani == this.imeHierarhije.aktivna)
|
||
|
shraniPodIstiId = true;
|
||
|
|
||
|
// preverimo, če je shranjena struktura potem
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=pridobi-shranjeno-hierarhijo-bool', {
|
||
|
id: this.imeHierarhije.id,
|
||
|
polje: 'struktura',
|
||
|
}).then(function (response) {
|
||
|
|
||
|
// UPDATE se vedno zgodi, kadar gremo naprej
|
||
|
if (shraniPodIstiId && this.imeHierarhije.index > 1 && this.imeHierarhije.index != 'default') {
|
||
|
return this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=update-aktivno-hierarhijo', {
|
||
|
id: this.imeHierarhije.id,
|
||
|
hierarhija: JSON.stringify(this.inputNivo)
|
||
|
}).success(function () {
|
||
|
// našo trenutno hierarhijo shranimo tudi v dom, da v kolikor uporabnik še enkrat izbere isto hierarhijo, da se mu naložijo isti elementi
|
||
|
this.shranjenaHierarhija[this.imeHierarhije.index].hierarhija = JSON.stringify(this.inputNivo);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// Hierarhijo shranimo na novo
|
||
|
|
||
|
// če hierarhije ne poimenujemo potem dobi privzeto ime Hierarhija in čas kopiranja ali pa ostoječe ime in čas kopiranja (Šola, Hierarhija Šolski center)
|
||
|
if (!this.prikaziImeZaShranjevanje) {
|
||
|
// Če je že kopija kakšne od preh hierarhije potem dobi obstoječe ime in uro
|
||
|
var time = new Date();
|
||
|
if (this.imeHierarhije.aktivna.length > 0) {
|
||
|
// ime_H:i:s"
|
||
|
var sekunde = ('0' + time.getSeconds()).slice(-2);
|
||
|
var minute = ('0' + time.getMinutes()).slice(-2);
|
||
|
var ure = ('0' + time.getHours()).slice(-2);
|
||
|
|
||
|
this.imeHierarhije.shrani = this.imeHierarhije.aktivna + '_' + ure + ':' + minute + ':' + sekunde;
|
||
|
} else {
|
||
|
// Drugače pa "Hierarhija - H:i:s"
|
||
|
this.imeHierarhije.shrani = 'Hierarhija - ' + time.getHours() + ':' + time.getMinutes() + ':' + time.getSeconds();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=shrani_hierarhijo', {
|
||
|
ime: this.imeHierarhije.shrani,
|
||
|
hierarhija: JSON.stringify(this.inputNivo)
|
||
|
}).then(function (responseShrani) {
|
||
|
this.imeHierarhije.aktivna = this.imeHierarhije.shrani
|
||
|
|
||
|
// SHRANJENO HIERARHIJO shranimo tudi v spremenljivko za kasnejši preklic
|
||
|
this.shranjenaHierarhija.push({
|
||
|
id: responseShrani.data,
|
||
|
ime: this.imeHierarhije.shrani,
|
||
|
hierarhija: (typeof this.inputNivo == 'string' ? JSON.stringify(this.inputNivo) : this.inputNivo),
|
||
|
anketa: this.anketaId,
|
||
|
dom: true,
|
||
|
});
|
||
|
|
||
|
this.imeHierarhije.index = (this.shranjenaHierarhija.length - 1);
|
||
|
|
||
|
// shranimo tudi ID hierarhije
|
||
|
this.getSaveOptions('srv_hierarhija_shrani_id', responseShrani.data);
|
||
|
this.imeHierarhije.id = responseShrani.data;
|
||
|
});
|
||
|
|
||
|
// Ime shranjene hierarhije shranimo tudi kot aktivno hierarhijo
|
||
|
this.getSaveOptions('aktivna_hierarhija_ime', this.imeHierarhije.shrani);
|
||
|
});
|
||
|
|
||
|
|
||
|
},
|
||
|
|
||
|
/*
|
||
|
* Gumb za premikanje naprej
|
||
|
*/
|
||
|
premikNaprej: function (ime) {
|
||
|
|
||
|
if (ime == 'uredi-uporabnike') {
|
||
|
this.shraniTrenutnoHierarhijo(false, true);
|
||
|
|
||
|
// Preusmerimo na urejanje uporabnikov in naredimo cel reload ter pobrišemo cache
|
||
|
window.location.replace(location.origin + location.pathname + "?anketa=" + this.anketaId + "&a=hierarhija_superadmin&m=uredi-uporabnike");
|
||
|
}
|
||
|
},
|
||
|
|
||
|
/*
|
||
|
* Uporabimo shranjeno hierarhijo iz seznama
|
||
|
*/
|
||
|
uporabiShranjenoHierarhijo: function (index, id, uporabniki) {
|
||
|
var that = this;
|
||
|
|
||
|
// Tukaj moram imeti podatke še o starih stvareh
|
||
|
this.imeHierarhije.id = id;
|
||
|
this.uporabnikiZaKopijo = uporabniki || 0;
|
||
|
|
||
|
if (this.vpisanaStruktura)
|
||
|
return swal({
|
||
|
title: "Opozorilo!",
|
||
|
text: "Pri omenjeni strukturi hierarhije so že dodani uporabniki in nove hierarhije ni več mogoče izbrati, lahko samo dopolnjujete obstoječo.",
|
||
|
type: "warning",
|
||
|
confirmButtonText: "Zapri"
|
||
|
});
|
||
|
|
||
|
// Kadar še nimamo vpisane nobene ravni
|
||
|
if (this.novaHierarhijaSt == 1)
|
||
|
return that.posodobiHierarhijo(index, id);
|
||
|
|
||
|
swal({
|
||
|
title: "Kopiranje hierarhije",
|
||
|
text: "Z nadaljevanjem se bo hierarhija skopirala v novo ime, obstoječa pa se bo avtomatsko shranila pod dosedanje ime.",
|
||
|
type: "info",
|
||
|
showCancelButton: true,
|
||
|
cancelButtonText: "Ne",
|
||
|
confirmButtonText: "Da, nadaljuj."
|
||
|
}, function (shrani) {
|
||
|
|
||
|
if (shrani) {
|
||
|
// V kolikor želi uporabnik shraniti trenutno hierarhijo in pustimo index kot je
|
||
|
that.shraniTrenutnoHierarhijo(true);
|
||
|
|
||
|
setTimeout(function () {
|
||
|
Vue.nextTick(function () {
|
||
|
// Izberemo novo hierarhijo
|
||
|
that.posodobiHierarhijo(index, id);
|
||
|
});
|
||
|
}, 100);
|
||
|
|
||
|
}
|
||
|
|
||
|
});
|
||
|
},
|
||
|
|
||
|
// Preglej shranjeno hierarhijo in ne shrani v bazo
|
||
|
pregledShranjeneHierarhije: function (index, id, uporabniki) {
|
||
|
// Nastavitve trenutne strukture na katero je kliknil uporabnik shranimo v predogled, da se lahko uporabi v kolikor bi uporabnik želel uporabiti omenjeno hierarhijo
|
||
|
this.previewHierarhije = {
|
||
|
vklop: true,
|
||
|
ime: this.shranjenaHierarhija[index].ime,
|
||
|
index: index,
|
||
|
id: id,
|
||
|
uporabniki: uporabniki
|
||
|
};
|
||
|
|
||
|
|
||
|
if (typeof this.shranjenaHierarhija[index].hierarhija == 'object')
|
||
|
this.previewHierarhije.input = this.shranjenaHierarhija[index].hierarhija;
|
||
|
else
|
||
|
this.previewHierarhije.input = JSON.parse(this.shranjenaHierarhija[index].hierarhija);
|
||
|
},
|
||
|
|
||
|
// Izklopimo predogled hierarhije
|
||
|
izklopiPredogled: function () {
|
||
|
this.previewHierarhije = {
|
||
|
vklop: false,
|
||
|
ime: '',
|
||
|
index: '',
|
||
|
id: '',
|
||
|
uporabniki: 0,
|
||
|
input: []
|
||
|
};
|
||
|
},
|
||
|
|
||
|
// Uporabnik je iz predogleda izbral željeno hierarhijo, ki se bo aktivirala
|
||
|
aktivirajIzbranoHierarhijo: function () {
|
||
|
this.uporabiShranjenoHierarhijo(this.previewHierarhije.index, this.previewHierarhije.id, this.previewHierarhije.uporabniki);
|
||
|
},
|
||
|
|
||
|
posodobiHierarhijo: function (index, id) {
|
||
|
var that = this;
|
||
|
|
||
|
// dodamo active class
|
||
|
this.imeHierarhije.index = index;
|
||
|
|
||
|
// Če urejamo hierarhijo potem nič ne urejamo sql baze in klik na ime hierarhije omogoči samo preimenovanje in brisanje
|
||
|
if (this.imeHierarhije.urejanje)
|
||
|
return '';
|
||
|
|
||
|
// preimenujemo Hierarhijo
|
||
|
this.imeHierarhije.aktivna = this.shranjenaHierarhija[index].ime;
|
||
|
|
||
|
// // shranimo ime hierarhije in trenuten id izbrane hierarhije v opcije
|
||
|
// this.getSaveOptions('aktivna_hierarhija_ime', this.imeHierarhije.aktivna);
|
||
|
// this.getSaveOptions('srv_hierarhija_shrani_id', id);
|
||
|
|
||
|
// Kadar prikličemo hierarhijo, ki je prazna, smo izbrali samo ime potem nič ne vrnemo, vse postavimo na nič
|
||
|
if (this.shranjenaHierarhija[index].hierarhija == '') {
|
||
|
this.inputNivo = [];
|
||
|
this.novaHierarhijaSt = 1;
|
||
|
// naloži šifrante, ker imamo šifrante v JSON.stringfy moramo anredite revers v object in če je object potem samo zapišemo v spremenljivko, drugače pa delamo reverse
|
||
|
} else if ((index < 2 || id === 'default') && typeof this.shranjenaHierarhija[index].hierarhija == 'object') {
|
||
|
this.inputNivo = this.shranjenaHierarhija[index].hierarhija;
|
||
|
} else {
|
||
|
this.inputNivo = JSON.parse(this.shranjenaHierarhija[index].hierarhija);
|
||
|
}
|
||
|
|
||
|
|
||
|
// prevzeto ne kopira uporabnikov, samo če pote če potrdi iz seznama
|
||
|
this.kopirajTudiUporabnike = 0;
|
||
|
|
||
|
// pošljemo ravni in nivoje ter shranimo vse potrebno v
|
||
|
if (this.uporabnikiZaKopijo == 1) {
|
||
|
setTimeout(function () {
|
||
|
swal({
|
||
|
title: "Opozorilo!",
|
||
|
text: "Ali želite kopirati tudi strukturo uporabnikov?",
|
||
|
type: "info",
|
||
|
showCancelButton: true,
|
||
|
cancelButtonText: "Ne",
|
||
|
confirmButtonText: "Da, tudi uporabnike."
|
||
|
}, function (shrani) {
|
||
|
|
||
|
if (shrani)
|
||
|
that.kopirajTudiUporabnike = 1;
|
||
|
|
||
|
Vue.nextTick(function () {
|
||
|
that.$http.post('ajax.php?anketa=' + that.anketaId + '&t=hierarhija-ajax&a=obnovi-hierarhijo', {
|
||
|
hierarhija: that.inputNivo,
|
||
|
uporabniki: that.kopirajTudiUporabnike,
|
||
|
id: id
|
||
|
}).success(function (data) {
|
||
|
that.inputNivo = [];
|
||
|
|
||
|
if (data != 'undefined' && data != '' && data.length > 0)
|
||
|
$.each(data, function (index, value) {
|
||
|
that.inputNivo.push(value);
|
||
|
});
|
||
|
|
||
|
that.shraniTrenutnoHierarhijo();
|
||
|
|
||
|
// posodobimo število nivojev
|
||
|
that.pridobiStNivojev();
|
||
|
|
||
|
});
|
||
|
});
|
||
|
|
||
|
});
|
||
|
}, 100);
|
||
|
} else {
|
||
|
Vue.nextTick(function () {
|
||
|
that.$http.post('ajax.php?anketa=' + that.anketaId + '&t=hierarhija-ajax&a=obnovi-hierarhijo', {
|
||
|
hierarhija: that.inputNivo,
|
||
|
uporabniki: that.kopirajTudiUporabnike,
|
||
|
id: id
|
||
|
}).success(function (data) {
|
||
|
that.inputNivo = [];
|
||
|
|
||
|
if (data != 'undefined' && data != '' && data.length > 0)
|
||
|
$.each(data, function (index, value) {
|
||
|
that.inputNivo.push(value);
|
||
|
});
|
||
|
|
||
|
that.shraniTrenutnoHierarhijo();
|
||
|
|
||
|
// posodobimo število nivojev
|
||
|
that.pridobiStNivojev();
|
||
|
|
||
|
});
|
||
|
});
|
||
|
|
||
|
}
|
||
|
|
||
|
},
|
||
|
|
||
|
// shrani ali pridobi opcije iz baze
|
||
|
getSaveOptions: function (option, value, response) {
|
||
|
if (typeof value != 'undefined' && typeof response == 'undefined')
|
||
|
response = 'save';
|
||
|
|
||
|
if (typeof value == 'undefined' && typeof response == 'undefined')
|
||
|
response = 'get';
|
||
|
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=hierarhija-options&m=' + response, {
|
||
|
option_name: option || '',
|
||
|
option_value: value || ''
|
||
|
}, function (data) {
|
||
|
return data;
|
||
|
});
|
||
|
},
|
||
|
|
||
|
// ko zapustimo urejanje/preimenovanje potem spremenimo tudi dom
|
||
|
preimenujHierarhijo: function (index, id) {
|
||
|
var ime = $.trim($('.h-ime-shranjeno.editable-hierarhija').html());
|
||
|
|
||
|
//odstranimo html tag
|
||
|
var div = document.createElement('div');
|
||
|
div.innerHTML = ime;
|
||
|
ime = $.trim(div.innerText);
|
||
|
|
||
|
var ime_dom = this.shranjenaHierarhija[index].ime;
|
||
|
|
||
|
// V kolikor je bila preimenova aktivna anketa moramo tudi v bazi med opcijami preimenovati
|
||
|
if (this.imeHierarhije.aktivna == ime_dom)
|
||
|
this.getSaveOptions('aktivna_hierarhija_ime', ime);
|
||
|
|
||
|
// v kolikor je zbrisano celotno ime ponovno damo na default
|
||
|
if (id == 'default' || ime.length == 0 || this.shranjenaHierarhija[index].ime.length == 0)
|
||
|
return $('.h-ime-shranjeno.active').html(ime_dom);
|
||
|
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=preimenuj-hierarhijo', {
|
||
|
id: id,
|
||
|
ime: ime
|
||
|
}, function () {
|
||
|
//v kolikor smo v bazi uspešno preimenovali potem tudi v naši spremenljivki preimenujemo
|
||
|
this.shranjenaHierarhija[index].ime = ime;
|
||
|
});
|
||
|
},
|
||
|
|
||
|
izbrisiShranjenoHierarhijo: function (index, id) {
|
||
|
if (id == 'default' || id == this.imeHierarhije.id)
|
||
|
return '';
|
||
|
|
||
|
// post request, ki izbriše iz baze
|
||
|
var obvestilo = this.deleteHierarhijaShrani(id);
|
||
|
|
||
|
if (obvestilo)
|
||
|
this.shranjenaHierarhija.splice(index, 1);
|
||
|
|
||
|
},
|
||
|
|
||
|
// Uvoz in izviz hierarhije v CSV
|
||
|
uvozHierarhije: function () {
|
||
|
$('#fade').fadeTo('slow', 0.5);
|
||
|
$('#vrednost_edit').html('').fadeIn('slow').load('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=uvozi-hierarhijo', function () {
|
||
|
|
||
|
//Vklopi nice input file
|
||
|
$("input[type=file]").nicefileinput({
|
||
|
label: 'Poišči datoteko...'
|
||
|
});
|
||
|
|
||
|
});
|
||
|
|
||
|
var position = $(window).scrollTop();
|
||
|
$('#vrednost_edit').css('top', position + 300);
|
||
|
},
|
||
|
|
||
|
izvozHierarhije: function () {
|
||
|
this.$http.get('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=izvoz-hierarhije');
|
||
|
},
|
||
|
|
||
|
// pridobimo vse nastavitve iz baze
|
||
|
vseNastavitveIzBaze: function () {
|
||
|
var that = this;
|
||
|
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=hierarhija-options&m=get').success(function (data) {
|
||
|
|
||
|
$.each(data, function (index, value) {
|
||
|
if (index == 'aktivna_hierarhija_ime') {
|
||
|
// za prikaz naslova hierarhije
|
||
|
that.imeHierarhije.aktivna = value;
|
||
|
|
||
|
// polje za shranjevanje, da shrani v enako hierarhijo
|
||
|
that.imeHierarhije.shrani = value;
|
||
|
|
||
|
// Če imamo ime hierarhije potem nimamo predogleda
|
||
|
if (value.length > 0)
|
||
|
that.previewHierarhije.vklop = false;
|
||
|
|
||
|
// that.imeHierarhije.index = (that.shranjenaHierarhija.length - 1);
|
||
|
}
|
||
|
|
||
|
if (index == 'admin_skrij_urejanje_nivojev')
|
||
|
that.vklopiUrejanje = (value == 'true' ? true : false);
|
||
|
|
||
|
if (index == 'srv_hierarhija_shrani_id') {
|
||
|
// na levi strani izbere ustrezno hierarhijo, moramo nastavit timeout, ker drugače ne pridobimo vseh hierarhij
|
||
|
setTimeout(function () {
|
||
|
Vue.nextTick(function () {
|
||
|
$.each(that.shranjenaHierarhija, function (i, val) {
|
||
|
if (val.id == value) {
|
||
|
that.imeHierarhije.index = i;
|
||
|
that.imeHierarhije.id = value;
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
}, 100);
|
||
|
}
|
||
|
|
||
|
// V kolikor imamo vpisano struktur
|
||
|
if (index == 'vpisana_struktura')
|
||
|
that.vpisanaStruktura = value;
|
||
|
|
||
|
});
|
||
|
|
||
|
});
|
||
|
},
|
||
|
|
||
|
posodobiOpcijeHierarhije: function () {
|
||
|
if (this.imeHierarhije.urejanje)
|
||
|
this.vseNastavitveIzBaze();
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Če smo hierarhijo prvič aktivirali potem ponudi popup za vpis imena in shrani ime hierarhije v bazo
|
||
|
*/
|
||
|
hierarhijoSmoAktivirali: function () {
|
||
|
var that = this;
|
||
|
|
||
|
if (this.inputNivo.length == 0 && this.imeHierarhije.aktivna == '' && this.imeHierarhije.shrani == '')
|
||
|
swal({
|
||
|
title: "Nova hierarhija",
|
||
|
text: "Vpišite ime nove hierarhije:",
|
||
|
type: "input",
|
||
|
animation: "slide-from-top",
|
||
|
closeOnConfirm: false,
|
||
|
closeOnCancel: true,
|
||
|
inputPlaceholder: "Primer: Hierarhija šola"
|
||
|
}, function (inputValue) {
|
||
|
if (inputValue === false) return false;
|
||
|
|
||
|
if (inputValue === "") {
|
||
|
swal.showInputError("Ime hierarhije je obvezno!");
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
// Ime hierarhije shranimo v vue spremenljivko
|
||
|
that.getSaveOptions('aktivna_hierarhija_ime', inputValue);
|
||
|
that.imeHierarhije.shrani = inputValue;
|
||
|
that.imeHierarhije.aktivna = inputValue;
|
||
|
|
||
|
swal.close();
|
||
|
});
|
||
|
},
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Pobriše shranjeno hierarhijo v tabeli srv_hierarhija_shrani
|
||
|
*/
|
||
|
deleteHierarhijaShrani: function (id) {
|
||
|
var id = id || 0;
|
||
|
var obvestilo = false;
|
||
|
|
||
|
if (id == 0)
|
||
|
return console.log('brez Id-ja');
|
||
|
|
||
|
// post request, ki izbriše iz baze
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=izbrisi-hierarhijo', {
|
||
|
id: id
|
||
|
}).then(function (response) {
|
||
|
if (response.data == 'success')
|
||
|
obvestilo = true;
|
||
|
|
||
|
return obvestilo;
|
||
|
});
|
||
|
|
||
|
return obvestilo;
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Dodaj komentar k hierarhiji
|
||
|
*/
|
||
|
dodajKomentar: function () {
|
||
|
dodajKomentar();
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Odpre popup za nalaganje logotipa
|
||
|
*/
|
||
|
logoUpload: function () {
|
||
|
uploadLogo();
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
if (document.querySelector('#vue-gradnja-hierarhije')) {
|
||
|
gradnjaHierarhijeApp = new Vue({
|
||
|
el: '#vue-gradnja-hierarhije',
|
||
|
data: {
|
||
|
anketaId: $('#srv_meta_anketa_id').val(),
|
||
|
pageLoadComplete: false,
|
||
|
vpisanaStruktura: false, // pove nam, če je uporabnik že vpisal kakšno strukturo, da s tem zaklenemo vpis novih ravni (obstoječa struktura ne bi bila ok)
|
||
|
izbran: {
|
||
|
skrij: 1,
|
||
|
sifrant: [],
|
||
|
strukturaId: [],
|
||
|
sifrantPodatki: [],
|
||
|
parent: [],
|
||
|
},
|
||
|
// tukaj vpišemo št. nivoja, ki je key in nato sifrante
|
||
|
podatki: [],
|
||
|
|
||
|
// V kolikor uporabnik ni superadmin/admin potem podtke, ki so nad njegovim ali enake njegovemu nivoju pridobimo kot fiksne in se jih ne da spreminjati
|
||
|
fiksniPodatki: [],
|
||
|
|
||
|
// pri vpisu oseb na ustrezni nivo
|
||
|
osebe: {
|
||
|
prikazi: false,
|
||
|
nivo: 0,
|
||
|
vpisane: [], // key je številka nivoja, in potem notri imam object s podatki o osebah
|
||
|
nove: [], // key je številka nivoja in nato notri object s podatki o osebah
|
||
|
textarea: '',
|
||
|
show: [] // boolean, glede na nivo, da pokaže uporabnike pod šifranti
|
||
|
},
|
||
|
|
||
|
// podatki o uporabniku, ki ni admin
|
||
|
user: {
|
||
|
struktura: [],
|
||
|
uporabnik: [],
|
||
|
dropdown: [],
|
||
|
selected: ''
|
||
|
},
|
||
|
|
||
|
// vpis emaila preko textarea
|
||
|
email: {
|
||
|
napake: [],
|
||
|
opozorilo: false
|
||
|
},
|
||
|
|
||
|
elektronskiNaslovi: [{
|
||
|
email: "prvi@email.si",
|
||
|
ime: "Prvo Ime"
|
||
|
}, {
|
||
|
email: "drugi@email.si",
|
||
|
ime: "Drugi email"
|
||
|
}],
|
||
|
|
||
|
},
|
||
|
watch: {
|
||
|
'user.selected': function (val) {
|
||
|
|
||
|
if (typeof val !== 'undefined' && val !== null && val.length > 0)
|
||
|
this.vpisemoUporabnikaIzDropDownMenija();
|
||
|
|
||
|
}
|
||
|
},
|
||
|
computed: {},
|
||
|
|
||
|
ready: function () {
|
||
|
var that = this;
|
||
|
|
||
|
// Pridobimo omejitve uporabnika
|
||
|
this.preveriNivoInPraviceUporabnika();
|
||
|
|
||
|
// Pridobimo vse nivoje in šifrante neglede na status uporabnika
|
||
|
this.naloziVseNivojeInSifrante();
|
||
|
|
||
|
// Ko je celoten JS in spletna stran naložena potem spremenimo select2 change event, da deluje
|
||
|
document.onreadystatechange = function () {
|
||
|
|
||
|
// Ko je stran čisto naložena izvedemo kodo
|
||
|
if (document.readyState === 'complete') {
|
||
|
|
||
|
// potrebno, ker drugače v FF in IE stvar ne deluje, da je zakasnitev 300ms in se počaka potem na naslednjo spremembo
|
||
|
setTimeout(function () {
|
||
|
Vue.nextTick(function () {
|
||
|
|
||
|
// Prikažemo prvi nivo
|
||
|
that.pageLoadComplete = true;
|
||
|
|
||
|
// Select 2 event
|
||
|
$(".select2").on('change', function () {
|
||
|
|
||
|
// uogtotovimo, kje smo spremenili podatek
|
||
|
var st = that.izbran.sifrant.length;
|
||
|
var level = $(this).attr('data-level');
|
||
|
|
||
|
that.izbran.sifrant.forEach(function (value, key) {
|
||
|
if (key > level) {
|
||
|
for (var i = key; i < st; i++) {
|
||
|
that.izbran.sifrantPodatki.$set(i, null);
|
||
|
that.izbran.sifrant[i] = "";
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// Zanka po vseh nivojih, kateri so vpisani
|
||
|
that.izbran.sifrant.forEach(function (value, key) {
|
||
|
if (typeof value != 'undefined' && value.length > 0 && !isNaN(value) && that.izbran.sifrant[key].length > 0) {
|
||
|
that.preveriSifrantZaIzbranNivo(value, key)
|
||
|
}
|
||
|
});
|
||
|
|
||
|
});
|
||
|
});
|
||
|
}, 600);
|
||
|
|
||
|
// Dodamo še možnost helpa v kolikor obstaja
|
||
|
load_help();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Pridobi, če so že vpisani šifranti
|
||
|
this.pridobiNastavitveCeJeVpisanaStruktura();
|
||
|
|
||
|
// Pridobimo uporabnikeza dropdown meni user
|
||
|
this.pridobiUporabnikeZaDropdownList();
|
||
|
|
||
|
},
|
||
|
|
||
|
methods: {
|
||
|
// Preverimo, če je uporabnik admin ali je uporabnik s pravicami na določenem nivoju
|
||
|
preveriNivoInPraviceUporabnika: function () {
|
||
|
var that = this;
|
||
|
|
||
|
// preverimo pravico in pridobimo že vpisano strukturo nad uporabikom
|
||
|
this.$http.get('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=gradnja-hierarhije&m=get-user-level', function (data) {
|
||
|
// pridobimo polji (uporabnik, struktura), v kolikor je admin ni podatka o strukturi
|
||
|
that.user = data;
|
||
|
|
||
|
if (data.uporabnik != 1 && data.struktura) {
|
||
|
// ID strukture, ki je fiksna zapišemo v spremenljivko
|
||
|
data.struktura.forEach(function (val) {
|
||
|
that.izbran.strukturaId.$set(val.izbrani.level, val.izbrani.id);
|
||
|
|
||
|
// Že izbrano strukturo vpišemo v sifrantiPodatki, kjer se dodajajo tudi še na novo dodani podatki
|
||
|
that.izbran.sifrantPodatki.$set(val.izbrani.level, val.izbrani);
|
||
|
});
|
||
|
|
||
|
}
|
||
|
});
|
||
|
},
|
||
|
|
||
|
// Naložimo vse nivoje in pripadajoče šifrante
|
||
|
naloziVseNivojeInSifrante: function () {
|
||
|
var that = this;
|
||
|
|
||
|
// pridobi šifrante za ustrezni nivo, če ni nič izbrano potem vedno pridobi šifrante za prvi nivo
|
||
|
this.$http.get('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=gradnja-hierarhije&m=get-sifranti', function (data) {
|
||
|
data.nivoji.forEach(function (val) {
|
||
|
val.sifranti = [];
|
||
|
|
||
|
// vpišemo nivo in pdoatke nivoja
|
||
|
that.podatki.push(val);
|
||
|
|
||
|
// pole $(this.el).on('change', )g nivoja vpišemo še podatke o šifrantih
|
||
|
data.sifranti.forEach(function (options) {
|
||
|
// tukaj zapišemo šifrante na ustrezen nivo, edino tukaj upoštevamo, da številka nivoja je za 1 manšja, ker če 0 pustimo potem pri prikazuso težave, nivo 1 je element 0
|
||
|
if (val.level == options.level)
|
||
|
that.podatki[(val.level - 1)].sifranti.push(options);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
// Max število nivojev za validacije
|
||
|
that.podatki.maxLevel = data.maxLevel;
|
||
|
});
|
||
|
},
|
||
|
|
||
|
// Preveri, če je šifrant za izbran nivo že vpisan v podatkovno bazo
|
||
|
preveriSifrantZaIzbranNivo: function (sifrant, nivo) {
|
||
|
var that = this;
|
||
|
// Parent vedno vzamemo id elementa, ki je vpisan en nivo prej
|
||
|
var parent_id = (this.izbran.sifrantPodatki[nivo - 1] ? this.izbran.sifrantPodatki[nivo - 1].id : null);
|
||
|
|
||
|
Vue.nextTick(function () {
|
||
|
// var parent_id2 = (that.izbran.sifrantPodatki[nivo - 1] ? that.izbran.sifrantPodatki[nivo - 1].id : null);
|
||
|
|
||
|
that.$http.post('ajax.php?anketa=' + that.anketaId + '&t=hierarhija-ajax&a=gradnja-hierarhije&m=preveri-sifrant-za-nivo', {
|
||
|
level: nivo,
|
||
|
hierarhija_sifranti_id: sifrant,
|
||
|
parent_id: parent_id
|
||
|
}).then(function (i) {
|
||
|
if (i.data == 0) {
|
||
|
// V kolikor omenjen id šifranta še ne obstaja v strukturi potem shranimo v polje novSifrant, da ga pri sumbitu upoštevamo
|
||
|
that.izbran.sifrantPodatki.$set(nivo, {
|
||
|
id: null,
|
||
|
level: nivo,
|
||
|
hierarhija_sifranti_id: sifrant,
|
||
|
hierarhija_ravni_id: that.podatki[nivo - 1].id,
|
||
|
parent_id: parent_id
|
||
|
});
|
||
|
} else {
|
||
|
// shranimo na ključ, kjer je nivo celo polje
|
||
|
that.izbran.sifrantPodatki.$set(i.data.level, i.data);
|
||
|
}
|
||
|
|
||
|
// Preverimo, za nivo, če lahko prikažemo uporabnike
|
||
|
that.prikaziUporabnike(nivo);
|
||
|
});
|
||
|
// DOM updated
|
||
|
});
|
||
|
|
||
|
},
|
||
|
|
||
|
// Potrdimo vpis šifrantov, ki smo jih izbrali
|
||
|
submitSifrante: function () {
|
||
|
var that = this;
|
||
|
|
||
|
// Preverimo, če je bil dodan kak nov elemepridobiIdSifrantovInUporabnikent
|
||
|
var prestejNove = 0;
|
||
|
this.izbran.sifrantPodatki.forEach(function (val) {
|
||
|
if (val != null && val.id == null && !isNaN(val.id))
|
||
|
prestejNove++;
|
||
|
});
|
||
|
|
||
|
if (prestejNove == 0)
|
||
|
return swal({
|
||
|
title: "Opozorilo!",
|
||
|
text: "<div style='text-align: left;'>Vse vrstice so že prenesene v hierarhijo:" +
|
||
|
"<ul><li>Bodisi vnesite novega učitelja in njegov predmet.</li>" +
|
||
|
"<li>Bodisi zaključite z vnosom in s klikom na gumb NAPREJ (spdaj desno) aktivirajte hierarhijo.</li></ul></div>",
|
||
|
type: "error",
|
||
|
html: true
|
||
|
});
|
||
|
|
||
|
var st = this.podatki.maxLevel;
|
||
|
// Če je vnešen zadnji nivo, object ni null in ni vpisanih oseb, ker na zadnjem nivo morajo biti vpisane osebe
|
||
|
if (that.izbran.sifrantPodatki[st] != null && (typeof this.osebe.nove[st] == 'undefined' || this.osebe.nove[st].length == 0))
|
||
|
return swal({
|
||
|
title: "Opozorilo!",
|
||
|
text: "Na zadnjem nivoju morate obvezno vpisati elektronski naslov osebe.",
|
||
|
type: "error"
|
||
|
});
|
||
|
|
||
|
// Izpišemo opozorilo, če uporabnik ni vnesel zadnjega nivoja
|
||
|
if (that.izbran.sifrantPodatki[st] == null)
|
||
|
swal({
|
||
|
title: "Opozorilo!",
|
||
|
text: "Niste vpisali zadnjega nivoja.",
|
||
|
type: "warning",
|
||
|
timer: 2000
|
||
|
});
|
||
|
|
||
|
// Posredujemo podatke za shranjevanje
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=gradnja-hierarhije&m=post-struktura', {
|
||
|
vnos: that.izbran.sifrantPodatki,
|
||
|
osebe: that.osebe.nove
|
||
|
}).then(function () {
|
||
|
//Tukaj moramo osvežiti vse šifrante, v dataTables in JsTree, omenjeni funkciji sta v custom.js - splošni jquery
|
||
|
tabela.ajax.reload(null, false);
|
||
|
jstree_json_data(that.anketaId, 1);
|
||
|
|
||
|
// Če je bil izdan zadnji nivo od vseh mogočih potem odstranimo element izbire iz zadnjega nivoja
|
||
|
if (typeof that.izbran.sifrant[that.podatki.maxLevel] != 'undefined' && that.izbran.sifrant[that.podatki.maxLevel].length > 0) {
|
||
|
// Zadnji nivo odstranimo iz select2 izbire
|
||
|
that.izbran.sifrant.splice(that.podatki.maxLevel, 1);
|
||
|
|
||
|
// Izbrišemo tudi vse podatke o izbranem elementu iz DOM-a
|
||
|
that.izbran.sifrantPodatki.splice(that.podatki.maxLevel, 1);
|
||
|
|
||
|
//postavimo spremenljivko na true, da prikaže drugačen tekst pri navodilih
|
||
|
$('.srv_hierarchy_user_help').hide();
|
||
|
$('.srv_hierarchy_user_help_sifrant_vnesen').show();
|
||
|
}
|
||
|
|
||
|
// Osveži podatke o vseh šifrantih, ki so izbrani in so bili na novo dodani
|
||
|
that.preveriBazoZaSifrant(null, 1);
|
||
|
|
||
|
// Polje z na novo dodanimi osebami se izprazni
|
||
|
that.osebe.nove = [];
|
||
|
|
||
|
//Odstrani besedilo Uporabnik/i iz zadnjega polja, ker ga še tako odstranimo
|
||
|
that.osebe.show.$set(st, false);
|
||
|
|
||
|
// Zapišemo spremembo, da je struktura vnešena
|
||
|
that.aliJeStrukturaVnesena();
|
||
|
|
||
|
// Shanimo celotno strukturo v string in srv_hierarhija_shrani
|
||
|
that.shraniUporabnikeNaHierarhijo();
|
||
|
|
||
|
});
|
||
|
},
|
||
|
|
||
|
// Klik na ikono osebe, prikaže spodaj opcijo za vpis oseb
|
||
|
prikaziVnosOseb: function (level) {
|
||
|
// V kolikor kliknemo na isto ikono 2x potem uporabimo toggle opcijo
|
||
|
if (level == this.osebe.nivo)
|
||
|
return this.osebe.prikazi = !this.osebe.prikazi;
|
||
|
|
||
|
this.osebe.prikazi = true;
|
||
|
return this.osebe.nivo = level;
|
||
|
},
|
||
|
|
||
|
vpisemoUporabnikaIzDropDownMenija: function () {
|
||
|
|
||
|
this.osebe.nove[this.osebe.nivo] = [this.user.selected.split(',')];
|
||
|
|
||
|
// Prikažemo polje z uporabniki, ki so bili na novo dodani
|
||
|
this.prikaziUporabnike(this.osebe.nivo);
|
||
|
|
||
|
// Tekstovno polje spraznimo in ga skrijemo
|
||
|
this.user.selected = null;
|
||
|
this.osebe.prikazi = false;
|
||
|
},
|
||
|
|
||
|
vpisOsebNaNivoTextarea: function () {
|
||
|
var that = this;
|
||
|
|
||
|
// preverimo email in vrnemo napako, če obstaja
|
||
|
if (this.preveriPravilnostEmaila())
|
||
|
return this.email.opozorilo;
|
||
|
|
||
|
if (typeof this.user.selected !== 'undefined' && this.user.selected && this.user.selected.length > 0) {
|
||
|
var vpis = [this.user.selected];
|
||
|
} else {
|
||
|
// uporabnike razdelimo glede na \n in jih shranimo v polje
|
||
|
var vpis = this.osebe.textarea.split('\n');
|
||
|
}
|
||
|
|
||
|
|
||
|
this.osebe.nove.$set(that.osebe.nivo, []);
|
||
|
// ločimo še vejice
|
||
|
$.each(vpis, function (key, val) {
|
||
|
var loci = val.split(',');
|
||
|
|
||
|
// če je email večji od 4 znakov, ga shranimo kot novega drugače ne
|
||
|
if (loci[0].length > 4) {
|
||
|
that.osebe.nove[that.osebe.nivo].push(loci);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// Prikažemo polje z uporabniki, ki so bili na novo dodani
|
||
|
this.prikaziUporabnike(this.osebe.nivo);
|
||
|
|
||
|
// Tekstovno polje spraznimo in ga skrijemo
|
||
|
this.osebe.textarea = '';
|
||
|
this.osebe.prikazi = false;
|
||
|
this.user.selected = '';
|
||
|
},
|
||
|
|
||
|
// Preveri, če string ustreza pravilnemu zapis emaila
|
||
|
preveriEmail: function (email) {
|
||
|
var EMAIL_REGEX = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
||
|
|
||
|
return EMAIL_REGEX.test(email);
|
||
|
},
|
||
|
|
||
|
// Preverimo pravilnost vpisanega emaila in vržemo napako
|
||
|
preveriPravilnostEmaila: function () {
|
||
|
var that = this;
|
||
|
|
||
|
// uporabnike razdelimo glede na \n in jih shranimo v polje
|
||
|
var vpis = this.osebe.textarea.split('\n');
|
||
|
|
||
|
// vse napake postavimo na 0
|
||
|
this.email.napake = [];
|
||
|
|
||
|
// ločimo še vejice
|
||
|
$.each(vpis, function (key, val) {
|
||
|
var loci = val.split(',');
|
||
|
|
||
|
if (!that.preveriEmail(loci[0]) && loci[0].length > 0) {
|
||
|
that.email.napake.push({
|
||
|
naslov: loci[0],
|
||
|
vrstica: (key + 1)
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// v kolikor so v poju zapisani napačni email naslovi potem prikažemo opozorilo
|
||
|
if (this.email.napake.length > 0)
|
||
|
return this.email.opozorilo = true;
|
||
|
},
|
||
|
|
||
|
// Preverimo, če uporabniki so že vpisani v bazi in jih prikažemo ali če so bili uporabniki na novo dodani
|
||
|
prikaziUporabnike: function (level) {
|
||
|
// Uporabniki so bili na novo dodani na nivo
|
||
|
if (this.osebe.nove[level] && this.osebe.nove[level].length > 0)
|
||
|
return this.osebe.show.$set(level, true);
|
||
|
|
||
|
// imamo uporabni v SQL bazi
|
||
|
if (this.izbran.sifrantPodatki[level] && this.izbran.sifrantPodatki[level].uporabniki)
|
||
|
return this.osebe.show.$set(level, true);
|
||
|
|
||
|
return this.osebe.show.$set(level, false);
|
||
|
},
|
||
|
|
||
|
// Izbriši uporabnika iz this.osebe.nove
|
||
|
izbrisiUporabnika: function (level) {
|
||
|
return this.osebe.nove.splice(level, 1);
|
||
|
},
|
||
|
|
||
|
// Izbriši uporabnika iz Sql baze, ker je že shranjen
|
||
|
izbrisiUporabnikaIzBaze: function (userId, index, level) {
|
||
|
var that = this;
|
||
|
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=brisi&m=uporabnika', {
|
||
|
uporabnik_id: userId,
|
||
|
struktura_id: this.izbran.sifrantPodatki[level].id
|
||
|
}).then(function () {
|
||
|
that.izbran.sifrantPodatki[level].uporabniki.splice(index, 1);
|
||
|
});
|
||
|
|
||
|
},
|
||
|
|
||
|
// Preverimo v SQL-u, da dobimo za vpisane šifrante ID in parent_id
|
||
|
// Rekurzivna funkcija, ki ob sumbitu preveri v bazi in vsem še obstoječim šifrantom doda id in parent_id
|
||
|
preveriBazoZaSifrant: function (parent_id, key) {
|
||
|
var that = this;
|
||
|
|
||
|
// Polje z omenjenim elementom mora obstajati, drugače smo prišli do konca
|
||
|
if (this.izbran.sifrantPodatki[key]) {
|
||
|
|
||
|
// V kolikor element že ima parent id, potem tega elementa ne preverjamo in gremo preverit naslednji element
|
||
|
// Prvi element vedno preverimo (key == 1)
|
||
|
if (key > 1 && this.izbran.sifrantPodatki[key] && this.izbran.sifrantPodatki[key].parent_id != 'null') {
|
||
|
var st = key + 1;
|
||
|
this.preveriBazoZaSifrant(this.izbran.sifrantPodatki[key].id, st);
|
||
|
}
|
||
|
|
||
|
// AJAX request, da preveri podatke o elementu in pridobi parent_id
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=gradnja-hierarhije&m=preveri-sifrant-za-nivo', {
|
||
|
level: this.izbran.sifrantPodatki[key].level,
|
||
|
hierarhija_sifranti_id: this.izbran.sifrantPodatki[key].hierarhija_sifranti_id,
|
||
|
parent_id: parent_id
|
||
|
}).then(function (i) {
|
||
|
|
||
|
// shranimo na ključ, kjer je nivo celo polje
|
||
|
that.izbran.sifrantPodatki.$set(i.data.level, i.data);
|
||
|
|
||
|
// V kolikor vsebuje podatke o uporabnikih potem te rudi prikaže
|
||
|
that.prikaziUporabnike(i.data.level);
|
||
|
|
||
|
// Pridobimo številko naslednjega elementa
|
||
|
var st = 1 + Number(i.data.level);
|
||
|
|
||
|
// Pokličemo rekurzivno funkcijo, da kjer je paren_id, id trenutnega elementa
|
||
|
that.preveriBazoZaSifrant(i.data.id, st);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
return 0;
|
||
|
},
|
||
|
|
||
|
// pridobimo vse nastavitve iz baze
|
||
|
pridobiNastavitveCeJeVpisanaStruktura: function () {
|
||
|
var that = this;
|
||
|
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=hierarhija-options&m=get').success(function (data) {
|
||
|
|
||
|
if (data.length == 0)
|
||
|
return that.vpisanaStruktura = false;
|
||
|
|
||
|
$.each(data, function (index, value) {
|
||
|
if (index == 'vpisana_struktura')
|
||
|
that.vpisanaStruktura = value;
|
||
|
});
|
||
|
});
|
||
|
},
|
||
|
|
||
|
// Preveri, če obstaja med opcijami vpisana_struktura, drugače jo vnese
|
||
|
aliJeStrukturaVnesena: function () {
|
||
|
if (this.vpisanaStruktura)
|
||
|
return this.vpisanaStruktura;
|
||
|
|
||
|
// V kolikor gre za vpis v bazo
|
||
|
hierarhijaApp.getSaveOptions('vpisana_struktura', 1);
|
||
|
this.vpisanaStruktura = 1;
|
||
|
},
|
||
|
|
||
|
// Preverimo, je izbran element za sledeči nivo, če je nivo večje kot zadnje nivo in če na zadnjem nivoju še ni vpisanega uporabnika potem dovoli prikaz ikone za vnos uporabnikov
|
||
|
aliPrikazemIkonoZaDodajanjeUporabnikov: function (level) {
|
||
|
var level = level || false;
|
||
|
|
||
|
if (!level)
|
||
|
return false;
|
||
|
|
||
|
if (this.izbran.sifrant[level] > 0 &&
|
||
|
(level < this.podatki.maxLevel ||
|
||
|
level == this.podatki.maxLevel &&
|
||
|
this.izbran.sifrantPodatki[level] &&
|
||
|
!this.izbran.sifrantPodatki[level].hasOwnProperty('uporabniki'))
|
||
|
)
|
||
|
return true;
|
||
|
|
||
|
return false;
|
||
|
},
|
||
|
|
||
|
/*
|
||
|
* Pridobimo vse ID-je že vpisanih šifrantov skupaj z uporabniki
|
||
|
* izhajamo pa iz zadnjega ID-ja
|
||
|
*/
|
||
|
pridobiIdSifrantovInUporabnike: function (idLast) {
|
||
|
var that = this;
|
||
|
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=gradnja-hierarhije&m=kopiranje-vrstice', {
|
||
|
id: idLast
|
||
|
}).then(function (response) {
|
||
|
// response ok in imamo objekt
|
||
|
if (response.status == 200 && response.data.length > 0) {
|
||
|
response.data.forEach(function (val) {
|
||
|
that.izbran.sifrantPodatki.$set(val.izbrani.level, val.izbrani);
|
||
|
$('option[value="' + val.izbrani.hierarhija_sifranti_id + '"]').parent().val(val.izbrani.hierarhija_sifranti_id).trigger('change');
|
||
|
});
|
||
|
|
||
|
$(window).scrollTop(0);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Shranimo celotno strukturo z uporabniki v srv_hierarhija_shrani
|
||
|
*/
|
||
|
shraniUporabnikeNaHierarhijo: function () {
|
||
|
|
||
|
this.$http.post('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=shrani-strukturo-hierarhije', {
|
||
|
id: this.anketaId,
|
||
|
shrani: 1
|
||
|
});
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Pridobimo uporabnike, ki jih imamo shranjene v bazi za drop down list
|
||
|
*/
|
||
|
pridobiUporabnikeZaDropdownList: function () {
|
||
|
var that = this;
|
||
|
|
||
|
this.$http.get('ajax.php?anketa=' + this.anketaId + '&t=hierarhija-ajax&a=gradnja-hierarhije&m=import-user&s=getAll').success(function (data) {
|
||
|
that.user.dropdown = data;
|
||
|
});
|
||
|
},
|
||
|
|
||
|
|
||
|
/**************** funkcije, ki preveri true/false **************/
|
||
|
preveriCejeEmailZeVnesenVbazoZaUcitelja: function (maxLevel) {
|
||
|
var maxLevel = maxLevel || 0;
|
||
|
|
||
|
if(maxLevel === 0 || this.izbran.sifrantPodatki[maxLevel] !== null)
|
||
|
return false;
|
||
|
|
||
|
if(this.izbran.sifrantPodatki[maxLevel] !== null && this.izbran.sifrantPodatki[maxLevel].uporabniki.length > 0)
|
||
|
return true;
|
||
|
|
||
|
return false;
|
||
|
},
|
||
|
|
||
|
prikaziJsKoSeJeCelaSpletnaStranZeNalozila: function(level){
|
||
|
var level = level || 0;
|
||
|
|
||
|
if((level == 1 && this.pageLoadComplete) || (this.izbran.sifrant[level-1] > 0 && this.izbran.sifrant[level-1].length > 0))
|
||
|
return true;
|
||
|
|
||
|
return false;
|
||
|
},
|
||
|
|
||
|
prikaziSelectZaZadnjiNivo: function(level) {
|
||
|
var level = level || 0;
|
||
|
this.osebe.nivo = level;
|
||
|
|
||
|
var prikazi = this.aliPrikazemIkonoZaDodajanjeUporabnikov(level);
|
||
|
|
||
|
if(level === this.podatki.maxLevel && this.user.dropdown && prikazi)
|
||
|
return true;
|
||
|
|
||
|
return false;
|
||
|
},
|
||
|
|
||
|
},
|
||
|
});
|
||
|
}
|
||
|
|
||
|
if (document.querySelector('#vue-custom')) {
|
||
|
new Vue({
|
||
|
el: '#vue-custom',
|
||
|
data: {
|
||
|
anketaId: $('#srv_meta_anketa_id').val(),
|
||
|
managerOznaciVse: true,
|
||
|
statusTabela: '',
|
||
|
supersifra: [],
|
||
|
},
|
||
|
methods: {
|
||
|
managerZamenjajOznaci: function () {
|
||
|
return this.managerOznaciVse = !this.managerOznaciVse;
|
||
|
},
|
||
|
emailObvestiloZaManagerje: function () {
|
||
|
event.preventDefault();
|
||
|
|
||
|
var polje = [];
|
||
|
$('[name="manager"]:checked').each(function () {
|
||
|
polje.push($(this).val());
|
||
|
});
|
||
|
|
||
|
//Poljšemo podatke
|
||
|
$.post("ajax.php?anketa=" + this.anketaId + "&t=hierarhija-ajax&a=ostalo&m=obvesti-managerje", {
|
||
|
managerji: polje
|
||
|
}).then(function (response) {
|
||
|
$('[name="manager"]:checked').each(function () {
|
||
|
$(this).hide();
|
||
|
$(this).parent().prepend('<span> - </span>');
|
||
|
});
|
||
|
|
||
|
if (response.data == 'success') {
|
||
|
swal({
|
||
|
title: "Obvestilo poslano!",
|
||
|
text: "Elektronsko sporočilo je bilo uspešno poslano.",
|
||
|
type: "success",
|
||
|
timer: 3000
|
||
|
});
|
||
|
}
|
||
|
|
||
|
});
|
||
|
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
|
||
|
function izbrisiSifrant(id) {
|
||
|
var anketa_id = $('#srv_meta_anketa_id').val();
|
||
|
$.post("ajax.php?anketa=" + anketa_id + "&t=hierarhija-ajax&a=izbrisi_sifrant", {
|
||
|
idSifranta: id
|
||
|
}).then(function (response) {
|
||
|
if (response == 1)
|
||
|
return swal({
|
||
|
title: "Opozorilo!",
|
||
|
text: "Šifrant je že uporabljen in ga ni mogoče izbrisati.",
|
||
|
type: "error",
|
||
|
timer: 3000
|
||
|
});
|
||
|
|
||
|
$('[data-sifrant="' + id + '"]').remove();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// Pobriše vrstico iz DataTables in odstrani šifrante iz vseh nivojev pri izbiri
|
||
|
function pobrisiVrsticoHierarhije(id) {
|
||
|
gradnjaHierarhijeApp.$set('izbran.sifrant', []);
|
||
|
gradnjaHierarhijeApp.$set('izbran.sifrantPodatki', []);
|
||
|
|
||
|
// V kolikor gre za uporabnika na nižjem nivoju potem moramo ponovno pridobiti strukturo in vse podatke o fiksnih nivojih
|
||
|
gradnjaHierarhijeApp.preveriNivoInPraviceUporabnika();
|
||
|
|
||
|
brisiVrsticoHierarhije(id, 1);
|
||
|
}
|