acha-framework
Advanced tools
Comparing version
436
index.js
(function (undefined) { | ||
'use strict'; | ||
String.prototype.format = function (parameter) { | ||
return this.replace(/{(\d+)}/g, function (matchItem, index, matchCharPosition, input) { | ||
return parameter[index] ? parameter[index] : matchItem; | ||
}); | ||
'use strict'; | ||
String.prototype.format = function (parameter) { | ||
return this.replace(/{(\d+)}/g, function (matchItem, index, matchCharPosition, input) { | ||
return parameter[index] ? parameter[index] : matchItem; | ||
}); | ||
}; | ||
if (!String.prototype.startsWith) { | ||
String.prototype.startsWith = function (searchString, position) { | ||
return this.substr(position || 0, searchString.length) === searchString; | ||
}; | ||
if (!String.prototype.startsWith) { | ||
String.prototype.startsWith = function (searchString, position) { | ||
return this.substr(position || 0, searchString.length) === searchString; | ||
}; | ||
} | ||
String.prototype.toKebabCase = function () { | ||
return this.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); | ||
}; | ||
} | ||
String.prototype.toKebabCase = function () { | ||
return this.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); | ||
}; | ||
}()); | ||
global.Ioc = require('ym').create(); | ||
global.Q = require('q'); | ||
global.FS = require('fs'); | ||
global.FSX = require('fs-extra'); | ||
global.PATH = require('path'); | ||
global.DEL = require('del'); | ||
global.UUID = require('uuid').v4; | ||
Ioc.define('backend.controllers.configuration', ['backend.configuration'], function (provide, config) { | ||
provide({ | ||
install: function (app) { | ||
app.get('/framework-application/configuration', function (req, res) { | ||
var content = { | ||
login: config.login, | ||
i18n: config.i18n, | ||
google: { map: { key: config.google.map.key } } | ||
}; | ||
res.setHeader('content-type', 'text/javascript; charset=utf-8'); | ||
res.end('window.achasoft.configuration = {0} ;'.format([JSON.stringify(content)])); | ||
}); | ||
} | ||
}); | ||
}); | ||
Ioc.define('backend.controllers.i18n', [ | ||
@@ -23,4 +43,2 @@ 'backend.configuration', | ||
], function (provide, config, OperationResult) { | ||
const fs = require('fs-extra'); | ||
const path = require('path'); | ||
provide({ | ||
@@ -30,4 +48,4 @@ install: function (app) { | ||
const language = res.locals.lang; | ||
const jsonFile = path.join(config.rootDirectory, 'locals', language + '.json'); | ||
fs.readJson(jsonFile, function (err, json) { | ||
const jsonFile = PATH.join(config.rootDirectory, 'locals', language + '.json'); | ||
FSX.readJson(jsonFile, function (err, json) { | ||
if (err) { | ||
@@ -43,4 +61,4 @@ json = {}; | ||
var language = res.locals.lang; | ||
var jsonFile = path.join(config.rootDirectory, 'locals', language + '.json'); | ||
fs.readJson(jsonFile, function (err, json) { | ||
var jsonFile = PATH.join(config.rootDirectory, 'locals', language + '.json'); | ||
FSX.readJson(jsonFile, function (err, json) { | ||
if (err) { | ||
@@ -55,10 +73,24 @@ json = {}; | ||
}); | ||
Ioc.define('backend.fileManagerGenerator', ['backend.operationResult'], function (provide, OperationResult) { | ||
Ioc.define('backend.fileExplorerGenerator', [ | ||
'backend.operationResult', | ||
'backend.fileGeneratorEngine' | ||
], function (provide, OperationResult, fileGeneratorEngine) { | ||
provide(function (engine, route, options) { | ||
var fs = require('fs'); | ||
var mime = require('mime-types') | ||
var path = require('path'); | ||
var def = { | ||
var generator = fileGeneratorEngine(engine, route, options, { | ||
root: '', | ||
urlPrefix: '/user-files/', | ||
fileHandler: false | ||
}); //Todo: add more functionality here.... | ||
}); | ||
}); | ||
Ioc.define('backend.fileManagerGenerator', [ | ||
'backend.operationResult', | ||
'backend.fileGeneratorEngine', | ||
'backend.authentication', | ||
'backend.uploader' | ||
], function (provide, OperationResult, fileGeneratorEngine, authentication, uploader) { | ||
provide(function (engine, route, options) { | ||
var generator = fileGeneratorEngine(engine, route, options, { | ||
root: '', | ||
urlPrefix: '/user-files/', | ||
fileHandler: true, | ||
@@ -74,3 +106,203 @@ canUpload: true, | ||
canRename: true | ||
}); | ||
engine.addRoute({ | ||
method: 'post', | ||
path: generator.prefixRoute('newFolder'), | ||
middlewares: (options.middlewares || []).concat([authentication.verify_jwt]), | ||
action: function (req, res) { | ||
var name = req.body.name; | ||
var path = req.body.path; | ||
path = generator.fixPath(path + '/' + name); | ||
try { | ||
var abs = generator.relativeToAbsolute(path); | ||
FS.mkdir(abs, function (err) { | ||
if (err) { | ||
if (err.message.indexOf('already exists') !== -1) { | ||
res.json(OperationResult.failed({ name: ['general.alreadyExists'] })); | ||
} else { | ||
res.json(OperationResult.failed()); | ||
} | ||
return; | ||
} | ||
var info = generator.directoryInfo(abs); | ||
info.name = name; | ||
res.json(OperationResult.success(info)); | ||
}); | ||
} catch (e) { | ||
res.json(OperationResult.failed()); | ||
} | ||
} | ||
}); | ||
engine.addRoute({ | ||
method: 'post', | ||
path: generator.prefixRoute('rename'), | ||
middlewares: (options.middlewares || []).concat([authentication.verify_jwt]), | ||
action: function (req, res) { | ||
var newName = req.body.newName; | ||
var name = req.body.name; | ||
var path = req.body.path; | ||
var oldPath = generator.fixPath(path + '/' + name); | ||
var newPath = generator.fixPath(path + '/' + newName); | ||
try { | ||
var oldAbs = generator.relativeToAbsolute(oldPath); | ||
var newAbs = generator.relativeToAbsolute(newPath); | ||
FS.access(newAbs, FS.constants.R_OK, function (err) { | ||
if (!err) { | ||
//file already exists | ||
res.json(OperationResult.failed({ name: ['general.alreadyExists'] })); | ||
return; | ||
} | ||
FS.rename(oldAbs, newAbs, function (err) { | ||
if (err) { | ||
res.json(OperationResult.failed()); | ||
return; | ||
} | ||
res.json(OperationResult.success()); | ||
}); | ||
}); | ||
} catch (e) { | ||
res.json(OperationResult.failed()); | ||
} | ||
} | ||
}); | ||
engine.addRoute({ | ||
method: 'post', | ||
path: generator.prefixRoute('delete'), | ||
middlewares: (options.middlewares || []).concat([authentication.verify_jwt]), | ||
action: function (req, res) { | ||
var items = req.body.items || []; | ||
items = items.map(function (item) { | ||
return generator.relativeToAbsolute(generator.fixPath(item)); | ||
}).filter(function (item) { | ||
return item && item !== '/'; | ||
}); | ||
try { | ||
DEL(items, { force: true }).then(function (deleted) { | ||
res.json(OperationResult.success(deleted.map(function (d) { | ||
return generator.absoluteToRelative(d); | ||
}))); | ||
}); | ||
} catch (e) { | ||
res.json(OperationResult.failed()); | ||
} | ||
} | ||
}); | ||
engine.addRoute({ | ||
method: 'post', | ||
path: generator.prefixRoute('moveCopy'), | ||
middlewares: (options.middlewares || []).concat([authentication.verify_jwt]), | ||
action: function (req, res) { | ||
var mode = req.body.mode || 'copy'; | ||
var source = (req.body.source || []).map(function (s) { | ||
return generator.relativeToAbsolute(generator.fixPath(s)); | ||
}); | ||
var dest = generator.relativeToAbsolute(generator.fixPath(req.body.destination || '/')); | ||
var promises = []; | ||
for (var i = 0; i < source.length; i++) { | ||
promises.push(Q.defer()); | ||
} | ||
try { | ||
source.forEach(function (s, idx) { | ||
FS.stat(s, function (err, stat) { | ||
if (err) { | ||
promises[idx].resolve(); | ||
return; | ||
} | ||
var destination; | ||
var isDirectory = stat.isDirectory(); | ||
var sourceDir = PATH.dirname(s) + PATH.sep; | ||
var name = PATH.basename(s); | ||
if (sourceDir === dest) { | ||
//it is in same folder | ||
name = 'copy - ' + name; | ||
} | ||
destination = PATH.resolve(dest, name); | ||
FS.access(destination, FS.constants.R_OK, function (err) { | ||
if (!err) { | ||
//a copy already exists | ||
name = 'copy - ' + name; | ||
destination = PATH.resolve(dest, name); | ||
} | ||
FSX[mode](s, destination, { overwrite: true }, function (err2) { | ||
promises[idx].resolve(); | ||
}); | ||
}); | ||
}); | ||
}); | ||
Q.all(promises).then(function () { | ||
res.json(OperationResult.success()); | ||
}); | ||
} catch (e) { | ||
res.json(OperationResult.failed()); | ||
} | ||
} | ||
}); | ||
engine.addRoute({ | ||
method: 'post', | ||
path: generator.prefixRoute('upload'), | ||
middlewares: (options.middlewares || []).concat([ | ||
authentication.verify_jwt, | ||
uploader.array('uploadedFiles') | ||
]), | ||
action: function (req, res) { | ||
try { | ||
var path = generator.relativeToAbsolute(generator.fixPath(req.body.path)); | ||
var promises = []; | ||
for (var i = 0; i < req.files.length; i++) { | ||
var file = req.files[i]; | ||
var defer = Q.defer(); | ||
promises.push(defer); | ||
var destination = PATH.resolve(path, file.originalname); | ||
(function (file, defer, destination) { | ||
FS.access(destination, FS.constants.R_OK, function (err) { | ||
if (!err) { | ||
//already exists | ||
destination = PATH.resolve(path, UUID() + '-' + file.originalname); | ||
} | ||
FSX.copy(file.path, destination, function (err) { | ||
DEL([file.path]); | ||
if (err) { | ||
defer.reject(); | ||
return; | ||
} | ||
defer.resolve(); | ||
}); | ||
}); | ||
}(file, defer, destination)); | ||
} | ||
Q.all(promises).then(function () { | ||
res.json(OperationResult.success()); | ||
}, function () { | ||
res.json(OperationResult.failed()); | ||
}); | ||
} catch (e) { | ||
res.json(OperationResult.failed()); | ||
} | ||
} | ||
}); | ||
}); | ||
}); | ||
Ioc.define('backend.fileGeneratorEngine', ['backend.operationResult'], function (provide, OperationResult) { | ||
provide(function (engine, route, options, def) { | ||
var mime = require('mime-types'); | ||
var directoryInfo = function (dir) { | ||
var stat = FS.statSync(dir); | ||
return { | ||
name: stat.name, | ||
date: stat.mtime, | ||
size: stat.size, | ||
path: absoluteToRelative(dir), | ||
folder: true | ||
}; | ||
}; | ||
var relativeToAbsolute = function (_path) { | ||
_path = _path.replace(options.urlPrefix, ''); | ||
return PATH.posix.join(options.root, _path); | ||
}; | ||
var absoluteToRelative = function (_path) { | ||
return '/{0}{1}'.format([ | ||
options.urlPrefix || '', | ||
_path.replace(options.root, '') | ||
]).replace(/\/\//g, '/'); | ||
}; | ||
var prefixRoute = function (path) { | ||
@@ -88,3 +320,3 @@ return (route + '/' + path).replace(/\/\//g, '/'); | ||
return Q.Promise(function (resolve, reject) { | ||
fs.readdir(_path, function (err, files) { | ||
FS.readdir(_path, function (err, files) { | ||
if (err) { | ||
@@ -97,4 +329,4 @@ resolve([]); | ||
}).forEach(function (file) { | ||
var curFile = path.join(_path, file); | ||
var stat = fs.statSync(curFile); | ||
var curFile = PATH.join(_path, file); | ||
var stat = FS.statSync(curFile); | ||
var obj = { | ||
@@ -119,12 +351,2 @@ name: file, | ||
}; | ||
var relativeToAbsolute = function (_path) { | ||
_path = _path.replace(options.urlPrefix, ''); | ||
return path.posix.join(options.root, _path); | ||
}; | ||
var absoluteToRelative = function (_path) { | ||
return '/{0}{1}'.format([ | ||
options.urlPrefix || '', | ||
_path.replace(options.root, '') | ||
]).replace(/\/\//g, '/'); | ||
}; | ||
Object.keys(def).forEach(function (key) { | ||
@@ -160,30 +382,46 @@ options[key] = options[key] === undefined ? def[key] : options[key]; | ||
}); | ||
if(options.fileHandler){ | ||
engine.addRoute({ | ||
method: 'get', | ||
path: options.urlPrefix + '*', | ||
middlewares: options.middlewares || [], | ||
action: function (req, res) { | ||
var fileName = relativeToAbsolute(req.url); | ||
fs.stat(fileName, function (err, stat) { | ||
if(err){ | ||
return; | ||
} | ||
res.writeHead(200, { | ||
'Content-Type': mime.lookup(fileName), | ||
'Content-Length': stat.size | ||
}); | ||
var readStream = fs.createReadStream(fileName); | ||
readStream.pipe(res); | ||
}); | ||
if (options.fileHandler) { | ||
engine.addRoute({ | ||
method: 'get', | ||
path: options.urlPrefix + '*', | ||
middlewares: options.middlewares || [], | ||
action: function (req, res) { | ||
var fileName = relativeToAbsolute(req.url); | ||
FS.stat(fileName, function (err, stat) { | ||
if (err) { | ||
res.status(404).send(); | ||
return; | ||
} | ||
}); | ||
res.writeHead(200, { | ||
'Content-Type': mime.lookup(fileName), | ||
'Content-Length': stat.size | ||
}); | ||
var readStream = FS.createReadStream(fileName); | ||
readStream.pipe(res); | ||
}); | ||
} | ||
}); | ||
} | ||
return { | ||
relativeToAbsolute: relativeToAbsolute, | ||
absoluteToRelative: absoluteToRelative, | ||
prefixRoute: prefixRoute, | ||
fixPath: fixPath, | ||
listDirectory: listDirectory, | ||
directoryInfo: directoryInfo, | ||
mime: mime | ||
}; | ||
}); | ||
}); | ||
Ioc.define('backend.uploader', ['backend.configuration'], function (provide, config) { | ||
const multer = require('multer'); | ||
const destination = PATH.resolve(config.rootDirectory, 'upload_temp'); | ||
FSX.ensureDirSync(destination); | ||
const uploader = multer({ dest: destination }); | ||
provide(uploader); | ||
}); | ||
Ioc.define('backend.models.user', [ | ||
'backend.common', | ||
'backend.stringHelper' | ||
], function (provide, common, stringHelper) { | ||
'backend.stringHelper', | ||
'backend.cryptoHelper' | ||
], function (provide, stringHelper, cryptoHelper) { | ||
provide(function (orm) { | ||
@@ -197,3 +435,3 @@ return { | ||
limit: 50, | ||
default: common.uuid.v4() | ||
default: UUID() | ||
}, | ||
@@ -248,7 +486,7 @@ provider: { | ||
User.prototype.validatePassword = function (password) { | ||
return common.crypto.validate_hash(this.password, this.salt, password); | ||
return cryptoHelper.validate_hash(this.password, this.salt, password); | ||
}; | ||
User.beforeCreate = function (next) { | ||
this.salt = common.crypto.generate_salt(); | ||
this.password = common.crypto.hash_with_salt(this.salt, this.password); | ||
this.salt = cryptoHelper.generate_salt(); | ||
this.password = cryptoHelper.hash_with_salt(this.salt, this.password); | ||
next(); | ||
@@ -317,3 +555,2 @@ }; | ||
const CaptchaPng = require('captchapng'); | ||
const UUID = require('uuid'); | ||
const tokens = {}; | ||
@@ -325,3 +562,3 @@ const reject = function (res) { | ||
generate: function (req, res) { | ||
const key = UUID.v4(); | ||
const key = UUID(); | ||
const number = parseInt(Math.random() * 9000 + 1000); | ||
@@ -558,21 +795,2 @@ const captcha = new CaptchaPng(80, 30, number); | ||
}); | ||
Ioc.define('backend.common', [ | ||
'backend.fileHelper', | ||
'backend.logHelper', | ||
'backend.cryptoHelper', | ||
'backend.operationResult' | ||
], function (provide, fileHelper, logHelper, cryptoHelper, operationResult) { | ||
provide({ | ||
util: require('util'), | ||
underscore: require('underscore'), | ||
path: require('path'), | ||
fs: require('fs-extra'), | ||
fsNative: require('fs'), | ||
uuid: require('uuid'), | ||
fileHelper: fileHelper, | ||
logger: logHelper, | ||
crypto: cryptoHelper, | ||
operationResult: operationResult | ||
}); | ||
}); | ||
Ioc.define('backend.configuration', [], function (provide) { | ||
@@ -663,6 +881,4 @@ const configuration = { | ||
AchaOrm.prototype.SQLite = function () { | ||
const path = require('path'); | ||
const fs = require('fs-extra'); | ||
var db_path = path.resolve(config.rootDirectory, 'database'); | ||
var db_file = path.resolve(db_path, config.database.connection || 'acha_application.database'); | ||
var db_path = PATH.resolve(config.rootDirectory, 'database'); | ||
var db_file = PATH.resolve(db_path, config.database.connection || 'acha_application.database'); | ||
var db_config = { | ||
@@ -673,3 +889,3 @@ driver: 'sqlite3', | ||
}; | ||
fs.mkdirsSync(db_path); | ||
FSX.mkdirsSync(db_path); | ||
return new Schema(db_config.driver, db_config); | ||
@@ -713,7 +929,6 @@ }; | ||
'backend.controllers.account', | ||
'backend.controllers.configuration', | ||
'backend.controllers.captcha' | ||
], function (provide, config, authentication, localize, ssl, errorHandler, i18nController, accountController, captchaController) { | ||
const path = require('path'); | ||
const fs = require('fs-extra'); | ||
const viewsPath = path.resolve(config.rootDirectory, 'views'); | ||
], function (provide, config, authentication, localize, ssl, errorHandler, i18nController, accountController, configurationController, captchaController) { | ||
const viewsPath = PATH.resolve(config.rootDirectory, 'views'); | ||
const AchaEngine = function () { | ||
@@ -757,3 +972,2 @@ this.express = require('express'); | ||
const useragent = require('express-useragent'); | ||
const skipper = require('skipper'); | ||
const logger = require('morgan'); | ||
@@ -773,3 +987,3 @@ const helmet = require('helmet'); | ||
defaultLocale: config.i18n.def, | ||
directory: path.resolve(config.rootDirectory, 'locals') | ||
directory: PATH.resolve(config.rootDirectory, 'locals') | ||
}); | ||
@@ -833,3 +1047,2 @@ if (config.oauth.google.web.clientId) { | ||
}); | ||
self.app.use(skipper()); | ||
self.app.use(function (req, res, next) { | ||
@@ -846,3 +1059,3 @@ var info = localize.cultureInfo(req, res); | ||
self.app.engine('ejs', mate); | ||
fs.ensureDirSync(viewsPath); | ||
FSX.ensureDirSync(viewsPath); | ||
self.app.set('views', viewsPath); | ||
@@ -862,2 +1075,3 @@ self.app.set('view engine', 'ejs'); | ||
captchaController.install(this.app); | ||
configurationController.install(this.app); | ||
}; | ||
@@ -868,3 +1082,3 @@ AchaEngine.prototype.bind = function () { | ||
return Q.Promise(function (resolve, reject) { | ||
self.publics.unshift({ path: path.resolve(__dirname, 'public') }); | ||
self.publics.unshift({ path: PATH.resolve(__dirname, 'public') }); | ||
self.publics.forEach(function (item) { | ||
@@ -1027,4 +1241,4 @@ self.app.use(self.express.static(item.path, item.options)); | ||
'backend.configuration', | ||
'backend.common' | ||
], function (provide, config, common) { | ||
'backend.logHelper' | ||
], function (provide, config, logHelper) { | ||
const pem = require('pem'); | ||
@@ -1042,6 +1256,6 @@ const ensureAutoCertificate = function () { | ||
const data = { | ||
server_key: common.path.resolve(config.rootDirectory, config.backend.ssl.key), | ||
server_cert: common.path.resolve(config.rootDirectory, config.backend.ssl.cert) | ||
server_key: PATH.resolve(config.rootDirectory, config.backend.ssl.key), | ||
server_cert: PATH.resolve(config.rootDirectory, config.backend.ssl.cert) | ||
}; | ||
if (common.fsNative.existsSync(data.server_key)) { | ||
if (FS.existsSync(data.server_key)) { | ||
resolve(data); | ||
@@ -1053,4 +1267,4 @@ } else { | ||
}, function (err, keys) { | ||
common.fs.outputFileSync(data.server_key, keys.serviceKey); | ||
common.fs.outputFileSync(data.server_cert, keys.certificate); | ||
FSX.outputFileSync(data.server_key, keys.serviceKey); | ||
FSX.outputFileSync(data.server_cert, keys.certificate); | ||
resolve(data); | ||
@@ -1060,3 +1274,3 @@ }); | ||
} catch (e) { | ||
common.logger.log(e); | ||
logHelper.log(e); | ||
reject(e); | ||
@@ -1069,4 +1283,4 @@ } | ||
try { | ||
const privateKey = common.fs.readFileSync(data.server_key, 'utf8'); | ||
const certificate = common.fs.readFileSync(data.server_cert, 'utf8'); | ||
const privateKey = FSX.readFileSync(data.server_key, 'utf8'); | ||
const certificate = FSX.readFileSync(data.server_cert, 'utf8'); | ||
const credentials = { | ||
@@ -1078,3 +1292,3 @@ key: privateKey, | ||
} catch (e) { | ||
common.logger.log(e); | ||
logHelper.log(e); | ||
reject(e); | ||
@@ -1093,3 +1307,3 @@ } | ||
} catch (e) { | ||
common.logger.log(e); | ||
logHelper.log(e); | ||
reject(e); | ||
@@ -1096,0 +1310,0 @@ } |
@@ -1,1 +0,1 @@ | ||
{"license":"","name":"acha-framework","version":"1.0.17","description":"is a modular framework on both client (angular.js) and server (node.js) side, it provides security, orm, ioc, obfuscation and ...","main":"index.js","scripts":{"test":"mocha -r should -R spec"},"author":"Navid Kianfar","dependencies":{"async":"^2.1.5","body-parser":"^1.17.1","caminte":"^0.2.19","captchapng":"0.0.1","compression":"^1.6.2","connect-caminte":"0.0.4","cookie-parser":"^1.4.3","csurf":"^1.9.0","ejs":"^2.5.6","ejs-mate":"^2.3.0","express":"^4.15.2","express-error-handler":"^1.1.0","express-session":"^1.15.1","express-useragent":"^0.2.4","feed":"^0.3.1","fs-extra":"^0.30.0","helmet":"^2.3.0","i18n":"^0.8.3","jsonwebtoken":"^7.3.0","lodash":"^4.17.4","mime-types":"^2.1.15","morgan":"^1.8.1","mysql":"^2.13.0","passport":"^0.3.2","passport-facebook-token":"^3.3.0","passport-google-oauth2":"^0.1.6","passport-jwt":"^2.2.1","passport-local":"^1.0.0","pem":"^1.9.4","q":"^1.4.1","skipper":"^0.6.5","sqlite3":"^3.1.8","underscore":"^1.8.3","uuid":"^2.0.3","ym":"^0.1.2"},"caminte":{"adapter":"sqlite3"},"url":"https://github.com/achasoft/acha-framework","emil":"nvd.kianfar@gmail.com","keywords":["angular","api","atom","authentication","express","jwt","modular","mvc","nodejs","oauth","obfuscation","orm","rss","sitemap","startup","token"]} | ||
{"license":"","name":"acha-framework","version":"1.0.18","description":"is a modular framework on both client (angular.js) and server (node.js) side, it provides security, orm, ioc, obfuscation and ...","main":"index.js","scripts":{"test":"mocha -r should -R spec"},"author":"Navid Kianfar","dependencies":{"async":"^2.1.5","body-parser":"^1.17.1","caminte":"^0.2.19","captchapng":"0.0.1","compression":"^1.6.2","connect-caminte":"0.0.4","cookie-parser":"^1.4.3","csurf":"^1.9.0","del":"^3.0.0","ejs":"^2.5.6","ejs-mate":"^2.3.0","express":"^4.15.2","express-error-handler":"^1.1.0","express-session":"^1.15.1","express-useragent":"^0.2.4","feed":"^0.3.1","fs-extra":"^0.30.0","helmet":"^2.3.0","i18n":"^0.8.3","jsonwebtoken":"^7.3.0","lodash":"^4.17.4","mime-types":"^2.1.15","morgan":"^1.8.1","multer":"^1.3.0","mysql":"^2.13.0","passport":"^0.3.2","passport-facebook-token":"^3.3.0","passport-google-oauth2":"^0.1.6","passport-jwt":"^2.2.1","passport-local":"^1.0.0","pem":"^1.9.4","q":"^1.4.1","sqlite3":"^3.1.8","underscore":"^1.8.3","uuid":"^2.0.3","ym":"^0.1.2"},"caminte":{"adapter":"sqlite3"},"url":"https://github.com/achasoft/acha-framework","emil":"nvd.kianfar@gmail.com","keywords":["angular","api","atom","authentication","express","jwt","modular","mvc","nodejs","oauth","obfuscation","orm","rss","sitemap","startup","token"]} |
@@ -1,2 +0,2 @@ | ||
!function(e,n,i,t,o,l){"use strict";var s=n.module("frontend.directives");s.directive("showPanel",[function(){return{restrict:"A",link:function(e,n,i){var t=e.$eval(i.showPanel)||{},o=n.parent(),l=o.height()+(o.offset().top||t.top||0);n.css({position:"fixed",right:t.right||0,width:o.width()||t.width||"100%",height:t.height||200,top:l})}}}]),s.directive("onEnter",function(){return function(e,n,i){n.bind("keydown keypress",function(n){13===n.which&&(e.$apply(function(){e.$eval(i.onEnter,{event:n})}),n.preventDefault())})}}),s.directive("numberOnly",function(){return{require:"ngModel",link:function(e,n,i,t){function o(e){if(e){var n=e.replace(/[^0-9]/g,"");return n!==e&&(t.$setViewValue(n),t.$render()),n}return l}t.$parsers.push(o)}}})}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").factory("accordionService",function(){var n=function(e,n,i){return e.hasAttribute(n)?e.getAttribute(n):i};return{parse:function(i){var t=[];return e(i).each(function(e,i){t.push({disabled:n(i,"disabled",!1),cssClass:n(i,"css-class",""),title:n(i,"title",""),titleTranslate:n(i,"title-translate",null),icon:n(i,"icon",null),onEnter:n(i,"on-enter",null),onExit:n(i,"on-exit",null),content:i.innerHTML})}),t}}}).directive("accordion",["$compile","$templateCache","accordionService",function(i,t,o){return{restrict:"E",replace:!0,scope:{disabled:"=?",visible:"=?",cssClass:"=?",onChanged:"<?",steps:"=?",model:"=?"},compile:function(l){var s=t.get("/templates/framework/directives/accordion/template.html"),d=l.html();return l.empty(),{pre:function(t,l,a){t.vm={},t.vm.init=function(){n.isUndefined(t.disabled)&&(t.disabled=!1),n.isUndefined(t.visible)&&(t.visible=!0),n.isUndefined(t.cssClass)&&(t.cssClass=""),n.isUndefined(t.steps)&&(t.steps=o.parse(d)),n.isUndefined(t.model)&&t.steps.length&&(t.model=t.steps[0]),t.vm.compile(),t.vm.bind()},t.vm.onPick=function(e){t.disabled||e.disabled||(t.model=e)},t.vm.bind=function(){t.$watch("model",function(e,i){if(e){var o=t.$eval(e.onEnter);if(n.isFunction(o)&&o(e),i){var l=t.$eval(i.onExit);n.isFunction(l)&&l(i,e)}n.isFunction(t.onChanged)&&t.onChanged(e)}})},t.vm.compile=function(){var n=e(s);l.append(n),i(n)(t)},t.vm.init()}}}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("calendar",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",culture:"=?",model:"=?"},templateUrl:"/templates/framework/directives/calendar/template.html",link:function(e,i,t){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.readonly)&&(e.readonly=!1),e.vm.bind()},e.vm.bind=function(){},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").factory("captchaService",["apiService",function(e){return{get:function(){return e.get("captcha/generate")}}}]).directive("captcha",["captchaService",function(e){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",triggerRefresh:"=?",model:"=?"},templateUrl:"/templates/framework/directives/captcha/template.html",link:function(i,t,o){i.vm={},i.vm.init=function(){n.isUndefined(i.disabled)&&(i.disabled=!1),n.isUndefined(i.visible)&&(i.visible=!0),n.isUndefined(i.cssClass)&&(i.cssClass=""),n.isUndefined(i.model)&&(i.model={value:"",key:""}),i.vm.bind(),i.vm.refresh()},i.vm.refresh=i.triggerRefresh=function(){i.vm.waiting=!0,e.get().then(function(e){i.vm.waiting=!1,e.status&&(i.vm.image="data:image/png;base64,"+e.data.image,i.model.key=e.data.key,i.model.value="")})},i.vm.bind=function(){},i.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("checkbox",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",triggerOnInit:"=?",onChange:"<?",disabled:"=?",visible:"=?",cssClass:"=?",labelTranslate:"<?",label:"<?",model:"=?"},templateUrl:"/templates/framework/directives/checkbox/template.html",link:function(e,i,t){e.vm={initialized:!1},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.model)&&(e.model=!1),e.vm.bind()},e.vm.toggle=function(n){n.stopPropagation(),n.preventDefault(),e.disabled||(e.model=!e.model)},e.vm.bind=function(){e.$watch("model",function(i,t){(e.vm.initialized||(e.vm.initialized=!0,e.triggerOnInit))&&e.vm.initialized&&n.isFunction(e.onChange)&&e.onChange(e.model,e.tag)})},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("crumbNav",["$document","cultureService",function(o,l){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",waiting:"=?",onSelect:"=?",onRefresh:"=?",model:"=?"},templateUrl:"/templates/framework/directives/crumb-nav/template.html",link:function(s,d,a){s.vm={rtl:l.rtl},s.vm.init=function(){n.isUndefined(s.disabled)&&(s.disabled=!1),n.isUndefined(s.visible)&&(s.visible=!0),n.isUndefined(s.cssClass)&&(s.cssClass=""),n.isUndefined(s.model)&&(s.model=[]),s.vm.bind()},s.vm.bind=function(){o.on("click",s.vm.closeElseWhere),s.$on("$destroy",function(){o.off("click",s.vm.closeElseWhere),e(t).off("resize",s.vm.calculateWidth)}),s.$watch("model",function(){s.vm.calculateWidth()}),e(t).on("resize",s.vm.calculateWidth)},s.vm.onRoot=function(){n.isFunction(s.onSelect)&&s.onSelect({path:"/"})},s.vm.onAction=function(e){e.action&&e.action(e),n.isFunction(s.onSelect)&&s.onSelect(e)},s.vm.closeElseWhere=function(){s.$apply(function(){s.vm.collapse()})},s.vm.collapse=function(e){s.model.forEach(function(n){n!==e&&(n.expand=!1)})},s.vm.onExpand=function(e,n){n.stopPropagation(),n.preventDefault(),s.vm.collapse(e),void 0===e.expand&&(e.expand=!1),e.expand=!e.expand},s.vm.calculateWidth=i.debounce(function(){var n=0;d.find(".root-folder").each(function(i,t){n+=e(t).width(),n+=10});var i=d.find(".path-inner-container");i.width()>=n?(i.removeClass("slide"),s.vm.currentPosition=0,d.find(".root-folders").css({left:s.vm.currentPosition})):(i.addClass("slide"),s.vm.currentPosition=25,d.find(".root-folders").css({width:n,left:s.vm.currentPosition})),s.vm.available=i.width(),s.vm.totalWidth=n,s.vm.gap=s.vm.totalWidth-s.vm.available},300),s.vm.scrollLeft=function(){s.vm.currentPosition-100>=-25?s.vm.currentPosition-=100:s.vm.currentPosition=-25;var e={};l.rtl?e.left=s.vm.currentPosition:e.left=-s.vm.currentPosition,d.find(".root-folders").css(e)},s.vm.scrollRight=function(){s.vm.currentPosition+100<=s.vm.gap?s.vm.currentPosition+=100:s.vm.currentPosition=s.vm.gap;var e={};l.rtl?e.left=s.vm.currentPosition:e.left=-s.vm.currentPosition,d.find(".root-folders").css(e)},s.vm.refresh=function(){n.isFunction(s.onRefresh)&&s.onRefresh()},s.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("datePicker",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",culture:"=?",model:"=?"},templateUrl:"/templates/framework/directives/date-picker/template.html",link:function(e,i,t){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.readonly)&&(e.readonly=!1),e.vm.bind()},e.vm.bind=function(){},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").factory("dropdownService",["apiService",function(e){return{get:function(n,i){return e(n,i)}}}]).directive("dropdown",["$document","$filter","dropdownService",function(e,i,t){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",model:"=?",textField:"=?",valueField:"=?",items:"=?",backend:"=?",onChange:"=?",placeHolder:"=?",placeHolderTranslate:"=?",backendData:"=?"},templateUrl:"/templates/framework/directives/dropdown/template.html",link:function(o,l,s){o.vm={plate:!1,waiting:!1,selectedItemText:""},o.vm.init=function(){n.isUndefined(o.disabled)&&(o.disabled=!1),n.isUndefined(o.visible)&&(o.visible=!0),n.isUndefined(o.items)&&(o.items=[]),n.isUndefined(o.cssClass)&&(o.cssClass=""),n.isUndefined(o.textField)&&(o.textField="text"),n.isUndefined(o.valueField)&&(o.valueField="value"),o.vm.bind()},o.vm.closeElseWhere=function(e){o.$apply(function(){o.vm.plate=!1})},o.vm.prevent=function(e){e.stopPropagation(),e.preventDefault()},o.vm.getText=function(){return void 0===o.model||null===o.model?i("textOrTranslate")(o.placeHolder,o.placeHolderTranslate):o.vm.selectedItemText},o.vm.toggle=function(){o.disabled||(o.vm.plate=!o.vm.plate)},o.vm.bind=function(){o.$on("$destroy",function(){e.off("click",o.vm.closeElseWhere)}),e.on("click",o.vm.closeElseWhere),o.$watch("model",function(e,i){n.isFunction(o.onChange)&&o.onChange(e,o.tag)}),o.$watch("backend",o.vm.transport)},o.vm.transport=function(e){e&&(o.vm.waiting=!0,t.get(e,o.backendData).then(function(e){o.vm.waiting=!1,e.status&&(o.items=e.data||[])}))},o.vm.onPick=function(e){o.disabled||(o.model=e[o.valueField],o.vm.selectedItemText=e[o.textField],o.vm.plate=!1)},o.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").factory("editorService",["$q",function(e){return function(){return e(function(e,n){if(t.CKEDITOR)return void e();$script("/framework/vendor/ckeditor/ckeditor.js",function(){e()})})}}]).directive("editor",["editorService","commonService","modalService","fileService",function(e,i,o,l){var s=!1;return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",instance:"=?",model:"=?"},templateUrl:"/templates/framework/directives/editor/template.html",link:function(d,a,r){d.vm={uuid:i.uuid()},d.vm.init=function(){n.isUndefined(d.disabled)&&(d.disabled=!1),n.isUndefined(d.visible)&&(d.visible=!0),n.isUndefined(d.cssClass)&&(d.cssClass=""),d.vm.bind()},d.vm.setup=function(){s||(t.CKEDITOR.on("dialogDefinition",function(e){var n=e.data.name,t=e.data.definition;if("image"===n)for(var s=0;s<t.contents.length;s++){var d=t.contents[s].get("browse");null!==d&&(d.hidden=!1,d.onClick=function(e,n){o.dialog({titleTranslate:"editor.fileManager",template:'<file-manager multiple-selection="false" model="vm.selectedFiles"></file-manager>',data:{},onAccept:function(n){return i.$q(function(i,t){return n.vm.selectedFiles&&n.vm.selectedFiles.length&&l.isImage(n.vm.selectedFiles[0].path)?(e.data.dialog.getContentElement("info","txtUrl").setValue(n.vm.selectedFiles[0].path),void i()):void t()})}})})}}),s=!0)},d.vm.bind=function(){e().then(function(){d.vm.setup(),d.instance=t.CKEDITOR.replace(d.vm.uuid,{language:i.culture.lang}),d.instance.on("change",function(){d.$apply(function(){d.model=d.instance.getData()})})}),d.$on("$destroy",function(){d.instance&&d.instance.destroy()})},d.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("fileExplorer",["$document","translateService","fileService",function(e,i,t){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",items:"=?",search:"=?",onDoubleSelect:"=?",onSelect:"=?",onParent:"=?",path:"=?",multipleSelection:"=?",mode:"=?",model:"=?"},templateUrl:"/templates/framework/directives/file-explorer/template.html",link:function(o,l,s){o.vm={namePlate:!1,datePlate:!1,typePlate:!1,sizePlate:!1},o.vm.init=function(){n.isUndefined(o.disabled)&&(o.disabled=!1),n.isUndefined(o.multipleSelection)&&(o.multipleSelection=!1),n.isUndefined(o.visible)&&(o.visible=!0),n.isUndefined(o.cssClass)&&(o.cssClass=""),n.isUndefined(o.mode)&&(o.mode="large"),n.isUndefined(o.items)&&(o.items=[]),n.isUndefined(o.model)&&(o.model=[]),o.vm.bind()},o.vm.showSort=function(e,n){o.vm.closeElseWhere(n),o.vm[e]=!0},o.vm.closeElseWhere=function(e){e.stopPropagation(),e.preventDefault(),o.vm.namePlate=!1,o.vm.datePlate=!1,o.vm.typePlate=!1,o.vm.sizePlate=!1},o.vm.onSort=function(e,n,i){i.stopPropagation(),i.preventDefault()},o.vm.onParent=function(){n.isFunction(o.onParent)&&o.onParent()},o.vm.getIcon=function(e){return e.folder?"af-icon-folder":"af-icon-{0} af-icon-file".format([t.getExtention(e.path).replace(".","")])},o.vm.onDoubleClick=function(e,i){i.stopPropagation(),i.preventDefault(),n.isFunction(o.onDoubleSelect)&&o.onDoubleSelect(e)},o.vm.unSelect=function(){o.model=[],o.items.forEach(function(e){e.selected=!1}),n.isFunction(o.onSelect)&&o.onSelect(o.model)},o.vm.onClick=function(e,i){if(i.stopPropagation(),i.preventDefault(),i.ctrlKey||macKeys.ctrlKey){if(!o.multipleSelection)return;e.selected?(e.selected=!1,o.model.del(e)):(e.selected=!0,o.model.push(e))}else o.items.forEach(function(n){n.selected=e===n}),o.model=[e];n.isFunction(o.onSelect)&&o.onSelect(o.model)},o.vm.getExtention=function(e){return e.folder?i("general.folder"):t.getExtention(e.path)},o.vm.bind=function(){e.on("click",o.vm.closeElseWhere),o.$on("$destroy",function(){e.off("click",o.vm.closeElseWhere)})},o.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").factory("fileManagerService",["apiService",function(e){var n=function(e,n){return"{0}/{1}".format([e||"file-manager",n]).replace(/\/\//g,"/")};return{listDirectory:function(i,t){var o=n(i,"listDirectory");return e.post(o,{path:t})}}}]).directive("fileManager",["fileManagerService","fileService","modalService",function(e,i,t){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",toolbar:"=?",toolbarActions:"=?",toolbarActionsTitle:"<?",toolbarActionsTitleTranslate:"<?",toolbarTitle:"<?",toolbarTitleTranslate:"<?",searchTitle:"<?",searchTitleTranslate:"<?",multipleSelection:"=?",model:"=?"},templateUrl:"/templates/framework/directives/file-manager/template.html",link:function(o,l,s){o.vm={treeToggle:!0,waiting:!1,path:"/",search:"",ribbon:void 0,tree:[],fileExplorer:[],crumbNav:[]},o.vm.init=function(){n.isUndefined(o.disabled)&&(o.disabled=!1),n.isUndefined(o.visible)&&(o.visible=!0),n.isUndefined(o.cssClass)&&(o.cssClass=""),n.isUndefined(o.toolbar)&&(o.toolbar=!1),n.isUndefined(o.model)&&(o.model=[]),o.vm.bind()},o.vm.bind=function(){o.$watchCollection("model",function(e,n){if(e||n)return e&&e.length?void o.vm.updateRibbon(e[0].folder):void o.vm.updateRibbon()}),o.vm.refresh()},o.vm.onRibbonAction=function(e){switch(o.$eval(e.key)){case"select-all":o.vm.fileExplorer.forEach(function(e){e.selected=!0});break;case"select-none":o.vm.fileExplorer.forEach(function(e){e.selected=!1});break;case"select-invert":o.vm.fileExplorer.forEach(function(e){e.selected=!e.selected});break;case"navigation-pane":o.vm.toggleExplorer();break;case"xlarge-icons":o.vm.mode="x-large";break;case"medium-icons":o.vm.mode="medium";break;case"details-icons":o.vm.mode="detailed";break;case"large-icons":o.vm.mode="large";break;case"small-icons":o.vm.mode="small";break;case"tiles-icons":o.vm.mode="tiles";break;case"copy":case"paste":case"cut":break;case"delete":t.confirm({titleTranslate:"general.default_confirm_delete_title",messageTranslate:"general.default_confirm_delete_message"}).then(function(e){e&&o.vm.command("delete")})}},o.vm.command=function(e){},o.vm.updateRibbon=function(e){o.vm.ribbon[0].enabled=!1,o.vm.ribbon[1].enabled=!1,o.vm.ribbon[2].enabled=!1,o.vm.ribbon[3].enabled=!1,o.vm.ribbon[4].enabled=!1,o.vm.ribbon[5].enabled=!0,o.vm.ribbon[6].enabled=!1,o.vm.ribbon[7].enabled=!0,o.vm.ribbon[8].enabled=!1,o.vm.ribbon[9].enabled=!1,o.vm.ribbon[10].enabled=!1,o.vm.ribbon[11].enabled=!1,void 0!==e&&(o.vm.ribbon[0].enabled=!0,o.vm.ribbon[1].enabled=!1,o.vm.ribbon[2].enabled=!0,o.vm.ribbon[3].enabled=!0,o.vm.ribbon[4].enabled=!0,o.vm.ribbon[10].enabled=!0,e||(o.vm.ribbon[6].enabled=!0,o.vm.ribbon[8].enabled=!0,o.vm.ribbon[9].enabled=!0,".zip"===i.getExtention(o.model[0].path)&&(o.vm.ribbon[11].enabled=!0)))},o.vm.toggleExplorer=function(e){e&&(e.stopPropagation(),e.preventDefault()),o.vm.treeToggle=!o.vm.treeToggle},o.vm.onNodeExpand=function(n){n.waiting||n.items&&n.item.length||n.folder&&(n.waiting=!0,e.listDirectory(o.backend,n.path).then(function(e){e.data.status&&(n.expanded=!0,n.items=e.data.data.content.filter(function(e){return e.folder}).map(function(e){return{title:e.name,expandable:!0,path:e.path,folder:!0}})),n.waiting=!1}))},o.vm.onNodeSelect=function(e){e.items&&e.item.length||e.folder&&(o.vm.path=e.path,o.vm.refresh())},o.vm.onCrumbFolderPicked=function(e){o.vm.path=e.path,o.vm.refresh()},o.vm.onCrumbRefresh=function(){o.vm.refresh()},o.vm.onExplorerParent=function(){1===o.vm.crumbNav.length?(o.vm.path="/",o.vm.refresh()):o.vm.crumbNav.length>1&&o.vm.onCrumbFolderPicked(o.vm.crumbNav.length-2)},o.vm.onExplorerDoubleSelect=function(e){e.folder&&(o.vm.path=e.path,o.vm.refresh())},o.vm.onExplorerSelect=function(e){o.model=e},o.vm.refresh=function(){o.vm.waiting=!0,e.listDirectory(o.backend,o.vm.path).then(function(e){e.data.status&&(o.vm.path=e.data.data.path,o.vm.fileExplorer=e.data.data.content,o.vm.crumbNav=[],"/"===o.vm.path?o.vm.tree=e.data.data.content.filter(function(e){return e.folder}).map(function(e){return{title:e.name,expandable:!0,path:e.path,folder:!0}}):o.vm.generateCrumb()),o.vm.waiting=!1})},o.vm.generateCrumb=function(){for(var e=o.vm.path.split("/"),n=1;n<e.length;n++)o.vm.crumbNav.push({path:e.concat([]).splice(0,n+1).join("/"),title:e[n]})},o.vm.onAction=function(e){e.action&&e.action(e)},o.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("filePicker",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",culture:"=?",model:"=?"},templateUrl:"/templates/framework/directives/file-picker/template.html",link:function(e,i,t){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.readonly)&&(e.readonly=!1),e.vm.bind()},e.vm.bind=function(){},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").factory("formElementsService",[function(){var n=["directive","label","labelTranslate"];return{generate:function(i){var t=e('<form class="generated-form-element"></form>');i=i||{},i.$groups=i.$groups||{"column-1":{size:"col-md-12"}};var o={};return Object.keys(i.$groups).forEach(function(n){var l=e('<div class="{0}"><div class="panel panel-white"> <div class="panel-heading"><h3 class="panel-title">{{:: {1}.title|textOrTranslate:{1}.titleTranslate }}</h3></div> <div class="panel-body"></div> </div></div>'.format([i.$groups[n].size||"col-md-12","$parent.model.$groups['{0}']".format([n])||" "]));o[n]=l.find(".panel-body"),t.append(l)}),Object.keys(i).forEach(function(t,l){if("$groups"!==t){void 0===i[t].visible&&(i[t].visible=!0),void 0===i[t].disabled&&(i[t].disabled=!1);var s=e("<div class='form-group'></div>");s.attr("ng-if","$parent.model['{0}'].visible".format([t]));var d=e("<label>{{::$parent.$parent.model['{0}'].label|textOrTranslate:$parent.$parent.model['{0}'].labelTranslate}}</label>".format([t]));s.append(d);var a=e("<{0}></{0}>".format([i[t].directive]));Object.keys(i[t]).forEach(function(e){-1===n.indexOf(e)&&a.attr(e.toKebabCase(),"$parent.$parent.model['{0}']['{1}']".format([t,e]))}),s.append(a),o[i[t].group||"column-1"].append(s)}}),t}}}]).directive("formElements",["$compile","$templateCache","formElementsService",function(i,t,o){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",model:"=?",waiting:"=?"},compile:function(){var t=e('<div ng-show="visible" class="af-form-elements af-component {{::cssClass}}"></div>');return{pre:function(e,l,s){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.waiting)&&(e.waiting=!1),e.vm.bind()},e.vm.bind=function(){l.append('<div ng-show="visible" class="af-form-elements af-component {{::cssClass}}"></div>'),e.$watch("model",e.vm.build)},e.vm.build=function(){var n=t.find(".generated-form-element");n.children().size()>0&&n.children().each(function(e,n){n.scope().destroy(),n.remove()});var s=o.generate(e.model);l.find(".af-form-elements").append(s),i(s)(e.$new(!0))},e.vm.init()}}}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("googleMap",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",model:"=?"},templateUrl:"/templates/framework/directives/google-map/template.html",link:function(e,i,t){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),e.vm.bind()},e.vm.bind=function(){},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("gridView",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",culture:"=?",model:"=?"},templateUrl:"/templates/framework/directives/grid-view/template.html",link:function(e,i,t){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.readonly)&&(e.readonly=!1),e.vm.bind()},e.vm.bind=function(){},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").factory("modalGeneratorService",["$q","$compile","$rootScope","$templateCache","commonService",function(n,i,t,o,l){var s=o.get("/templates/framework/directives/modal/template.html"),d=e(s);return function(s){return n(function(n,a){if(!s.template&&!s.templateUrl)return void a("no template provided!");var r=l.uuid(),c=d.clone();s.templateUrl&&(s.template=o.get(s.templateUrl)),s.controller&&c.find(".modal-body").attr("ng-controller",s.controller),c.find(".modal-body").append(s.template);var m=t.$new(!0),u=function(){var i=e("#"+r);i.detach(),m.$destroy(),i.remove(),n(!1)},v=function(i){var t=e("#"+r);t.detach(),n(i,m),m.$destroy(),t.remove()};m.title=s.title,m.titleTranslate=s.titleTranslate,m.message=s.message,m.messageTranslate=s.messageTranslate,m.uuid=r,m.data=s.data,m.vm={},m.vm.dismiss=function(){if(!s.onDismiss)return void u();var e=s.onDismiss(m);!0===e?u():e.then&&e.then(function(){u()},function(){})},m.vm.accept=function(){if(!s.onAccept)return void v();var e=s.onAccept(m);!0===e?v():e.then&&(m.vm.waiting=!0,e.then(function(e){v(e),m.vm.waiting=!1},function(){m.vm.waiting=!1}))},e("body").append(c),i(c)(m)})}}]).factory("modalService",["modalGeneratorService",function(e){return{confirm:function(i){var t={title:void 0,titleTranslate:"general.default_confirm_title",message:void 0,messageTranslate:"general.default_confirm_message",template:void 0,templateUrl:"/templates/framework/directives/modal/confirm.html",controller:void 0,icon:void 0,data:void 0,onAccept:void 0,onDismiss:void 0};return n.extend(t,i),e(t)},dialog:function(i){var t={title:" ",titleTranslate:void 0,template:void 0,templateUrl:void 0,controller:void 0,icon:void 0,data:void 0,onAccept:void 0,onDismiss:void 0};return n.extend(t,i),e(t)}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("multiSelect",["$document",function(e){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",textField:"=?",valueField:"=?",placeHolderTranslate:"=?",placeHolder:"=?",items:"=?",model:"=?"},templateUrl:"/templates/framework/directives/multi-select/template.html",link:function(i,t,o){i.vm={plate:!1},i.vm.init=function(){n.isUndefined(i.disabled)&&(i.disabled=!1),n.isUndefined(i.visible)&&(i.visible=!0),n.isUndefined(i.cssClass)&&(i.cssClass=""),n.isUndefined(i.textField)&&(i.textField="text"),n.isUndefined(i.valueField)&&(i.valueField="value"),n.isUndefined(i.model)&&(i.model=[]),n.isUndefined(i.items)&&(i.items=[]),n.isUndefined(i.readonly)&&(i.readonly=!1),i.vm.bind()},i.vm.closeElseWhere=function(e){i.$apply(function(){i.vm.plate=!1})},i.vm.prevent=function(e){e.stopPropagation(),e.preventDefault()},i.vm.onAdd=function(e,n){i.disabled||i.model.add(n)},i.vm.onDelete=function(e,n){e.preventDefault(),e.stopPropagation(),i.disabled||i.model.del(n)},i.vm.togglePlate=function(){i.disabled||i.readonly||(i.vm.plate=!i.vm.plate)},i.vm.bind=function(){i.$on("$destroy",function(){e.off("click",i.vm.closeElseWhere)}),e.on("click",i.vm.closeElseWhere)},i.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("numbox",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",required:"=?",triggerOnInit:"=?",readonly:"=?",model:"=?"},templateUrl:"/templates/framework/directives/numbox/template.html",link:function(e,i,t){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.required)&&(e.required=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),e.required&&n.isUndefined(e.model)&&(e.model=0),n.isUndefined(e.readonly)&&(e.readonly=!1),e.vm.bind()},e.vm.increase=function(){e.disabled||e.readonly||(e.model=parseInt(e.model||0)+1)},e.vm.decrease=function(){e.disabled||e.readonly||(e.model=parseInt(e.model||0)-1)},e.vm.bind=function(){e.$watch("model",function(i,t){(e.vm.initialized||(e.vm.initialized=!0,e.triggerOnInit))&&e.vm.initialized&&n.isFunction(e.onChange)&&e.onChange(e.model,e.tag)})},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("password",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",placeHolder:"=?",placeHolderTranslate:"=?",prependIcon:"=?",appendIcon:"=?",label:"=?",labelTranslate:"=?",model:"=?",onChanged:"<?",readonly:"=?"},templateUrl:"/templates/framework/directives/password/template.html",link:function(e,i,t){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.readonly)&&(e.readonly=!1),e.vm.bind()},e.vm.bind=function(){e.$watch("model",function(i,t){if(void 0===i||null===i)return void(e.model="");n.isFunction(e.onChanged)&&e.onChanged(e.model,e.tag,t)})},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("progressbar",[function(){return{restrict:"E",replace:!0,scope:{disabled:"=?",visible:"=?",cssClass:"=?",model:"=?"},templateUrl:"/templates/framework/directives/progressbar/template.html",link:function(e,i,t){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.model)&&(e.model=0),e.vm.bind()},e.vm.bind=function(){},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("radio",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",onChange:"<?",disabled:"=?",visible:"=?",cssClass:"=?",textField:"=?",valueField:"=?",triggerOnInit:"=?",items:"=?",inline:"=?",model:"=?"},templateUrl:"/templates/framework/directives/radio/template.html",link:function(e,i,t){e.vm={initialized:!1},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.inline)&&(e.inline=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.triggerOnInit)&&(e.triggerOnInit=!1),n.isUndefined(e.items)&&(e.items=[]),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.textField)&&(e.textField="text"),n.isUndefined(e.valueField)&&(e.valueField="value"),n.isUndefined(e.readonly)&&(e.readonly=!1),e.vm.bind()},e.vm.onPick=function(n){e.disabled||(e.model=n[e.valueField])},e.vm.bind=function(){e.$watch("model",function(i,t){(e.vm.initialized||(e.vm.initialized=!0,e.triggerOnInit))&&e.vm.initialized&&n.isFunction(e.onChange)&&e.onChange(e.model,e.tag,e.items)})},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").factory("ribbonService",[function(){var n=function(e,n,i){return e.hasAttribute(n)?e.getAttribute(n):i},i=function(i){var t=[];return e(i).find("button").each(function(i,o){var l={title:n(o,"title",""),titleTranslate:n(o,"title-translate",null),icon:n(o,"icon",null),inline:n(o,"inline",!1),toggle:n(o,"toggle",!1),enabled:n(o,"enabled",!0),buttons:[],key:n(o,"key","")};e(o).find("sub-button").each(function(e,i){var t={title:n(i,"title",""),titleTranslate:n(i,"title-translate",null),icon:n(i,"icon",null),enabled:n(o,"enabled",!0)};l.buttons.push(t)}),t.push(l)}),t};return{parse:function(t){var o=[],l=[];return e(t).each(function(t,s){var d={title:n(s,"title",""),titleTranslate:n(s,"title-translate",null),icon:n(s,"icon",null),sections:[]};e(s).find("section").each(function(t,l){var s={title:n(l,"title",""),titleTranslate:n(l,"title-translate",null),name:n(l,"name",""),columns:[],buttons:[]},a=e(l).find("column");a.size()>0?a.each(function(e,n){var t=i(n);o.addRange(t),s.columns.push({buttons:t})}):(s.buttons=i(l),o.addRange(s.buttons)),d.sections.push(s)}),l.push(d)}),{steps:l,buttons:o}}}}]).directive("ribbon",["$templateCache","$compile","ribbonService","cultureService",function(o,l,s,d){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",onAction:"=?",buttons:"=?",model:"=?"},compile:function(a){var r=o.get("/templates/framework/directives/ribbon/template.html"),c=a.html();return a.empty(),{pre:function(o,a,m){o.vm={selectedStep:null},o.vm.init=function(){if(n.isUndefined(o.disabled)&&(o.disabled=!1),n.isUndefined(o.visible)&&(o.visible=!0),n.isUndefined(o.cssClass)&&(o.cssClass=""),n.isUndefined(o.buttons)&&(o.buttons=[]),n.isUndefined(o.steps)){var e=s.parse(c);o.steps=e.steps,o.buttons=e.buttons,o.steps.length&&o.vm.onPick(o.steps[0])}o.vm.compile(),o.vm.bind()},o.vm.getButtonClass=function(e){var n=["button"];o.$eval(e.enabled.toString())||n.push("disabled"),o.$eval(e.inline)&&n.push("inline"),o.$eval(e.toggle)&&n.push("toggle-button"),e.toggleState&&n.push("active");var i=o.$eval(e.cssClass);return i&&n.push(i),n.join(" ")},o.vm.onExpandButton=function(e,n){o.$eval(e.enabled.toString())&&(e.expand=!e.expand)},o.vm.onPick=function(e){o.disabled||(o.vm.selectedStep=e,o.vm.calculateWidth())},o.vm.calculateWidth=i.debounce(function(){var n=0;a.find(".section").each(function(i,t){n+=e(t).width(),n+=10});var i=a.find(".tabs-content");i.width()>=n?(i.removeClass("slide"),o.vm.currentPosition=0,a.find(".tab-content").css({left:o.vm.currentPosition,width:"auto"})):(i.addClass("slide"),o.vm.currentPosition=25,a.find(".tab-content").css({width:n,left:o.vm.currentPosition})),o.vm.available=i.width(),o.vm.totalWidth=n,o.vm.gap=o.vm.totalWidth-o.vm.available},300),o.vm.scrollLeft=function(){o.vm.currentPosition-100>=0?o.vm.currentPosition-=100:o.vm.currentPosition=0;var e={};d.rtl?e.left=o.vm.currentPosition:e.left=-o.vm.currentPosition,a.find(".tab-content").css(e)},o.vm.scrollRight=function(){o.vm.currentPosition+100<=o.vm.gap?o.vm.currentPosition+=100:o.vm.currentPosition=o.vm.gap;var e={};d.rtl?e.left=o.vm.currentPosition:e.left=-o.vm.currentPosition,a.find(".tab-content").css(e)},o.vm.compile=function(){var n=e(r);a.append(n),l(n)(o)},o.vm.bind=function(){o.$on("$destroy",function(){e(t).off("resize",o.vm.calculateWidth)}),o.$watch("steps",function(){o.vm.calculateWidth()}),e(t).on("resize",o.vm.calculateWidth)}, | ||
o.vm.onAction=function(e){n.isFunction(o.onAction)&&o.onAction(e)},o.vm.init()}}}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("slider",["cultureService",function(e){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",step:"=?",min:"=?",max:"=?",from:"=?",to:"=?",dual:"=?",model:"=?"},templateUrl:"/templates/framework/directives/slider/template.html",link:function(i,t,o){i.vm={instance:null},i.vm.init=function(){n.isUndefined(i.disabled)&&(i.disabled=!1),n.isUndefined(i.visible)&&(i.visible=!0),n.isUndefined(i.cssClass)&&(i.cssClass=""),n.isUndefined(i.min)&&(i.min=0),n.isUndefined(i.max)&&(i.max=100),n.isUndefined(i.step)&&(i.step=10),n.isUndefined(i.model)&&(i.model=0),n.isUndefined(i.dual)&&(i.dual=!1),i.vm.bind()},i.vm.update=function(e){!i.disabled&&i.vm.instance&&(i.min=e.min,i.max=e.max,i.from=e.from,i.to=e.to,i.model=e.from)},i.vm.updateBack=function(e){!i.disabled&&i.vm.instance&&i.vm.instance.update(e)},i.vm.bind=function(){t.find("input").ionRangeSlider({min:i.min,max:i.max,from:i.from||i.model,to:i.dual?i.to:void 0,type:i.dual?"double":"single",onStart:i.vm.update,onChange:i.vm.update,step:i.step,disable:i.disabled,prettify:function(n){if(!e.rtl)return n;var t=(i.min,i.max),o=n;return i.min<0?(0,t=i.max-i.min,o=n-i.min,(o=t-o)+i.min):n=i.max-n}}),i.$watch("disabled",function(e){i.vm.updateBack({disable:e})}),i.vm.instance=t.find("input").data("ionRangeSlider"),i.$on("$destroy",function(){i.vm.instance.destroy()})},i.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("switch",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",model:"=?"},templateUrl:"/templates/framework/directives/switch/template.html",link:function(e,i,t){e.vm={initialized:!1},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.readonly)&&(e.readonly=!1),e.vm.bind()},e.vm.toggle=function(n){n.stopPropagation(),n.preventDefault(),e.disabled||(e.model=!e.model)},e.vm.bind=function(){e.$watch("model",function(i,t){(e.vm.initialized||(e.vm.initialized=!0,e.triggerOnInit))&&e.vm.initialized&&n.isFunction(e.onChange)&&e.onChange(e.model,e.tag)})},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").factory("tabsService",function(){var n=function(e,n,i){return e.hasAttribute(n)?e.getAttribute(n):i};return{parse:function(i){var t=[];return e(i).each(function(e,i){t.push({disabled:n(i,"disabled",!1),cssClass:n(i,"css-class",""),title:n(i,"title",""),titleTranslate:n(i,"title-translate",null),icon:n(i,"icon",null),onEnter:n(i,"on-enter",null),onEnterValidate:n(i,"on-enter-validate",null),onExit:n(i,"on-exit",null),onExitValidate:n(i,"on-exit-validate",null),content:i.innerHTML})}),t}}}).directive("tabs",["$compile","$templateCache","tabsService",function(i,t,o){return{restrict:"E",replace:!0,scope:{disabled:"=?",visible:"=?",cssClass:"=?",keepScope:"=?",position:"=?",onChanged:"<?",onEnter:"<?",onExit:"<?",triggerPick:"=?",preventPick:"=?",steps:"=?",model:"=?"},compile:function(l){var s=t.get("/templates/framework/directives/tabs/template.html"),d=l.html();return l.empty(),{pre:function(t,l,a){t.vm={},t.vm.init=function(){n.isUndefined(t.disabled)&&(t.disabled=!1),n.isUndefined(t.keepScope)&&(t.keepScope=!1),n.isUndefined(t.preventPick)&&(t.preventPick=!1),n.isUndefined(t.visible)&&(t.visible=!0),n.isUndefined(t.cssClass)&&(t.cssClass=""),n.isUndefined(t.position)&&(t.position="top"),n.isUndefined(t.steps)&&(t.steps=o.parse(d)),n.isUndefined(t.model)&&t.steps.length&&t.vm.onPick(t.steps[0]),t.vm.compile(),t.vm.bind()},t.vm.onExitValidate=function(){var e=t.$parent.$eval(t.model.onExitValidate);return!n.isFunction(e)||e(t.model)},t.vm.onEnterValidate=function(e){var i=!0,o=t.$parent.$eval(e.onEnterValidate);n.isFunction(o)&&(i=o(e)),!0===i?t.vm.setModel(e):i&&i.then&&i.then(function(){t.vm.setModel(e)},function(){})},t.vm.setModel=function(e){t.model=e},t.vm.prepareForPick=function(e,n){n.stopPropagation(),n.preventDefault(),t.preventPick||t.vm.onPick(e)},t.vm.onPick=t.triggerPick=function(e){if(!t.disabled&&!e.disabled){if(!t.model)return void t.vm.setModel(e);var n=t.vm.onExitValidate();!0===n?t.vm.onEnterValidate(e):n&&n.then&&n.then(function(){t.vm.onEnterValidate(e)},function(){})}},t.vm.bind=function(){t.$watch("model",function(e,i){if(e){if(i){var o=t.$parent.$eval(i.onExit);n.isFunction(o)&&o(i,e),n.isFunction(t.onExit)&&t.onExit(i,e)}var l=t.$parent.$eval(e.onEnter);n.isFunction(l)&&l(e),n.isFunction(t.onEnter)&&t.onEnter(e),n.isFunction(t.onChanged)&&t.onChanged(e)}}),t.$on("$destroy",function(){t.triggerPick=null})},t.vm.compile=function(){var n=e(s);l.append(n),i(n)(t)},t.vm.init()}}}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("tags",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",model:"=?"},templateUrl:"/templates/framework/directives/tags/template.html",link:function(e,i,t){e.vm={query:""},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.model)&&(e.model=[]),e.vm.bind()},e.vm.onAdd=function(){!e.disabled&&e.vm.query&&-1===e.model.indexOf(e.vm.query)&&(e.model.push(e.vm.query),e.vm.query="")},e.vm.onRemove=function(n){e.disabled||e.model.del(n)},e.vm.bind=function(){},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("textArea",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",placeHolder:"=?",placeHolderTranslate:"=?",model:"=?",resize:"=?",rows:"=?",onChanged:"<?",readonly:"=?"},templateUrl:"/templates/framework/directives/text-area/template.html",link:function(e,i,t){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.resize)&&(e.resize="none"),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.rows)&&(e.rows=5),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.readonly)&&(e.readonly=!1),e.vm.bind()},e.vm.bind=function(){e.$watch("model",function(i,t){if(void 0===i||null===i)return void(e.model="");n.isFunction(e.onChanged)&&e.onChanged(e.model,e.tag,t)})},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("textbox",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",placeHolder:"=?",placeHolderTranslate:"=?",prependIcon:"=?",appendIcon:"=?",label:"=?",labelTranslate:"=?",model:"=?",onChanged:"<?",readonly:"=?"},templateUrl:"/templates/framework/directives/textbox/template.html",link:function(e,i,t){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.readonly)&&(e.readonly=!1),e.vm.bind()},e.vm.bind=function(){e.$watch("model",function(i,t){if(void 0===i||null===i)return void(e.model="");n.isFunction(e.onChanged)&&e.onChanged(e.model,e.tag,t)})},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("tree",["recursion-helper","commonService",function(e,i){return{restrict:"E",replace:!0,scope:{tag:"<?",uuid:"=?",disabled:"=?",visible:"=?",cssClass:"=?",onDemand:"=?",items:"=?",model:"=?",selectedNode:"=?",onNodeSelect:"=?",onNodeExpand:"=?"},templateUrl:"/templates/framework/directives/tree/template.html",link:function(e,t,o){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.items)&&(e.items=[]),n.isUndefined(e.uuid)&&(e.uuid=i.uuid()),e.vm.bind()},e.vm.onNodeExpand=function(i){e.disabled||i.disabled||i.waiting||n.isFunction(e.onNodeExpand)&&e.onNodeExpand(i)},e.vm.onNodeSelect=function(i){e.disabled||i.disabled||i.waiting||(e.selectedNode&&(e.selectedNode.selected=!1,e.selectedNode=null),e.selectedNode=i,e.selectedNode.selected=!0,i.items&&i.items.length&&(i.expanded=!i.expanded),n.isFunction(e.onNodeSelect)&&e.onNodeSelect(i))},e.vm.bind=function(){e.$on(e.uuid,function(n,i){switch(i.type){case"node-select":e.vm.onNodeSelect(i.value);break;case"node-expand":e.vm.onNodeExpand(i.value);break;default:console.log("Unknown event type : ",i.type)}})},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("treeContainer",["$rootScope","cultureService","recursion-helper",function(e,i,t){return{restrict:"E",replace:!0,scope:{uuid:"=",isRoot:"=",parent:"=",items:"=?"},templateUrl:"/templates/framework/directives/tree/tree-container.html",compile:function(o){return t.compile(o,function(t,o,l){t.vm={},t.vm.init=function(){n.isUndefined(t.disabled)&&(t.disabled=!1),n.isUndefined(t.visible)&&(t.visible=!0),n.isUndefined(t.cssClass)&&(t.cssClass=""),n.isUndefined(t.items)&&(t.items=[]),t.vm.bind()},t.vm.getNodeClass=function(e){return e.icon?e.icon:e.items&&e.items.length||e.expandable?"af-icon-folder":"af-icon-file"},t.vm.getNodeIcon=function(e){var n;return e.expanded?n="af-icon-chevron_down":(n=i.rtl?"af-icon-chevron_left":"af-icon-chevron_right",e.selected&&(n+="_hover")),n},t.vm.onPick=function(n,i){i.stopPropagation(),i.preventDefault(),e.$broadcast(t.uuid,{type:"node-select",value:n})},t.vm.onExpand=function(n,i){i.stopPropagation(),i.preventDefault(),e.$broadcast(t.uuid,{type:"node-expand",value:n})},t.vm.bind=function(){},t.vm.init()})}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("validation-messages",[function(){return{restrict:"E",replace:!0,scope:{model:"=?"},templateUrl:"/templates/framework/directives/validation-messages/template.html",link:function(e,i,t){e.vm={},e.vm.init=function(){n.isUndefined(e.model)&&(e.model=[])},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").directive("waiting",[function(){return{restrict:"E",replace:!0,templateUrl:"/templates/framework/directives/waiting/template.html"}}])}(jQuery,angular,_,window,document),function(e,n,i,t,o,l){"use strict";n.module("frontend.directives").run(["$rootScope",function(e){Object.defineProperty(e,"$WizardContext",{get:function(){return this.$parent}})}]).directive("wizard",["$compile","$templateCache",function(i,t){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",nextText:"<?",nextTextTranslate:"=?",backText:"<?",backTextTranslate:"=?",keepScope:"=?",position:"=?",onChanged:"<?",onEnter:"<?",onExit:"<?",steps:"=?",model:"=?"},compile:function(o){var l=o.html();o.empty();var s=t.get("/templates/framework/directives/wizard/template.html"),d=e(s);return d.find("tabs").html(l),{pre:function(e,t,o){e.vm={currentIndex:0},e.vm.onNext=function(){var n=e.steps.indexOf(e.model),i=n+1;i!==e.steps.length&&e.vm.triggerPick&&e.vm.triggerPick(e.steps[i])},e.vm.onBack=function(){var n=e.steps.indexOf(e.model),i=n-1;-1!==i&&e.vm.triggerPick&&e.vm.triggerPick(e.steps[i])},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.nextTextTranslate)&&(e.nextTextTranslate="general.next"),n.isUndefined(e.backTextTranslate)&&(e.backTextTranslate="general.previous"),e.vm.compile(),e.vm.bind()},e.vm.compile=function(){t.append(d),i(d)(e)},e.vm.bind=function(){Object.defineProperty(e.vm,"nextDisabled",{get:function(){return e.vm.currentIndex===e.steps.length-1}}),Object.defineProperty(e.vm,"backDisabled",{get:function(){return 0===e.vm.currentIndex}}),e.$watch("model",function(i,t){n.isUndefined(i)||(e.vm.currentIndex=e.steps.indexOf(i))})},e.vm.init()}}}}}])}(jQuery,angular,_,window,document); | ||
!function(e,n,t,i,o,a){"use strict";var r=n.module("frontend.directives");r.directive("showPanel",[function(){return{restrict:"A",link:function(e,n,t){var i=e.$eval(t.showPanel)||{},o=n.parent(),a=o.height()+(o.offset().top||i.top||0);n.css({position:"fixed",right:i.right||0,width:o.width()||i.width||"100%",height:i.height||200,top:a})}}}]),r.directive("onEnter",function(){return function(e,n,t){n.bind("keydown keypress",function(n){13===n.which&&(e.$apply(function(){e.$eval(t.onEnter,{event:n})}),n.preventDefault())})}}),r.directive("numberOnly",function(){return{require:"ngModel",link:function(e,n,t,i){function o(e){if(e){var n=e.replace(/[^0-9]/g,"");return n!==e&&(i.$setViewValue(n),i.$render()),n}return a}i.$parsers.push(o)}}})}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").factory("accordionService",function(){var n=function(e,n,t){return e.hasAttribute(n)?e.getAttribute(n):t};return{parse:function(t){var i=[];return e(t).each(function(e,t){i.push({disabled:n(t,"disabled",!1),cssClass:n(t,"css-class",""),title:n(t,"title",""),titleTranslate:n(t,"title-translate",null),icon:n(t,"icon",null),onEnter:n(t,"on-enter",null),onExit:n(t,"on-exit",null),content:t.innerHTML})}),i}}}).directive("accordion",["$compile","$templateCache","accordionService",function(t,i,o){return{restrict:"E",replace:!0,scope:{disabled:"=?",visible:"=?",cssClass:"=?",onChanged:"<?",steps:"=?",model:"=?"},compile:function(a){var r=i.get("/templates/framework/directives/accordion/template.html"),l=a.html();return a.empty(),{pre:function(i,a,d){i.vm={},i.vm.init=function(){n.isUndefined(i.disabled)&&(i.disabled=!1),n.isUndefined(i.visible)&&(i.visible=!0),n.isUndefined(i.cssClass)&&(i.cssClass=""),n.isUndefined(i.steps)&&(i.steps=o.parse(l)),n.isUndefined(i.model)&&i.steps.length&&(i.model=i.steps[0]),i.vm.compile(),i.vm.bind()},i.vm.onPick=function(e){i.disabled||e.disabled||(i.model=e)},i.vm.bind=function(){i.$watch("model",function(e,t){if(e){var o=i.$eval(e.onEnter);if(n.isFunction(o)&&o(e),t){var a=i.$eval(t.onExit);n.isFunction(a)&&a(t,e)}n.isFunction(i.onChanged)&&i.onChanged(e)}})},i.vm.compile=function(){var n=e(r);a.append(n),t(n)(i)},i.vm.init()}}}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("calendar",["cultureService",function(e){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",culture:"=?",onChange:"=?",mode:"=?",model:"=?"},templateUrl:"/templates/framework/directives/calendar/template.html",link:function(t,i,o){t.vm={cultureService:e,calendar:null,current:null,tempMonth:0,tempYear:0,tempYears:[]},t.vm.setToday=function(){t.vm.update(t.vm.today.year,t.vm.today.month,t.vm.today.day),"days"!==t.mode?t.vm.switch("days"):t.vm.paintDays()},t.vm.paintDays=function(){for(var e=[],n=t.vm.tempMonth-1,i=0===n?11:n-1,o=t.vm.calendar.daysInMonth[i],a=t.vm.calendar.daysInMonth[n],r=11===n?0:n+1,l=0===r?t.vm.tempYear+1:t.vm.tempYear,d=t.vm.calendar.getMonthStartWeekDate(t.vm.tempYear,t.vm.tempMonth),s=11===i?t.vm.tempYear-1:t.vm.tempYear,c=o-d+t.vm.calendar.weekGap;c<=o;c++)e.push({year:s,month:i+1,number:c,old:!0});for(c=1;c<=a;c++)e.push({year:t.vm.tempYear,month:t.vm.tempMonth,number:c});var m=7-e.length%7;if(m)for(c=1;c<=m;c++)e.push({year:l,month:r+1,number:c,old:!0});t.vm.days=e.partition(7)},t.vm.paintYears=function(){for(var e=[],n=t.vm.tempYear-6;n<=t.vm.tempYear+5;n++)e.push(n);t.vm.tempYears=e},t.vm.forwardMonth=function(){12===t.vm.tempMonth?(t.vm.tempMonth=1,t.vm.tempYear++):t.vm.tempMonth++,t.vm.paintDays()},t.vm.backwardMonth=function(){1===t.vm.tempMonth?(t.vm.tempMonth=12,t.vm.tempYear--):t.vm.tempMonth--,t.vm.paintDays()},t.vm.updateYear=function(e){t.vm.update(e,t.vm.current.month,t.vm.current.day)},t.vm.updateMonth=function(e){t.vm.update(t.vm.current.year,e,t.vm.current.day)},t.vm.updateDay=function(e){t.vm.update(t.vm.current.year,t.vm.current.month,e)},t.vm.forwardYears=function(e){t.vm.tempYear+=e,t.vm.paintYears()},t.vm.backwardYears=function(e){t.vm.tempYear-=e,t.vm.paintYears()},t.vm.switch=function(e){t.mode=e},t.vm.getMonthName=function(){return t.vm.calendar.monthNames[t.vm.tempMonth-1]},t.vm.init=function(){n.isUndefined(t.disabled)&&(t.disabled=!1),n.isUndefined(t.visible)&&(t.visible=!0),n.isUndefined(t.cssClass)&&(t.cssClass=""),n.isUndefined(t.mode)&&(t.mode="days"),n.isUndefined(t.culture)&&(t.culture=e.lang),n.isUndefined(t.model)&&(t.model=new Date),t.vm.bind()},t.vm.update=function(e,n,i){t.vm.current.year=e,t.vm.current.month=n,t.vm.current.day=i,t.vm.tempYear=e,t.vm.tempMonth=n,t.model=t.vm.current.toDate(),t.onChanged&&t.onChanged(t.model,t.tag)},t.vm.bind=function(){switch(t.culture.toLowerCase()){case"fa":this.calendar=PersianCalendar;break;case"ar":this.calendar=HijriCalendar;break;default:this.calendar=GregorianCalendar}t.vm.current=new this.calendar(t.model),t.vm.today=new this.calendar(new Date),t.vm.update(t.vm.current.year,t.vm.current.month,t.vm.current.day),t.$watch("mode",function(e){switch((e||"").toLowerCase()){case"days":t.vm.paintDays();break;case"years":t.vm.paintYears()}})},t.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").factory("captchaService",["apiService",function(e){return{get:function(){return e.get("captcha/generate")}}}]).directive("captcha",["captchaService",function(e){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",triggerRefresh:"=?",model:"=?"},templateUrl:"/templates/framework/directives/captcha/template.html",link:function(t,i,o){t.vm={},t.vm.init=function(){n.isUndefined(t.disabled)&&(t.disabled=!1),n.isUndefined(t.visible)&&(t.visible=!0),n.isUndefined(t.cssClass)&&(t.cssClass=""),n.isUndefined(t.model)&&(t.model={value:"",key:""}),t.vm.bind(),t.vm.refresh()},t.vm.refresh=t.triggerRefresh=function(){t.vm.waiting=!0,e.get().then(function(e){t.vm.waiting=!1,e.status&&(t.vm.image="data:image/png;base64,"+e.data.image,t.model.key=e.data.key,t.model.value="")})},t.vm.bind=function(){},t.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("checkbox",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",triggerOnInit:"=?",onChange:"<?",disabled:"=?",visible:"=?",cssClass:"=?",labelTranslate:"<?",label:"<?",model:"=?"},templateUrl:"/templates/framework/directives/checkbox/template.html",link:function(e,t,i){e.vm={initialized:!1},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.model)&&(e.model=!1),e.vm.bind()},e.vm.toggle=function(n){n.stopPropagation(),n.preventDefault(),e.disabled||(e.model=!e.model)},e.vm.bind=function(){e.$watch("model",function(t,i){(e.vm.initialized||(e.vm.initialized=!0,e.triggerOnInit))&&e.vm.initialized&&n.isFunction(e.onChange)&&e.onChange(e.model,e.tag)})},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("crumbNav",["$document","cultureService",function(o,a){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",waiting:"=?",onSelect:"=?",onRefresh:"=?",model:"=?"},templateUrl:"/templates/framework/directives/crumb-nav/template.html",link:function(r,l,d){r.vm={rtl:a.rtl},r.vm.init=function(){n.isUndefined(r.disabled)&&(r.disabled=!1),n.isUndefined(r.visible)&&(r.visible=!0),n.isUndefined(r.cssClass)&&(r.cssClass=""),n.isUndefined(r.model)&&(r.model=[]),r.vm.bind()},r.vm.bind=function(){o.on("click",r.vm.closeElseWhere),r.$on("$destroy",function(){o.off("click",r.vm.closeElseWhere),e(i).off("resize",r.vm.calculateWidth)}),r.$watch("model",function(){r.vm.calculateWidth()}),e(i).on("resize",r.vm.calculateWidth)},r.vm.onRoot=function(){n.isFunction(r.onSelect)&&r.onSelect({path:"/"})},r.vm.onAction=function(e){e.action&&e.action(e),n.isFunction(r.onSelect)&&r.onSelect(e)},r.vm.closeElseWhere=function(){r.$timeout(function(){r.vm.collapse()})},r.vm.collapse=function(e){r.model.forEach(function(n){n!==e&&(n.expand=!1)})},r.vm.onExpand=function(e,n){n.stopPropagation(),n.preventDefault(),r.vm.collapse(e),void 0===e.expand&&(e.expand=!1),e.expand=!e.expand},r.vm.calculateWidth=t.debounce(function(){var n=0;l.find(".root-folder").each(function(t,i){n+=e(i).width(),n+=10});var t=l.find(".path-inner-container");t.width()>=n?(t.removeClass("slide"),r.vm.currentPosition=0,l.find(".root-folders").css({left:r.vm.currentPosition})):(t.addClass("slide"),r.vm.currentPosition=25,l.find(".root-folders").css({width:n,left:r.vm.currentPosition})),r.vm.available=t.width(),r.vm.totalWidth=n,r.vm.gap=r.vm.totalWidth-r.vm.available},300),r.vm.scrollLeft=function(){r.vm.currentPosition-100>=-25?r.vm.currentPosition-=100:r.vm.currentPosition=-25;var e={};a.rtl?e.left=r.vm.currentPosition:e.left=-r.vm.currentPosition,l.find(".root-folders").css(e)},r.vm.scrollRight=function(){r.vm.currentPosition+100<=r.vm.gap?r.vm.currentPosition+=100:r.vm.currentPosition=r.vm.gap;var e={};a.rtl?e.left=r.vm.currentPosition:e.left=-r.vm.currentPosition,l.find(".root-folders").css(e)},r.vm.refresh=function(){n.isFunction(r.onRefresh)&&r.onRefresh()},r.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("datePicker",["$document",function(e){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",culture:"=?",format:"=?",onChange:"=?",model:"=?"},templateUrl:"/templates/framework/directives/date-picker/template.html",link:function(t,i,o){t.vm={showPlate:!1,model:t.model},t.vm.init=function(){n.isUndefined(t.disabled)&&(t.disabled=!1),n.isUndefined(t.visible)&&(t.visible=!0),n.isUndefined(t.cssClass)&&(t.cssClass=""),t.vm.bind()},t.vm.onChange=function(e,n){t.model=e,t.onChange&&t.onChange(e,n)},t.vm.closeElseWhere=function(e){t.$apply(function(){t.vm.showPlate=!1})},t.vm.prevent=function(e){e.stopPropagation(),e.preventDefault()},t.vm.toggle=function(){t.disabled||(t.vm.showPlate=!t.vm.showPlate)},t.vm.bind=function(){t.$on("$destroy",function(){e.off("click",t.vm.closeElseWhere)}),e.on("click",t.vm.closeElseWhere)},t.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").factory("dropdownService",["apiService",function(e){return{get:function(n,t){return e(n,t)}}}]).directive("dropdown",["$document","$filter","dropdownService",function(e,t,i){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",model:"=?",textField:"=?",valueField:"=?",items:"=?",backend:"=?",onChange:"=?",placeHolder:"=?",placeHolderTranslate:"=?",backendData:"=?"},templateUrl:"/templates/framework/directives/dropdown/template.html",link:function(o,a,r){o.vm={plate:!1,waiting:!1,selectedItemText:""},o.vm.init=function(){n.isUndefined(o.disabled)&&(o.disabled=!1),n.isUndefined(o.visible)&&(o.visible=!0),n.isUndefined(o.items)&&(o.items=[]),n.isUndefined(o.cssClass)&&(o.cssClass=""),n.isUndefined(o.textField)&&(o.textField="text"),n.isUndefined(o.valueField)&&(o.valueField="value"),o.vm.bind()},o.vm.closeElseWhere=function(e){o.$apply(function(){o.vm.plate=!1})},o.vm.prevent=function(e){e.stopPropagation(),e.preventDefault()},o.vm.getText=function(){return void 0===o.model||null===o.model?t("textOrTranslate")(o.placeHolder,o.placeHolderTranslate):o.vm.selectedItemText},o.vm.toggle=function(){o.disabled||(o.vm.plate=!o.vm.plate)},o.vm.bind=function(){o.$on("$destroy",function(){e.off("click",o.vm.closeElseWhere)}),e.on("click",o.vm.closeElseWhere),o.$watch("model",function(e,t){n.isFunction(o.onChange)&&o.onChange(e,o.tag)}),o.$watch("backend",o.vm.transport)},o.vm.transport=function(e){e&&(o.vm.waiting=!0,i.get(e,o.backendData).then(function(e){o.vm.waiting=!1,e.status&&(o.items=e.data||[])}))},o.vm.onPick=function(e){o.disabled||(o.model=e[o.valueField],o.vm.selectedItemText=e[o.textField],o.vm.plate=!1)},o.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").factory("editorService",["$q",function(e){return function(){return e(function(e,n){if(i.CKEDITOR)return void e();$script("/framework/vendor/ckeditor/ckeditor.js",function(){e()})})}}]).directive("editor",["editorService","commonService","modalService","fileService",function(e,t,o,a){var r=!1;return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",instance:"=?",model:"=?"},templateUrl:"/templates/framework/directives/editor/template.html",link:function(l,d,s){l.vm={uuid:t.uuid()},l.vm.init=function(){n.isUndefined(l.disabled)&&(l.disabled=!1),n.isUndefined(l.visible)&&(l.visible=!0),n.isUndefined(l.cssClass)&&(l.cssClass=""),l.vm.bind()},l.vm.setup=function(){r||(i.CKEDITOR.on("dialogDefinition",function(e){var n=e.data.name,i=e.data.definition;if("image"===n)for(var r=0;r<i.contents.length;r++){var l=i.contents[r].get("browse");null!==l&&(l.hidden=!1,l.onClick=function(e,n){o.dialog({titleTranslate:"editor.fileManager",template:'<file-manager multiple-selection="false" model="vm.selectedFiles"></file-manager>',data:{},onAccept:function(n){return t.$q(function(t,i){return n.vm.selectedFiles&&n.vm.selectedFiles.length&&a.isImage(n.vm.selectedFiles[0].path)?(e.data.dialog.getContentElement("info","txtUrl").setValue(n.vm.selectedFiles[0].path),void t()):void i()})}})})}}),r=!0)},l.vm.bind=function(){e().then(function(){l.vm.setup(),l.instance=i.CKEDITOR.replace(l.vm.uuid,{language:t.culture.lang}),l.instance.on("change",function(){l.$apply(function(){l.model=l.instance.getData()})})}),l.$on("$destroy",function(){l.instance&&l.instance.destroy()})},l.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("fileExplorer",["$document","translateService","fileService",function(e,t,i){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",items:"=?",search:"=?",onDoubleSelect:"=?",onSelect:"=?",onParent:"=?",path:"=?",multipleSelection:"=?",newFolder:"=?",onNewFolder:"<?",onRename:"<?",mode:"=?",model:"=?"},templateUrl:"/templates/framework/directives/file-explorer/template.html",link:function(o,a,r){o.vm={newFolder:"",creating:!1,namePlate:!1,datePlate:!1,typePlate:!1,sizePlate:!1},o.vm.init=function(){n.isUndefined(o.disabled)&&(o.disabled=!1),n.isUndefined(o.multipleSelection)&&(o.multipleSelection=!1),n.isUndefined(o.visible)&&(o.visible=!0),n.isUndefined(o.cssClass)&&(o.cssClass=""),n.isUndefined(o.mode)&&(o.mode="large"),n.isUndefined(o.items)&&(o.items=[]),n.isUndefined(o.model)&&(o.model=[]),o.vm.bind()},o.vm.showSort=function(e,n){o.vm.closeElseWhere(n),o.vm[e]=!0},o.vm.closeElseWhere=function(e){o.vm.prevent(e),o.vm.namePlate=!1,o.vm.datePlate=!1,o.vm.typePlate=!1,o.vm.sizePlate=!1},o.vm.onNewFolder=function(){o.disabled||o.vm.creating||o.onNewFolder&&(o.vm.creating=!0,o.onNewFolder(o.vm.newFolder).then(function(){o.vm.newFolder="",o.newFolder=!1,o.vm.creating=!1},function(){o.vm.creating=!1}))},o.vm.onRename=function(e){o.disabled||o.vm.creating||e.name!==e.newName&&e.newName&&o.onRename&&(e.updating=!0,o.onRename(e).then(function(){e.updating=!1,e.editting=!1},function(){e.updating=!1}))},o.vm.onSort=function(e,n,t){t.stopPropagation(),t.preventDefault()},o.vm.onParent=function(){n.isFunction(o.onParent)&&o.onParent()},o.vm.getIcon=function(e){return e.folder?"af-icon-folder":"af-icon-{0} af-icon-file".format([i.getExtention(e.path).replace(".","")])},o.vm.prevent=function(e){e.stopPropagation(),e.preventDefault()},o.vm.onDoubleClick=function(e,t){o.vm.prevent(t),n.isFunction(o.onDoubleSelect)&&o.onDoubleSelect(e)},o.vm.unSelect=function(){o.newFolder=!1,o.vm.newFolder="",o.model&&o.model.length&&!o.model[0].updating&&(o.model[0].editting=!1,o.model[0].updating=!1),o.model=[],o.items.forEach(function(e){e.selected=!1}),n.isFunction(o.onSelect)&&o.onSelect(o.model)},o.vm.onClick=function(e,t){if(o.vm.prevent(t),t.ctrlKey||macKeys.ctrlKey){if(!o.multipleSelection)return;e.selected?(e.selected=!1,o.model.del(e)):(e.selected=!0,o.model.push(e))}else o.items.forEach(function(n){n.selected=e===n}),o.model=[e];n.isFunction(o.onSelect)&&o.onSelect(o.model)},o.vm.getExtention=function(e){return e.folder?t("general.folder"):i.getExtention(e.path)},o.vm.bind=function(){e.on("click",o.vm.closeElseWhere),o.$on("$destroy",function(){e.off("click",o.vm.closeElseWhere)})},o.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").factory("fileManagerService",["apiService",function(e){var n=function(e,n){return"{0}/{1}".format([e||"file-manager",n]).replace(/\/\//g,"/")};return{listDirectory:function(t,i){var o=n(t,"listDirectory");return e.post(o,{path:i})},newFolder:function(t,i,o){var a=n(t,"newFolder");return e.post(a,{path:o,name:i})},rename:function(t,i,o){var a=n(t,"rename");return e.post(a,{path:o,name:i.name,newName:i.newName})},delete:function(t,i){var o=n(t,"delete");return e.post(o,{items:i})},moveCopy:function(t,i){var o=n(t,"moveCopy");return e.post(o,i)},upload:function(t,i){var o=n(t,"upload");return e.upload(o,i)}}}]).directive("fileManager",["$q","fileManagerService","fileService","modalService","notificationService",function(t,i,a,r,l){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",toolbar:"=?",toolbarActions:"=?",toolbarActionsTitle:"<?",toolbarActionsTitleTranslate:"<?",toolbarTitle:"<?",toolbarTitleTranslate:"<?",searchTitle:"<?",searchTitleTranslate:"<?",multipleSelection:"=?",backend:"=?",uploadPattern:"=?",uploadAccept:"=?",uploadMultiple:"=?",uploadMaxSize:"=?",model:"=?"},templateUrl:"/templates/framework/directives/file-manager/template.html",link:function(d,s,c){d.vm={clipboard:null,treeToggle:!0,waiting:!1,path:"/",search:"",newFolder:!1,uploadPercent:0,uploading:!1,ribbon:void 0,tree:[],fileExplorer:[],crumbNav:[],uploadInput:null},d.vm.init=function(){n.isUndefined(d.disabled)&&(d.disabled=!1),n.isUndefined(d.visible)&&(d.visible=!0),n.isUndefined(d.cssClass)&&(d.cssClass=""),n.isUndefined(d.toolbar)&&(d.toolbar=!1),n.isUndefined(d.model)&&(d.model=[]),d.vm.bind()},d.vm.bind=function(){d.vm.uploadInput=e(o.createElement("input")),d.vm.uploadInput.attr("type","file"),d.vm.uploadInput.attr("multiple","multiple"),d.vm.uploadInput.on("change",function(e){d.$timeout(function(){d.vm.uploading=!0,d.vm.uploadPercent=0}),i.upload(d.backend,{data:{uploadedFiles:e.target.files,path:d.vm.path},onSuccess:function(e){d.$timeout(function(){d.vm.uploading=!1,d.vm.uploadPercent=0,d.vm.refresh()}),l.success("general.success")},onError:function(e){d.$timeout(function(){d.vm.uploading=!1,d.vm.uploadPercent=0}),l.error("general.error")},onProgress:function(e){d.$timeout(function(){d.vm.uploadPercent=e})}})}),d.$watchCollection("model",function(e,n){if(e||n)return e&&e.length?void d.vm.updateRibbon(e[0].folder):void d.vm.updateRibbon()}),d.vm.refresh()},d.vm.updateRibbon=function(e){d.vm.ribbon[0].enabled=!1,d.vm.ribbon[1].enabled=null!==d.vm.clipboard,d.vm.ribbon[2].enabled=!1,d.vm.ribbon[3].enabled=!1,d.vm.ribbon[4].enabled=!1,d.vm.ribbon[5].enabled=!0,d.vm.ribbon[6].enabled=!1,d.vm.ribbon[7].enabled=!0,d.vm.ribbon[8].enabled=!1,d.vm.ribbon[9].enabled=!1,d.vm.ribbon[10].enabled=!1,d.vm.ribbon[11].enabled=!1,void 0!==e&&(d.vm.ribbon[0].enabled=!0,d.vm.ribbon[1].enabled=!1,d.vm.ribbon[2].enabled=!0,d.vm.ribbon[3].enabled=!0,d.vm.ribbon[4].enabled=!0,d.vm.ribbon[10].enabled=!0,e||(d.vm.ribbon[6].enabled=!0,d.vm.ribbon[8].enabled=!0,d.vm.ribbon[9].enabled=!0,".zip"===a.getExtention(d.model[0].path)&&(d.vm.ribbon[11].enabled=!0)))},d.vm.toggleExplorer=function(e){e&&(e.stopPropagation(),e.preventDefault()),d.vm.treeToggle=!d.vm.treeToggle},d.vm.onRibbonAction=function(e){switch(d.$eval(e.key)){case"select-all":d.vm.fileExplorer.forEach(function(e){e.selected=!0});break;case"select-none":d.vm.fileExplorer.forEach(function(e){e.selected=!1});break;case"select-invert":d.vm.fileExplorer.forEach(function(e){e.selected=!e.selected});break;case"navigation-pane":d.vm.toggleExplorer();break;case"xlarge-icons":d.vm.mode="x-large";break;case"medium-icons":d.vm.mode="medium";break;case"details-icons":d.vm.mode="detailed";break;case"large-icons":d.vm.mode="large";break;case"small-icons":d.vm.mode="small";break;case"tiles-icons":d.vm.mode="tiles";break;case"copy":d.vm.onCopyCommand();break;case"paste":d.vm.onPasteCommand();break;case"cut":d.vm.onCutCommand();break;case"delete":d.vm.onDeleteCommand();break;case"rename":d.vm.onRenameCommand();break;case"new-folder":d.vm.newFolder=!0;break;case"upload":d.vm.onUploadCommand();break;case"download":d.vm.onDownloadCommand();break;case"open":d.vm.onOpenCommand();break;case"preview":d.vm.onPreviewCommand();break;case"zip":d.vm.onZipCommand();break;case"extract-all":d.vm.onExtractAllCommand();break;case"extract-seprate":d.vm.onExtractSeprateCommand()}},d.vm.onUploadCommand=function(){d.vm.uploadInput.trigger("click")},d.vm.onDownloadCommand=function(){},d.vm.onOpenCommand=function(){},d.vm.onPreviewCommand=function(){},d.vm.onZipCommand=function(){},d.vm.onExtractAllCommand=function(){},d.vm.onExtractSeprateCommand=function(){},d.vm.onCopyCommand=function(){d.model&&1===d.model.length&&(d.vm.clipboard={mode:"copy",source:d.model.pluck("path")},d.vm.ribbon[1].enabled=!0,d.model.forEach(function(e){e.selected=!1}),d.model=[])},d.vm.onPasteCommand=function(){var e={};n.extend(e,d.vm.clipboard),e.destination=d.vm.path,d.vm.clipboard=null,d.vm.ribbon[1].enabled=!1,i.moveCopy(d.backend,e).then(function(e){if(!e.data.status)return void l.error("general.failed");d.vm.refresh()})},d.vm.onCutCommand=function(){d.model&&1===d.model.length&&(d.vm.clipboard={mode:"move",source:d.model.pluck("path")},d.vm.ribbon[1].enabled=!0,d.model.forEach(function(e){e.selected=!1}),d.model=[])},d.vm.onRenameCommand=function(){d.model&&1===d.model.length&&(d.model[0].newName=d.model[0].name,d.model[0].editting=!0)},d.vm.onDeleteCommand=function(){var e=d.model.copy();r.confirm({titleTranslate:"general.confirm_delete_title",messageTranslate:"general.confirm_delete_message"}).then(function(n){n&&i.delete(d.backend,e.pluck("path")).then(function(n){if(!n.data.status)return void l.error("general.failed");e.forEach(function(e){-1!==n.data.data.indexOf(e.path)&&(d.model.del(e),d.vm.fileExplorer.del(e))})})})},d.vm.onNodeExpand=function(e){e.waiting||e.items&&e.item.length||e.folder&&(e.waiting=!0,i.listDirectory(d.backend,e.path).then(function(n){n.data.status&&(e.expanded=!0,e.items=n.data.data.content.filter(function(e){return e.folder}).map(function(e){return{title:e.name,expandable:!0,path:e.path,folder:!0}})),e.waiting=!1}))},d.vm.onNodeSelect=function(e){e.items&&e.items.length||e.folder&&(d.vm.path=e.path,d.vm.refresh())},d.vm.onCrumbFolderPicked=function(e){d.vm.path=e.path,d.vm.refresh()},d.vm.onCrumbRefresh=function(){d.vm.refresh()},d.vm.onExplorerParent=function(){2===d.vm.crumbNav.length?(d.vm.path="/",d.vm.refresh()):d.vm.crumbNav.length>2&&d.vm.onCrumbFolderPicked(d.vm.crumbNav.length-3)},d.vm.onExplorerDoubleSelect=function(e){e.folder&&(d.vm.path=e.path,d.vm.refresh())},d.vm.onExplorerSelect=function(e){d.model=e},d.vm.onExplorerNewFolder=function(e){return t(function(n,t){i.newFolder(d.backend,e,d.vm.path).then(function(e){if(!e.data.status)return l.error(e.data.error.name[0]),void t();d.vm.fileExplorer.push(e.data.data),n()})})},d.vm.onExplorerRename=function(e){return t(function(n,t){i.rename(d.backend,e,d.vm.path).then(function(i){if(!i.data.status)return l.error(i.data.error.name[0]),void t();e.path.replace(e.name,e.newName),e.name=e.newName,e.newName="",n()})})},d.vm.onAction=function(e){e.action&&e.action(e)},d.vm.refresh=function(){d.vm.waiting=!0,i.listDirectory(d.backend,d.vm.path).then(function(e){e.data.status&&(d.vm.path=e.data.data.path,d.vm.fileExplorer=e.data.data.content,d.vm.crumbNav=[],"/"===d.vm.path?d.vm.tree=e.data.data.content.filter(function(e){return e.folder}).map(function(e){return{title:e.name,expandable:!0,path:e.path,folder:!0}}):d.vm.generateCrumb()),d.vm.waiting=!1})},d.vm.generateCrumb=function(){for(var e=d.vm.path.split("/"),n=1;n<e.length;n++)d.vm.crumbNav.push({path:e.concat([]).splice(0,n+1).join("/"),title:e[n]})},d.vm.prepareUpload=function(e){},d.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").factory("filePickerService",["apiService",function(e){return function(e,n,t,i){}}]).directive("filePicker",["translateService","filePickerService",function(e,t){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",backend:"=?",backendData:"=?",backendKey:"=?",maxSize:"=?",accept:"=?",pattern:"=?",multiple:"=?",preview:"=?",onSuccess:"<?",onError:"<?",onProgress:"<?",model:"=?"},templateUrl:"/templates/framework/directives/file-picker/template.html",link:function(i,o,a){i.vm={uploading:!1,uploadPercent:0},i.vm.init=function(){n.isUndefined(i.disabled)&&(i.disabled=!1),n.isUndefined(i.multiple)&&(i.multiple=!1),n.isUndefined(i.preview)&&(i.preview=!0),n.isUndefined(i.visible)&&(i.visible=!0),n.isUndefined(i.cssClass)&&(i.cssClass=""),n.isUndefined(i.pattern)&&(i.pattern=""),n.isUndefined(i.accept)&&(i.accept=""),n.isUndefined(i.backendKey)&&(i.backendKey="$uploadedFiles"),n.isUndefined(i.model)&&(i.model=[]),n.isUndefined(i.maxSize)&&(i.maxSize="20MB"),i.vm.bind()},i.vm.onSelect=function(e){var n={};n[i.backendKey]=e,i.backend&&(i.vm.uploading=!0,i.vm.uploadPercent=0,t(i.backend,n,i.backendData,{onSuccess:function(e){i.vm.uploading=!1,i.onSuccess&&i.onSuccess(e,i.tag)},onError:function(e){i.vm.uploading=!1,i.onError&&i.onError(e,i.tag)},onProgress:function(e,n,t){i.vm.uploadPercent=e,i.onProgress&&i.onProgress(e,n,t,i.tag)}}))},i.vm.remove=function(e){i.disabled||i.model.del(e)},i.vm.onChange=function(e,n,t,o,a,r){i.model=e},i.vm.bind=function(){},i.vm.getText=function(){return i.model&&i.model.length?i.multiple?i.model.pluck("name").join(", "):i.model[0].name:e("general.noFileSelected")},i.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").factory("filePickerServerService",["apiService",function(e){var n=function(e,n){return"{0}/{1}".format([e||"file-explorer",n]).replace(/\/\//g,"/")};return{listDirectory:function(t,i){var o=n(t,"listDirectory");return e.post(o,{path:i})}}}]).directive("filePickerServer",["$document","filePickerServerService",function(e,t){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",placeHolderTranslate:"=?",placeHolder:"=?",backend:"=?",model:"=?"},templateUrl:"/templates/framework/directives/file-picker-server/template.html",link:function(i,o,a){i.vm={path:"/",plate:!1},i.vm.init=function(){n.isUndefined(i.disabled)&&(i.disabled=!1),n.isUndefined(i.visible)&&(i.visible=!0),n.isUndefined(i.cssClass)&&(i.cssClass=""),n.isUndefined(i.model)&&(i.model=""),i.vm.bind(),i.vm.refresh()},i.vm.closeElseWhere=function(e){i.$apply(function(){i.vm.plate=!1})},i.vm.prevent=function(e){e.stopPropagation(),e.preventDefault()},i.vm.refresh=function(){i.vm.waiting=!0,t.listDirectory(i.backend,i.vm.path).then(function(e){e.data.status&&(i.vm.path=e.data.data.path,i.vm.fileExplorer=e.data.data.content,"/"===i.vm.path&&(i.vm.tree=e.data.data.content.filter(function(e){return e.folder}).map(function(e){return{title:e.name,expandable:!0,path:e.path,folder:!0}}))),i.vm.waiting=!1})},i.vm.togglePlate=function(){i.disabled||(i.vm.plate=!i.vm.plate)},i.vm.bind=function(){i.$on("$destroy",function(){e.off("click",i.vm.closeElseWhere)}),e.on("click",i.vm.closeElseWhere)},i.vm.onNodeExpand=function(e){e.waiting||e.items&&e.item.length||e.folder&&(e.waiting=!0,t.listDirectory(i.backend,e.path).then(function(n){n.data.status&&(e.expanded=!0,e.items=n.data.data.content.filter(function(e){return e.folder}).map(function(e){return{title:e.name,expandable:!0,path:e.path,folder:!0}})),e.waiting=!1}))},i.vm.onNodeSelect=function(e){e.items&&e.items.length||e.folder&&(i.vm.path=e.path,i.vm.refresh())},i.vm.onExplorerParent=function(){var e=i.vm.path.split("/");e.pop(),i.vm.path=e.join("/"),i.vm.refresh()},i.vm.onExplorerDoubleSelect=function(e){e.folder&&(i.vm.path=e.path,i.vm.refresh())},i.vm.onExplorerSelect=function(e){e[0].folder||(i.model=e[0].path)},i.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").factory("formElementsService",[function(){var n=["directive","label","labelTranslate"];return{generate:function(t){var i=e('<form class="generated-form-element"></form>');t=t||{},t.$groups=t.$groups||{"column-1":{size:"col-md-12"}};var o={};return Object.keys(t.$groups).forEach(function(n){var a=e('<div class="{0}"><div class="panel panel-white"> <div class="panel-heading"><h3 class="panel-title">{{:: {1}.title|textOrTranslate:{1}.titleTranslate }}</h3></div> <div class="panel-body"></div> </div></div>'.format([t.$groups[n].size||"col-md-12","$parent.model.$groups['{0}']".format([n])||" "]));o[n]=a.find(".panel-body"),i.append(a)}),Object.keys(t).forEach(function(i,a){if("$groups"!==i){void 0===t[i].visible&&(t[i].visible=!0),void 0===t[i].disabled&&(t[i].disabled=!1);var r=e("<div class='form-group'></div>");r.attr("ng-if","$parent.model['{0}'].visible".format([i]));var l=e("<label>{{::$parent.$parent.model['{0}'].label|textOrTranslate:$parent.$parent.model['{0}'].labelTranslate}}</label>".format([i]));r.append(l);var d=e("<{0}></{0}>".format([t[i].directive]));Object.keys(t[i]).forEach(function(e){-1===n.indexOf(e)&&d.attr(e.toKebabCase(),"$parent.$parent.model['{0}']['{1}']".format([i,e]))}),r.append(d),o[t[i].group||"column-1"].append(r)}}),i}}}]).directive("formElements",["$compile","$templateCache","formElementsService",function(t,i,o){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",model:"=?",waiting:"=?"},compile:function(){var i=e('<div ng-show="visible" class="af-form-elements af-component {{::cssClass}}"></div>');return{pre:function(e,a,r){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.waiting)&&(e.waiting=!1),e.vm.bind()},e.vm.bind=function(){a.append('<div ng-show="visible" class="af-form-elements af-component {{::cssClass}}"></div>'),e.$watch("model",e.vm.build)},e.vm.build=function(){var n=i.find(".generated-form-element");n.children().size()>0&&n.children().each(function(e,n){n.scope().destroy(),n.remove()});var r=o.generate(e.model);a.find(".af-form-elements").append(r),t(r)(e.$new(!0))},e.vm.init()}}}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").factory("googleMapService",["$q",function(e){return function(){return e(function(e,n){if(i.google&&i.google.maps)return void e();var t="//maps.googleapis.com/maps/api/js?key="+i.achasoft.configuration.google.map.key;$script(t,function(){e()})})}}]).directive("googleMap",["googleMapService",function(e){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",zoom:"=?",center:"=?",mouseWheel:"=?",markers:"=?",polylines:"=?",polygons:"=?",markCenter:"=?",model:"=?"},templateUrl:"/templates/framework/directives/google-map/template.html",link:function(t,i,o){t.vm={waiting:!0,markers:[],polylines:[],polygons:[],canvas:i.find(".vw-google-map")[0]},t.vm.init=function(){n.isUndefined(t.disabled)&&(t.disabled=!1),n.isUndefined(t.visible)&&(t.visible=!0),n.isUndefined(t.cssClass)&&(t.cssClass=""),n.isUndefined(t.zoom)&&(t.zoom=16),n.isUndefined(t.mouseWheel)&&(t.mouseWheel=!1),n.isUndefined(t.markCenter)&&(t.markCenter=!1),n.isUndefined(t.markers)&&(t.markers=[]), | ||
n.isUndefined(t.center)&&(t.center={lat:51.5,lng:-.2}),n.isUndefined(t.polylines)&&(t.polylines=[]),n.isUndefined(t.polygons)&&(t.polygons=[]),n.isUndefined(t.model)&&(t.model=[]),t.markCenter&&t.markers.push(t.center),t.vm.bind(),e().then(function(){t.vm.waiting=!1,t.vm.create()})},t.vm.createPolyline=function(e){var n=new google.maps.Polyline({path:e.path,geodesic:e.geodesic,strokeColor:e.strokeColor||"#FF0000",strokeOpacity:e.strokeOpacity||1,strokeWeight:e.strokeWeight||2});return n.setMap(t.vm.instance),n},t.vm.createPolygon=function(e){var n=new google.maps.Polygon({paths:e.path,strokeColor:e.strokeColor||"#0000FF",strokeOpacity:e.strokeOpacity||1,strokeWeight:e.strokeWeight||2,fillColor:e.fillColor||"#FF0000",fillOpacity:e.fillOpacity||.35});return n.setMap(t.vm.instance),n},t.vm.createMarker=function(e){return new google.maps.Marker({draggable:!1,position:e?{lat:e.lat,lng:e.lng}:void 0,map:t.vm.instance,title:e?e.title||" ":" "})},t.vm.pushMarker=function(e,n){var i;i=n?e:t.vm.createMarker(e),t.vm.markers.push(i)},t.vm.pushPolyline=function(e,n){var i;i=n?e:t.vm.createPolyline(e),t.vm.polylines.push(i)},t.vm.pushPolygon=function(e,n){var i;i=n?e:t.vm.createPolygon(e),t.vm.polygons.push(i)},t.vm.clearMarkers=function(){(t.vm.markers||[]).forEach(function(e){e.setMap(null)}),(t.vm.markers||[]).length=0},t.vm.clearPolylines=function(){(t.vm.polylines||[]).forEach(function(e){e.setMap(null)}),(t.vm.polylines||[]).length=0},t.vm.clearPolygons=function(){(t.vm.polygons||[]).forEach(function(e){e.setMap(null)}),(t.vm.polygons||[]).length=0},t.vm.create=function(){var e={center:new google.maps.LatLng(t.center.lat,t.center.lng),zoom:t.zoom,scrollwheel:t.mouseWheel};t.vm.instance=new google.maps.Map(t.vm.canvas,e),google.maps.event.addListener(t.vm.instance,"click",function(e){var n=t.vm.createMarker(null);n.setPosition(e.latLng),t.vm.pushMarker(n,!0)})},t.vm.bind=function(){t.$watch("markers",function(e){t.vm.instance&&(t.vm.clearMarkers(),(e||[]).forEach(function(e){t.vm.pushMarker(e)}))}),t.$watch("polylines",function(e){t.vm.instance&&(t.vm.clearPolylines(),(e||[]).forEach(function(e){t.vm.pushPolyline(e)}))}),t.$watch("polygons",function(e){t.vm.instance&&(t.vm.clearPolygons(),(e||[]).forEach(function(e){t.vm.pushPolygon(e)}))})},t.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("gridView",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",checkboxColumn:"=?",rows:"=?",columns:"=?"},templateUrl:"/templates/framework/directives/grid-view/template.html",link:function(e,t,i){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.readonly)&&(e.readonly=!1),e.vm.bind()},e.vm.bind=function(){},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").factory("modalGeneratorService",["$q","$compile","$rootScope","$templateCache","commonService",function(n,t,i,o,a){var r=o.get("/templates/framework/directives/modal/template.html"),l=e(r);return function(r){return n(function(n,d){if(!r.template&&!r.templateUrl)return void d("no template provided!");var s=a.uuid(),c=l.clone();r.templateUrl&&(r.template=o.get(r.templateUrl)),r.controller&&c.find(".modal-body").attr("ng-controller",r.controller),c.find(".modal-body").append(r.template);var m=i.$new(!0),u=function(){var t=e("#"+s);t.detach(),m.$destroy(),t.remove(),n(!1)},v=function(t){var i=e("#"+s);i.detach(),n(t,m),m.$destroy(),i.remove()};m.title=r.title,m.titleTranslate=r.titleTranslate,m.message=r.message,m.messageTranslate=r.messageTranslate,m.uuid=s,m.data=r.data,m.vm={},m.vm.dismiss=function(){if(!r.onDismiss)return void u();var e=r.onDismiss(m);!0===e?u():e.then&&e.then(function(e){u()},function(){})},m.vm.accept=function(){if(!r.onAccept)return void v(!0);var e=r.onAccept(m);!0===e?v(!0):e.then&&(m.vm.waiting=!0,e.then(function(e){v(e),m.vm.waiting=!1},function(){m.vm.waiting=!1}))},e("body").append(c),t(c)(m)})}}]).factory("modalService",["modalGeneratorService",function(e){return{confirm:function(t){var i={title:void 0,titleTranslate:"general.default_confirm_title",message:void 0,messageTranslate:"general.default_confirm_message",template:void 0,templateUrl:"/templates/framework/directives/modal/confirm.html",controller:void 0,icon:void 0,data:void 0,onAccept:void 0,onDismiss:void 0};return n.extend(i,t),e(i)},dialog:function(t){var i={title:" ",titleTranslate:void 0,template:void 0,templateUrl:void 0,controller:void 0,icon:void 0,data:void 0,onAccept:void 0,onDismiss:void 0};return n.extend(i,t),e(i)}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("multiSelect",["$document",function(e){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",textField:"=?",valueField:"=?",placeHolderTranslate:"=?",placeHolder:"=?",items:"=?",model:"=?"},templateUrl:"/templates/framework/directives/multi-select/template.html",link:function(t,i,o){t.vm={plate:!1},t.vm.init=function(){n.isUndefined(t.disabled)&&(t.disabled=!1),n.isUndefined(t.visible)&&(t.visible=!0),n.isUndefined(t.cssClass)&&(t.cssClass=""),n.isUndefined(t.textField)&&(t.textField="text"),n.isUndefined(t.valueField)&&(t.valueField="value"),n.isUndefined(t.model)&&(t.model=[]),n.isUndefined(t.items)&&(t.items=[]),n.isUndefined(t.readonly)&&(t.readonly=!1),t.vm.bind()},t.vm.closeElseWhere=function(e){t.$apply(function(){t.vm.plate=!1})},t.vm.prevent=function(e){e.stopPropagation(),e.preventDefault()},t.vm.onAdd=function(e,n){t.disabled||t.model.add(n)},t.vm.onDelete=function(e,n){e.preventDefault(),e.stopPropagation(),t.disabled||t.model.del(n)},t.vm.togglePlate=function(){t.disabled||t.readonly||(t.vm.plate=!t.vm.plate)},t.vm.bind=function(){t.$on("$destroy",function(){e.off("click",t.vm.closeElseWhere)}),e.on("click",t.vm.closeElseWhere)},t.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("numbox",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",required:"=?",triggerOnInit:"=?",readonly:"=?",model:"=?"},templateUrl:"/templates/framework/directives/numbox/template.html",link:function(e,t,i){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.required)&&(e.required=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),e.required&&n.isUndefined(e.model)&&(e.model=0),n.isUndefined(e.readonly)&&(e.readonly=!1),e.vm.bind()},e.vm.increase=function(){e.disabled||e.readonly||(e.model=parseInt(e.model||0)+1)},e.vm.decrease=function(){e.disabled||e.readonly||(e.model=parseInt(e.model||0)-1)},e.vm.bind=function(){e.$watch("model",function(t,i){(e.vm.initialized||(e.vm.initialized=!0,e.triggerOnInit))&&e.vm.initialized&&n.isFunction(e.onChange)&&e.onChange(e.model,e.tag)})},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("password",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",placeHolder:"=?",placeHolderTranslate:"=?",prependIcon:"=?",appendIcon:"=?",label:"=?",labelTranslate:"=?",model:"=?",onChanged:"<?",readonly:"=?"},templateUrl:"/templates/framework/directives/password/template.html",link:function(e,t,i){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.readonly)&&(e.readonly=!1),e.vm.bind()},e.vm.bind=function(){e.$watch("model",function(t,i){if(void 0===t||null===t)return void(e.model="");n.isFunction(e.onChanged)&&e.onChanged(e.model,e.tag,i)})},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("progressbar",[function(){return{restrict:"E",replace:!0,scope:{disabled:"=?",visible:"=?",cssClass:"=?",model:"=?"},templateUrl:"/templates/framework/directives/progressbar/template.html",link:function(e,t,i){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.model)&&(e.model=0),e.vm.bind()},e.vm.bind=function(){},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("radio",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",onChange:"<?",disabled:"=?",visible:"=?",cssClass:"=?",textField:"=?",valueField:"=?",triggerOnInit:"=?",items:"=?",inline:"=?",model:"=?"},templateUrl:"/templates/framework/directives/radio/template.html",link:function(e,t,i){e.vm={initialized:!1},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.inline)&&(e.inline=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.triggerOnInit)&&(e.triggerOnInit=!1),n.isUndefined(e.items)&&(e.items=[]),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.textField)&&(e.textField="text"),n.isUndefined(e.valueField)&&(e.valueField="value"),n.isUndefined(e.readonly)&&(e.readonly=!1),e.vm.bind()},e.vm.onPick=function(n){e.disabled||(e.model=n[e.valueField])},e.vm.bind=function(){e.$watch("model",function(t,i){(e.vm.initialized||(e.vm.initialized=!0,e.triggerOnInit))&&e.vm.initialized&&n.isFunction(e.onChange)&&e.onChange(e.model,e.tag,e.items)})},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").factory("ribbonService",[function(){var n=function(e,n,t){return e.hasAttribute(n)?e.getAttribute(n):t},t=function(t){var i=[];return e(t).find("button").each(function(t,o){var a={title:n(o,"title",""),titleTranslate:n(o,"title-translate",null),icon:n(o,"icon",null),inline:n(o,"inline",!1),toggle:n(o,"toggle",!1),enabled:n(o,"enabled",!0),buttons:[],key:n(o,"key","")};e(o).find("sub-button").each(function(e,t){var i={title:n(t,"title",""),titleTranslate:n(t,"title-translate",null),icon:n(t,"icon",null),enabled:n(o,"enabled",!0)};a.buttons.push(i)}),i.push(a)}),i};return{parse:function(i){var o=[],a=[];return e(i).each(function(i,r){var l={title:n(r,"title",""),titleTranslate:n(r,"title-translate",null),icon:n(r,"icon",null),sections:[]};e(r).find("section").each(function(i,a){var r={title:n(a,"title",""),titleTranslate:n(a,"title-translate",null),name:n(a,"name",""),columns:[],buttons:[]},d=e(a).find("column");d.size()>0?d.each(function(e,n){var i=t(n);o.addRange(i),r.columns.push({buttons:i})}):(r.buttons=t(a),o.addRange(r.buttons)),l.sections.push(r)}),a.push(l)}),{steps:a,buttons:o}}}}]).directive("ribbon",["$templateCache","$compile","ribbonService","cultureService",function(o,a,r,l){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",onAction:"=?",buttons:"=?",model:"=?"},compile:function(d){var s=o.get("/templates/framework/directives/ribbon/template.html"),c=d.html();return d.empty(),{pre:function(o,d,m){o.vm={selectedStep:null},o.vm.init=function(){if(n.isUndefined(o.disabled)&&(o.disabled=!1),n.isUndefined(o.visible)&&(o.visible=!0),n.isUndefined(o.cssClass)&&(o.cssClass=""),n.isUndefined(o.buttons)&&(o.buttons=[]),n.isUndefined(o.steps)){var e=r.parse(c);o.steps=e.steps,o.buttons=e.buttons,o.steps.length&&o.vm.onPick(o.steps[0])}o.vm.compile(),o.vm.bind()},o.vm.getButtonClass=function(e){var n=["button"];o.$eval(e.enabled.toString())||n.push("disabled"),o.$eval(e.inline)&&n.push("inline"),o.$eval(e.toggle)&&n.push("toggle-button"),e.toggleState&&n.push("active");var t=o.$eval(e.cssClass);return t&&n.push(t),n.join(" ")},o.vm.onExpandButton=function(e,n){o.$eval(e.enabled.toString())&&(e.expand=!e.expand)},o.vm.onPick=function(e){o.disabled||(o.vm.selectedStep=e,o.vm.calculateWidth())},o.vm.calculateWidth=t.debounce(function(){var n=0;d.find(".section").each(function(t,i){n+=e(i).width(),n+=10});var t=d.find(".tabs-content");t.width()>=n?(t.removeClass("slide"),o.vm.currentPosition=0,d.find(".tab-content").css({left:o.vm.currentPosition,width:"auto"})):(t.addClass("slide"),o.vm.currentPosition=25,d.find(".tab-content").css({width:n,left:o.vm.currentPosition})),o.vm.available=t.width(),o.vm.totalWidth=n,o.vm.gap=o.vm.totalWidth-o.vm.available},300),o.vm.scrollLeft=function(){o.vm.currentPosition-100>=0?o.vm.currentPosition-=100:o.vm.currentPosition=0;var e={};l.rtl?e.left=o.vm.currentPosition:e.left=-o.vm.currentPosition,d.find(".tab-content").css(e)},o.vm.scrollRight=function(){o.vm.currentPosition+100<=o.vm.gap?o.vm.currentPosition+=100:o.vm.currentPosition=o.vm.gap;var e={};l.rtl?e.left=o.vm.currentPosition:e.left=-o.vm.currentPosition,d.find(".tab-content").css(e)},o.vm.compile=function(){var n=e(s);d.append(n),a(n)(o)},o.vm.bind=function(){o.$on("$destroy",function(){e(i).off("resize",o.vm.calculateWidth)}),o.$watch("steps",function(){o.vm.calculateWidth()}),e(i).on("resize",o.vm.calculateWidth)},o.vm.onAction=function(e){n.isFunction(o.onAction)&&o.onAction(e)},o.vm.init()}}}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("slider",["cultureService",function(e){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",step:"=?",min:"=?",max:"=?",from:"=?",to:"=?",dual:"=?",model:"=?"},templateUrl:"/templates/framework/directives/slider/template.html",link:function(t,i,o){t.vm={instance:null},t.vm.init=function(){n.isUndefined(t.disabled)&&(t.disabled=!1),n.isUndefined(t.visible)&&(t.visible=!0),n.isUndefined(t.cssClass)&&(t.cssClass=""),n.isUndefined(t.min)&&(t.min=0),n.isUndefined(t.max)&&(t.max=100),n.isUndefined(t.step)&&(t.step=10),n.isUndefined(t.model)&&(t.model=0),n.isUndefined(t.dual)&&(t.dual=!1),t.vm.bind()},t.vm.update=function(e){!t.disabled&&t.vm.instance&&(t.min=e.min,t.max=e.max,t.from=e.from,t.to=e.to,t.model=e.from)},t.vm.updateBack=function(e){!t.disabled&&t.vm.instance&&t.vm.instance.update(e)},t.vm.bind=function(){i.find("input").ionRangeSlider({min:t.min,max:t.max,from:t.from||t.model,to:t.dual?t.to:void 0,type:t.dual?"double":"single",onStart:t.vm.update,onChange:t.vm.update,step:t.step,disable:t.disabled,prettify:function(n){if(!e.rtl)return n;var i=(t.min,t.max),o=n;return t.min<0?(0,i=t.max-t.min,o=n-t.min,(o=i-o)+t.min):n=t.max-n}}),t.$watch("disabled",function(e){t.vm.updateBack({disable:e})}),t.vm.instance=i.find("input").data("ionRangeSlider"),t.$on("$destroy",function(){t.vm.instance.destroy()})},t.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("switch",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",model:"=?"},templateUrl:"/templates/framework/directives/switch/template.html",link:function(e,t,i){e.vm={initialized:!1},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.readonly)&&(e.readonly=!1),e.vm.bind()},e.vm.toggle=function(n){n.stopPropagation(),n.preventDefault(),e.disabled||(e.model=!e.model)},e.vm.bind=function(){e.$watch("model",function(t,i){(e.vm.initialized||(e.vm.initialized=!0,e.triggerOnInit))&&e.vm.initialized&&n.isFunction(e.onChange)&&e.onChange(e.model,e.tag)})},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").factory("tabsService",function(){var n=function(e,n,t){return e.hasAttribute(n)?e.getAttribute(n):t};return{parse:function(t){var i=[];return e(t).each(function(e,t){i.push({disabled:n(t,"disabled",!1),cssClass:n(t,"css-class",""),title:n(t,"title",""),titleTranslate:n(t,"title-translate",null),icon:n(t,"icon",null),onEnter:n(t,"on-enter",null),onEnterValidate:n(t,"on-enter-validate",null),onExit:n(t,"on-exit",null),onExitValidate:n(t,"on-exit-validate",null),content:t.innerHTML})}),i}}}).directive("tabs",["$compile","$templateCache","tabsService",function(t,i,o){return{restrict:"E",replace:!0,scope:{disabled:"=?",visible:"=?",cssClass:"=?",keepScope:"=?",position:"=?",onChanged:"<?",onEnter:"<?",onExit:"<?",triggerPick:"=?",preventPick:"=?",steps:"=?",model:"=?"},compile:function(a){var r=i.get("/templates/framework/directives/tabs/template.html"),l=a.html();return a.empty(),{pre:function(i,a,d){i.vm={},i.vm.init=function(){n.isUndefined(i.disabled)&&(i.disabled=!1),n.isUndefined(i.keepScope)&&(i.keepScope=!1),n.isUndefined(i.preventPick)&&(i.preventPick=!1),n.isUndefined(i.visible)&&(i.visible=!0),n.isUndefined(i.cssClass)&&(i.cssClass=""),n.isUndefined(i.position)&&(i.position="top"),n.isUndefined(i.steps)&&(i.steps=o.parse(l)),n.isUndefined(i.model)&&i.steps.length&&i.vm.onPick(i.steps[0]),i.vm.compile(),i.vm.bind()},i.vm.onExitValidate=function(){var e=i.$parent.$eval(i.model.onExitValidate);return!n.isFunction(e)||e(i.model)},i.vm.onEnterValidate=function(e){var t=!0,o=i.$parent.$eval(e.onEnterValidate);n.isFunction(o)&&(t=o(e)),!0===t?i.vm.setModel(e):t&&t.then&&t.then(function(){i.vm.setModel(e)},function(){})},i.vm.setModel=function(e){i.model=e},i.vm.prepareForPick=function(e,n){n.stopPropagation(),n.preventDefault(),i.preventPick||i.vm.onPick(e)},i.vm.onPick=i.triggerPick=function(e){if(!i.disabled&&!e.disabled){if(!i.model)return void i.vm.setModel(e);var n=i.vm.onExitValidate();!0===n?i.vm.onEnterValidate(e):n&&n.then&&n.then(function(){i.vm.onEnterValidate(e)},function(){})}},i.vm.bind=function(){i.$watch("model",function(e,t){if(e){if(t){var o=i.$parent.$eval(t.onExit);n.isFunction(o)&&o(t,e),n.isFunction(i.onExit)&&i.onExit(t,e)}var a=i.$parent.$eval(e.onEnter);n.isFunction(a)&&a(e),n.isFunction(i.onEnter)&&i.onEnter(e),n.isFunction(i.onChanged)&&i.onChanged(e)}}),i.$on("$destroy",function(){i.triggerPick=null})},i.vm.compile=function(){var n=e(r);a.append(n),t(n)(i)},i.vm.init()}}}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("tags",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",model:"=?"},templateUrl:"/templates/framework/directives/tags/template.html",link:function(e,t,i){e.vm={query:""},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.model)&&(e.model=[]),e.vm.bind()},e.vm.onAdd=function(){!e.disabled&&e.vm.query&&-1===e.model.indexOf(e.vm.query)&&(e.model.push(e.vm.query),e.vm.query="")},e.vm.onRemove=function(n){e.disabled||e.model.del(n)},e.vm.bind=function(){},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("textArea",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",placeHolder:"=?",placeHolderTranslate:"=?",model:"=?",resize:"=?",rows:"=?",onChanged:"<?",readonly:"=?"},templateUrl:"/templates/framework/directives/text-area/template.html",link:function(e,t,i){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.resize)&&(e.resize="none"),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.rows)&&(e.rows=5),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.readonly)&&(e.readonly=!1),e.vm.bind()},e.vm.bind=function(){e.$watch("model",function(t,i){if(void 0===t||null===t)return void(e.model="");n.isFunction(e.onChanged)&&e.onChanged(e.model,e.tag,i)})},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("textbox",[function(){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",placeHolder:"=?",placeHolderTranslate:"=?",prependIcon:"=?",appendIcon:"=?",label:"=?",labelTranslate:"=?",model:"=?",onChanged:"<?",readonly:"=?"},templateUrl:"/templates/framework/directives/textbox/template.html",link:function(e,t,i){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.readonly)&&(e.readonly=!1),e.vm.bind()},e.vm.bind=function(){e.$watch("model",function(t,i){if(void 0===t||null===t)return void(e.model="");n.isFunction(e.onChanged)&&e.onChanged(e.model,e.tag,i)})},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("tree",["recursion-helper","commonService",function(e,t){return{restrict:"E",replace:!0,scope:{tag:"<?",uuid:"=?",disabled:"=?",visible:"=?",cssClass:"=?",onDemand:"=?",items:"=?",model:"=?",selectedNode:"=?",onNodeSelect:"=?",onNodeExpand:"=?"},templateUrl:"/templates/framework/directives/tree/template.html",link:function(e,i,o){e.vm={},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.items)&&(e.items=[]),n.isUndefined(e.uuid)&&(e.uuid=t.uuid()),e.vm.bind()},e.vm.onNodeExpand=function(t){e.disabled||t.disabled||t.waiting||n.isFunction(e.onNodeExpand)&&e.onNodeExpand(t)},e.vm.onNodeSelect=function(t){e.disabled||t.disabled||t.waiting||(e.selectedNode&&(e.selectedNode.selected=!1,e.selectedNode=null),e.selectedNode=t,e.selectedNode.selected=!0,t.items&&t.items.length&&(t.expanded=!t.expanded),n.isFunction(e.onNodeSelect)&&e.onNodeSelect(t))},e.vm.bind=function(){e.$on(e.uuid,function(n,t){switch(t.type){case"node-select":e.vm.onNodeSelect(t.value);break;case"node-expand":e.vm.onNodeExpand(t.value);break;default:console.log("Unknown event type : ",t.type)}})},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("treeContainer",["$rootScope","cultureService","recursion-helper",function(e,t,i){return{restrict:"E",replace:!0,scope:{uuid:"=",isRoot:"=",parent:"=",items:"=?"},templateUrl:"/templates/framework/directives/tree/tree-container.html",compile:function(o){return i.compile(o,function(i,o,a){i.vm={},i.vm.init=function(){n.isUndefined(i.disabled)&&(i.disabled=!1),n.isUndefined(i.visible)&&(i.visible=!0),n.isUndefined(i.cssClass)&&(i.cssClass=""),n.isUndefined(i.items)&&(i.items=[]),i.vm.bind()},i.vm.getNodeClass=function(e){return e.icon?e.icon:e.items&&e.items.length||e.expandable?"af-icon-folder":"af-icon-file"},i.vm.getNodeIcon=function(e){var n;return e.expanded?n="af-icon-chevron_down":(n=t.rtl?"af-icon-chevron_left":"af-icon-chevron_right",e.selected&&(n+="_hover")),n},i.vm.onPick=function(n,t){t.stopPropagation(),t.preventDefault(),e.$broadcast(i.uuid,{type:"node-select",value:n})},i.vm.onExpand=function(n,t){t.stopPropagation(),t.preventDefault(),e.$broadcast(i.uuid,{type:"node-expand",value:n})},i.vm.bind=function(){},i.vm.init()})}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("validation-messages",[function(){return{restrict:"E",replace:!0,scope:{model:"=?"},templateUrl:"/templates/framework/directives/validation-messages/template.html",link:function(e,t,i){e.vm={},e.vm.init=function(){n.isUndefined(e.model)&&(e.model=[])},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").directive("waiting",[function(){return{restrict:"E",replace:!0,templateUrl:"/templates/framework/directives/waiting/template.html"}}])}(jQuery,angular,_,window,document),function(e,n,t,i,o,a){"use strict";n.module("frontend.directives").run(["$rootScope",function(e){Object.defineProperty(e,"$WizardContext",{get:function(){return this.$parent}})}]).directive("wizard",["$compile","$templateCache",function(t,i){return{restrict:"E",replace:!0,scope:{tag:"<?",disabled:"=?",visible:"=?",cssClass:"=?",nextText:"<?",nextTextTranslate:"=?",backText:"<?",backTextTranslate:"=?",keepScope:"=?",position:"=?",onChanged:"<?",onEnter:"<?",onExit:"<?",steps:"=?",model:"=?"},compile:function(o){var a=o.html();o.empty();var r=i.get("/templates/framework/directives/wizard/template.html"),l=e(r);return l.find("tabs").html(a),{pre:function(e,i,o){e.vm={currentIndex:0},e.vm.onNext=function(){var n=e.steps.indexOf(e.model),t=n+1;t!==e.steps.length&&e.vm.triggerPick&&e.vm.triggerPick(e.steps[t])},e.vm.onBack=function(){var n=e.steps.indexOf(e.model),t=n-1;-1!==t&&e.vm.triggerPick&&e.vm.triggerPick(e.steps[t])},e.vm.init=function(){n.isUndefined(e.disabled)&&(e.disabled=!1),n.isUndefined(e.visible)&&(e.visible=!0),n.isUndefined(e.cssClass)&&(e.cssClass=""),n.isUndefined(e.nextTextTranslate)&&(e.nextTextTranslate="general.next"),n.isUndefined(e.backTextTranslate)&&(e.backTextTranslate="general.previous"),e.vm.compile(),e.vm.bind()},e.vm.compile=function(){i.append(l),t(l)(e)},e.vm.bind=function(){Object.defineProperty(e.vm,"nextDisabled",{get:function(){return e.vm.currentIndex===e.steps.length-1}}),Object.defineProperty(e.vm,"backDisabled",{get:function(){return 0===e.vm.currentIndex}}),e.$watch("model",function(t,i){n.isUndefined(t)||(e.vm.currentIndex=e.steps.indexOf(t))})},e.vm.init()}}}}}])}(jQuery,angular,_,window,document); |
@@ -12,3 +12,6 @@ (function ($, angular, underscore, window, document, undefined) { | ||
angular.module('frontend.layouts', []); | ||
angular.module('frontend.services', ['frontend.library']); | ||
angular.module('frontend.services', [ | ||
'frontend.library', | ||
'ngFileUpload' | ||
]); | ||
angular.module('frontend.filters', ['frontend.library']); | ||
@@ -49,10 +52,126 @@ angular.module('frontend.directives', [ | ||
}; | ||
Array.prototype.partition = function (length) { | ||
var result = []; | ||
for (var i = 0; i < this.length; i++) { | ||
if (i % length === 0) | ||
result.push([]); | ||
result[result.length - 1].push(this[i]); | ||
} | ||
return result; | ||
}; | ||
Array.prototype.pluck = function (field) { | ||
return this.map(function (item) { | ||
return item[field]; | ||
}); | ||
}; | ||
}(window)); | ||
(function (window, undefined) { | ||
'use strict'; | ||
Date.isDate = function (value) { | ||
var type = toString.call(value) === '[object Date]'; | ||
if (type) | ||
return true; | ||
if (typeof value === 'string') { | ||
var parsedDate = Date.parse(value); | ||
return isNaN(value) && !isNaN(parsedDate); | ||
} | ||
return false; | ||
}; | ||
}(window)); | ||
(function (window, undefined) { | ||
'use strict'; | ||
var GregorianCalendar = function () { | ||
}(window)); | ||
(function (window, undefined) { | ||
'use strict'; | ||
var GregorianCalendar = function (dateOrYear, month, day) { | ||
if (!dateOrYear) { | ||
dateOrYear = new Date(); | ||
} | ||
if (Date.isDate(dateOrYear)) { | ||
var calc = new Date(dateOrYear); | ||
this.year = calc.getFullYear(); | ||
this.month = calc.getMonth() + 1; | ||
this.day = calc.getDate(); | ||
return; | ||
} | ||
this.year = dateOrYear; | ||
this.month = month; | ||
this.day = day; | ||
}; | ||
GregorianCalendar.getMonthStartWeekDate = function (year, month) { | ||
return new Date(year, month - 1, 1).getDay() + GregorianCalendar.weekGap; | ||
}; | ||
GregorianCalendar.prototype.getMonthStartWeekDate = function () { | ||
return GregorianCalendar.getMonthStartWeekDate(this.year, this.month - 1); | ||
}; | ||
GregorianCalendar.prototype.toDate = function () { | ||
return new Date(this.year, this.month - 1, this.day); | ||
}; | ||
GregorianCalendar.parsePersian = function () { | ||
return PersianCalendar.toGregorian.apply(null, arguments); | ||
}; | ||
GregorianCalendar.parseHijri = function () { | ||
return HijriCalendar.toGregorian.apply(null, arguments); | ||
}; | ||
GregorianCalendar.weekGap = 0; | ||
GregorianCalendar.daysInMonth = [ | ||
31, | ||
28, | ||
31, | ||
30, | ||
31, | ||
30, | ||
31, | ||
31, | ||
30, | ||
31, | ||
30, | ||
31 | ||
]; | ||
GregorianCalendar.dayNames = [ | ||
'Monday', | ||
'Tuesday', | ||
'Wednesday', | ||
'Thursday', | ||
'Friday', | ||
'Saturday', | ||
'Sunday' | ||
]; | ||
GregorianCalendar.dayNamesShort = [ | ||
'Mo', | ||
'Tu', | ||
'We', | ||
'Th', | ||
'Fr', | ||
'Sa', | ||
'Su' | ||
]; | ||
GregorianCalendar.monthNames = [ | ||
'January', | ||
'February', | ||
'March', | ||
'April', | ||
'May', | ||
'June', | ||
'July', | ||
'August', | ||
'September', | ||
'October', | ||
'November', | ||
'December' | ||
]; | ||
GregorianCalendar.monthNamesShort = [ | ||
'Jan', | ||
'Feb', | ||
'Mar', | ||
'Apr', | ||
'May', | ||
'Jun', | ||
'Jul', | ||
'Aug', | ||
'Sep', | ||
'Oct', | ||
'Nov', | ||
'Dec' | ||
]; | ||
window.GregorianCalendar = GregorianCalendar; | ||
@@ -62,4 +181,170 @@ }(window)); | ||
'use strict'; | ||
var HijriCalendar = function () { | ||
function intPart(floatNum) { | ||
if (floatNum < -1e-7) { | ||
return Math.ceil(floatNum - 1e-7); | ||
} | ||
return Math.floor(floatNum + 1e-7); | ||
} | ||
var delta = 1; | ||
function gregorian_to_hijri(year, month, day) { | ||
var d = parseInt(day); | ||
var m = parseInt(month); | ||
var y = parseInt(year); | ||
var jd, l, jd1, n, j, delta = 1; | ||
if (y > 1582 || y === 1582 && m > 10 || y === 1582 && m === 10 && d > 14) { | ||
//added delta=1 on jd to comply isna rulling 2007 | ||
jd = intPart(1461 * (y + 4800 + intPart((m - 14) / 12)) / 4) + intPart(367 * (m - 2 - 12 * intPart((m - 14) / 12)) / 12) - intPart(3 * intPart((y + 4900 + intPart((m - 14) / 12)) / 100) / 4) + d - 32075 + delta; | ||
} else { | ||
//added +1 on jd to comply isna rulling | ||
jd = 367 * y - intPart(7 * (y + 5001 + intPart((m - 9) / 7)) / 4) + intPart(275 * m / 9) + d + 1729777 + delta; | ||
} | ||
//added -1 on jd1 to comply isna rulling | ||
jd1 = jd - delta; | ||
l = jd - 1948440 + 10632; | ||
n = intPart((l - 1) / 10631); | ||
l = l - 10631 * n + 354; | ||
j = intPart((10985 - l) / 5316) * intPart(50 * l / 17719) + intPart(l / 5670) * intPart(43 * l / 15238); | ||
l = l - intPart((30 - j) / 15) * intPart(17719 * j / 50) - intPart(j / 16) * intPart(15238 * j / 43) + 29; | ||
m = intPart(24 * l / 709); | ||
d = l - intPart(709 * m / 24); | ||
y = 30 * n + j - 30; | ||
return { | ||
day: d, | ||
month: m, | ||
year: y | ||
}; | ||
} | ||
function hijri_to_gregorian(year, month, day) { | ||
var d = parseInt(day); | ||
var m = parseInt(month); | ||
var y = parseInt(year); | ||
//added - delta=1 on jd to comply isna rulling | ||
var jd = intPart((11 * y + 3) / 30) + 354 * y + 30 * m - intPart((m - 1) / 2) + d + 1948440 - 385 - delta; | ||
var l, n, i, j, k; | ||
if (jd > 2299160) { | ||
l = jd + 68569; | ||
n = intPart(4 * l / 146097); | ||
l = l - intPart((146097 * n + 3) / 4); | ||
i = intPart(4000 * (l + 1) / 1461001); | ||
l = l - intPart(1461 * i / 4) + 31; | ||
j = intPart(80 * l / 2447); | ||
d = l - intPart(2447 * j / 80); | ||
l = intPart(j / 11); | ||
m = j + 2 - 12 * l; | ||
y = 100 * (n - 49) + i + l; | ||
} else { | ||
j = jd + 1402; | ||
k = intPart((j - 1) / 1461); | ||
l = j - 1461 * k; | ||
n = intPart((l - 1) / 365) - intPart(l / 1461); | ||
i = l - 365 * n + 30; | ||
j = intPart(80 * i / 2447); | ||
d = i - intPart(2447 * j / 80); | ||
i = intPart(j / 11); | ||
m = j + 2 - 12 * i; | ||
y = 4 * k + n + i - 4716; | ||
} | ||
return { | ||
day: d, | ||
month: m, | ||
year: y | ||
}; | ||
} | ||
var fromDate = function (date) { | ||
date = new Date(date); | ||
return gregorian_to_hijri(date.getFullYear(), date.getMonth() + 1, date.getDate()); | ||
}; | ||
var toDate = function (year, month, day) { | ||
var res = hijri_to_gregorian(year, month, day); | ||
return new Date(res.year, res.month - 1, res.day); | ||
}; | ||
var HijriCalendar = function (dateOrYear, month, day) { | ||
if (!dateOrYear) { | ||
dateOrYear = new Date(); | ||
} | ||
if (Date.isDate(dateOrYear)) { | ||
var calc = fromDate(dateOrYear); | ||
this.year = calc.year; | ||
this.month = calc.month; | ||
this.day = calc.day; | ||
return; | ||
} | ||
this.year = dateOrYear; | ||
this.month = month; | ||
this.day = day; | ||
}; | ||
HijriCalendar.prototype.getMonthStartWeekDate = function () { | ||
return HijriCalendar.getMonthStartWeekDate(this.year, this.month); | ||
}; | ||
HijriCalendar.prototype.toDate = function () { | ||
return toDate(this.year, this.month, this.day); | ||
}; | ||
HijriCalendar.toGregorian = function (year, month, day) { | ||
var date = toDate(year, month, day); | ||
return new GregorianCalendar(date); | ||
}; | ||
HijriCalendar.getMonthStartWeekDate = function (year, month) { | ||
return toDate(year, month, 1).getDay() + HijriCalendar.weekGap; | ||
}; | ||
HijriCalendar.weekGap = 0; | ||
HijriCalendar.daysInMonth = [ | ||
30, | ||
29, | ||
30, | ||
29, | ||
30, | ||
29, | ||
30, | ||
29, | ||
30, | ||
29, | ||
30, | ||
29 | ||
]; | ||
HijriCalendar.dayNames = [ | ||
'الإثنين', | ||
'الثلاثاء', | ||
'الأربعاء', | ||
'الخميس', | ||
'الجمعة', | ||
'السبت', | ||
'الأحد' | ||
]; | ||
HijriCalendar.dayNamesShort = [ | ||
'إث', | ||
'ثل', | ||
'أر', | ||
'خم', | ||
'جم', | ||
'سب', | ||
'أح' | ||
]; | ||
HijriCalendar.monthNames = [ | ||
'مُحَرَّم', | ||
'صَفَر', | ||
'رَبيع الأوّل', | ||
'رَبيع الثاني', | ||
'جُمادى الأولى', | ||
'جُمادى الآخرة', | ||
'رَجَب', | ||
'شَعْبان', | ||
'رَمَضان', | ||
'شَوّال', | ||
'ذو القعدة', | ||
'ذو الحجة' | ||
]; | ||
HijriCalendar.monthNamesShort = [ | ||
'مُحَر', | ||
'صَفَر', | ||
'رَبي', | ||
'ثان', | ||
'أول', | ||
'آخر', | ||
'رَجَب', | ||
'شَعْب', | ||
'رَمَض', | ||
'شَوّا', | ||
'قعد', | ||
'حجة' | ||
]; | ||
window.HijriCalendar = HijriCalendar; | ||
@@ -152,2 +437,44 @@ }(window)); | ||
}()); | ||
(function (window, undefined) { | ||
'use strict'; | ||
Number.prototype.pad = function (size) { | ||
var s = String(this); | ||
while (s.length < (size || 2)) { | ||
s = '0' + s; | ||
} | ||
return s; | ||
}; | ||
Number.prototype.humanFileSize = function (si) { | ||
var bytes = this; | ||
var thresh = si ? 1000 : 1024; | ||
if (Math.abs(bytes) < thresh) { | ||
return bytes + ' B'; | ||
} | ||
var units = si ? [ | ||
'kB', | ||
'MB', | ||
'GB', | ||
'TB', | ||
'PB', | ||
'EB', | ||
'ZB', | ||
'YB' | ||
] : [ | ||
'KiB', | ||
'MiB', | ||
'GiB', | ||
'TiB', | ||
'PiB', | ||
'EiB', | ||
'ZiB', | ||
'YiB' | ||
]; | ||
var u = -1; | ||
do { | ||
bytes /= thresh; | ||
++u; | ||
} while (Math.abs(bytes) >= thresh && u < units.length - 1); | ||
return bytes.toFixed(1) + ' ' + units[u]; | ||
}; | ||
}(window)); | ||
(function (angular, undefined) { | ||
@@ -184,4 +511,221 @@ 'use strict'; | ||
'use strict'; | ||
var PersianCalendar = function () { | ||
var JalaliDate = { | ||
g_days_in_month: [ | ||
31, | ||
28, | ||
31, | ||
30, | ||
31, | ||
30, | ||
31, | ||
31, | ||
30, | ||
31, | ||
30, | ||
31 | ||
], | ||
j_days_in_month: [ | ||
31, | ||
31, | ||
31, | ||
31, | ||
31, | ||
31, | ||
30, | ||
30, | ||
30, | ||
30, | ||
30, | ||
29 | ||
] | ||
}; | ||
JalaliDate.jalaliToGregorian = function (j_y, j_m, j_d) { | ||
j_y = parseInt(j_y); | ||
j_m = parseInt(j_m); | ||
j_d = parseInt(j_d); | ||
var jy = j_y - 979; | ||
var jm = j_m - 1; | ||
var jd = j_d - 1; | ||
var j_day_no = 365 * jy + parseInt(jy / 33) * 8 + parseInt((jy % 33 + 3) / 4); | ||
for (var i = 0; i < jm; ++i) | ||
j_day_no += JalaliDate.j_days_in_month[i]; | ||
j_day_no += jd; | ||
var g_day_no = j_day_no + 79; | ||
var gy = 1600 + 400 * parseInt(g_day_no / 146097); | ||
/* 146097 = 365*400 + 400/4 - 400/100 + 400/400 */ | ||
g_day_no = g_day_no % 146097; | ||
var leap = true; | ||
if (g_day_no >= 36525) | ||
/* 36525 = 365*100 + 100/4 */ | ||
{ | ||
g_day_no--; | ||
gy += 100 * parseInt(g_day_no / 36524); | ||
/* 36524 = 365*100 + 100/4 - 100/100 */ | ||
g_day_no = g_day_no % 36524; | ||
if (g_day_no >= 365) | ||
g_day_no++; | ||
else | ||
leap = false; | ||
} | ||
gy += 4 * parseInt(g_day_no / 1461); | ||
/* 1461 = 365*4 + 4/4 */ | ||
g_day_no %= 1461; | ||
if (g_day_no >= 366) { | ||
leap = false; | ||
g_day_no--; | ||
gy += parseInt(g_day_no / 365); | ||
g_day_no = g_day_no % 365; | ||
} | ||
for (var i = 0; g_day_no >= JalaliDate.g_days_in_month[i] + (i === 1 && leap); i++) | ||
g_day_no -= JalaliDate.g_days_in_month[i] + (i === 1 && leap); | ||
var gm = i + 1; | ||
var gd = g_day_no + 1; | ||
return [ | ||
gy, | ||
gm, | ||
gd | ||
]; | ||
}; | ||
JalaliDate.checkDate = function (j_y, j_m, j_d) { | ||
return !(j_y < 0 || j_y > 32767 || j_m < 1 || j_m > 12 || j_d < 1 || j_d > JalaliDate.j_days_in_month[j_m - 1] + (j_m === 12 && !((j_y - 979) % 33 % 4))); | ||
}; | ||
JalaliDate.gregorianToJalali = function (g_y, g_m, g_d) { | ||
g_y = parseInt(g_y); | ||
g_m = parseInt(g_m); | ||
g_d = parseInt(g_d); | ||
var gy = g_y - 1600; | ||
var gm = g_m - 1; | ||
var gd = g_d - 1; | ||
var g_day_no = 365 * gy + parseInt((gy + 3) / 4) - parseInt((gy + 99) / 100) + parseInt((gy + 399) / 400); | ||
for (var i = 0; i < gm; ++i) | ||
g_day_no += JalaliDate.g_days_in_month[i]; | ||
if (gm > 1 && (gy % 4 === 0 && gy % 100 !== 0 || gy % 400 === 0)) | ||
/* leap and after Feb */ | ||
++g_day_no; | ||
g_day_no += gd; | ||
var j_day_no = g_day_no - 79; | ||
var j_np = parseInt(j_day_no / 12053); | ||
j_day_no %= 12053; | ||
var jy = 979 + 33 * j_np + 4 * parseInt(j_day_no / 1461); | ||
j_day_no %= 1461; | ||
if (j_day_no >= 366) { | ||
jy += parseInt((j_day_no - 1) / 365); | ||
j_day_no = (j_day_no - 1) % 365; | ||
} | ||
for (var i = 0; i < 11 && j_day_no >= JalaliDate.j_days_in_month[i]; ++i) { | ||
j_day_no -= JalaliDate.j_days_in_month[i]; | ||
} | ||
var jm = i + 1; | ||
var jd = j_day_no + 1; | ||
return [ | ||
jy, | ||
jm, | ||
jd | ||
]; | ||
}; | ||
var fromDate = function (date) { | ||
date = new Date(date); | ||
var res = JalaliDate.gregorianToJalali(date.getFullYear(), date.getMonth() + 1, date.getDate()); | ||
return { | ||
year: res[0], | ||
month: res[1], | ||
day: res[2] | ||
}; | ||
}; | ||
var toDate = function (year, month, day) { | ||
var res = JalaliDate.jalaliToGregorian(year, month, day); | ||
return new Date(res[0], res[1] - 1, res[2]); | ||
}; | ||
var PersianCalendar = function (dateOrYear, month, day) { | ||
if (!dateOrYear) { | ||
dateOrYear = new Date(); | ||
} | ||
if (Date.isDate(dateOrYear)) { | ||
var calc = fromDate(dateOrYear); | ||
this.year = calc.year; | ||
this.month = calc.month; | ||
this.day = calc.day; | ||
return; | ||
} | ||
this.year = dateOrYear; | ||
this.month = month; | ||
this.day = day; | ||
}; | ||
PersianCalendar.prototype.getMonthStartWeekDate = function () { | ||
return PersianCalendar.getMonthStartWeekDate(this.year, this.month); | ||
}; | ||
PersianCalendar.prototype.toDate = function () { | ||
return toDate(this.year, this.month, this.day); | ||
}; | ||
PersianCalendar.toGregorian = function () { | ||
var date = toDate(this.year, this.month, this.day); | ||
return new GregorianCalendar(date); | ||
}; | ||
PersianCalendar.getMonthStartWeekDate = function (year, month) { | ||
var date = toDate(year, month, 1).getDay() + PersianCalendar.weekGap; | ||
if (date > 7) | ||
date -= 7; | ||
return date; | ||
}; | ||
PersianCalendar.weekGap = 2; | ||
PersianCalendar.daysInMonth = [ | ||
31, | ||
31, | ||
31, | ||
31, | ||
31, | ||
31, | ||
30, | ||
30, | ||
30, | ||
30, | ||
30, | ||
29 | ||
]; | ||
PersianCalendar.dayNames = [ | ||
'شنبه', | ||
'یک شنبه', | ||
'دوشنبه', | ||
'سه شنبه', | ||
'چهار شنبه', | ||
'پنج شنبه', | ||
'جمعه' | ||
]; | ||
PersianCalendar.dayNamesShort = [ | ||
'ش', | ||
'۱ش', | ||
'۲ش', | ||
'۳ش', | ||
'۴ش', | ||
'۵ش', | ||
'ج' | ||
]; | ||
PersianCalendar.monthNames = [ | ||
'فروردین', | ||
'اردیبهشت', | ||
'خرداد', | ||
'تیر', | ||
'مرداد', | ||
'شهریور', | ||
'مهر', | ||
'آبان', | ||
'آذر', | ||
'دی', | ||
'بهمن', | ||
'اسفند' | ||
]; | ||
PersianCalendar.monthNamesShort = [ | ||
'فر', | ||
'ارد', | ||
'خرد', | ||
'تیر', | ||
'مرد', | ||
'شهر', | ||
'مهر', | ||
'آب', | ||
'آذر', | ||
'دی', | ||
'بهم', | ||
'اسف' | ||
]; | ||
window.PersianCalendar = PersianCalendar; | ||
@@ -188,0 +732,0 @@ }(window)); |
@@ -1,1 +0,1 @@ | ||
!function(t,r,n,e,o,i){"use strict";e.achasoft=e.achasoft||{},e.achasoft.frontend={enums:{},i18n:{},utils:{}},r.module("frontend.library",[]),r.module("frontend.templates",[]),r.module("frontend.layouts",[]),r.module("frontend.services",["frontend.library"]),r.module("frontend.filters",["frontend.library"]),r.module("frontend.directives",["frontend.services","frontend.filters"])}(jQuery,angular,_,window,document),function(t,r){"use strict";Array.prototype.copy=function(){return this.concat([])},Array.prototype.addRange=function(t){var r=this;(t||[]).forEach(function(t){r.push(t)})},Array.prototype.add=function(t,r){var n=this.indexOf(t);return-1!==n?n:!1===r?(this.unshift(t),0):(this.push(t),this.length-1)},Array.prototype.del=function(t){var r=this.indexOf(t);return-1!==r&&this.splice(r,1),r}}(window),function(t,r){"use strict"}(window),function(t,r){"use strict";var n=function(){};t.GregorianCalendar=n}(window),function(t,r){"use strict";var n=function(){};t.HijriCalendar=n}(window),function(t,r){"use strict"}(jQuery),function(){var t,r,n,e,o,i;r=navigator.platform.toUpperCase().indexOf("MAC")>=0,window.macKeys={cmdKey:!1,ctrlKey:!1,shiftKey:!1,altKey:!1,reset:function(){this.cmdKey=!1,this.ctrlKey=!1,this.shiftKey=!1,this.altKey=!1}},r&&(t=function(){var t,r=navigator.userAgent,n=r.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)||[];return/trident/i.test(n[1])?(t=/\brv[ :]+(\d+)/g.exec(r)||[],{browser:"IE",version:t[1]||""}):"Chrome"===n[1]&&null!=(t=r.match(/\b(OPR|Edge)\/(\d+)/))?{browser:t.slice(1)[0].replace("OPR","Opera"),version:t.slice(1)[1]}:(n=n[2]?[n[1],n[2]]:[navigator.appName,navigator.appVersion,"-?"],null!=(t=r.match(/version\/(\d+)/i))&&n.splice(1,1,t[1]),{browser:n[0],version:n[1]})}(),n="Chrome"===t.browser||"Safari"===t.browser,e="Firefox"===t.browser,o="Opera"===t.browser,window.onkeydown=function(t){i=t.keyCode,(n||o)&&(91===i||93===i)||e&&224===i?macKeys.cmdKey=!0:16===i?macKeys.shiftKey=!0:17===i?macKeys.ctrlKey=!0:18===i&&(macKeys.altKey=!0)},window.onkeyup=function(t){i=t.keyCode,(n||o)&&(91===i||93===i)||e&&224===i?macKeys.cmdKey=!1:16===i?macKeys.shiftKey=!1:17===i?macKeys.ctrlKey=!1:18===i&&(macKeys.altKey=!1)},window.onblur=function(){macKeys.reset()})}(),function(t,r){"use strict";t.module("frontend.library").factory("operationResult",function(){var t=function(){this.error=null,this.status=!1,this.data=null};return t.success=function(r){return(new t).success(r)},t.failed=function(r){return(new t).failed(r)},t.prototype.success=function(t){return this.data=t,this.status=!0,this.error=null,this},t.prototype.failed=function(t){return this.data=null,this.status=!1,this.error=t,this},t})}(angular),function(t,r){"use strict";var n=function(){};t.PersianCalendar=n}(window),function(t){"use strict";String.prototype.format=function(t){return this.replace(/{(\d+)}/g,function(r,n,e,o){return t[n]?t[n]:r})},String.prototype.startsWith||(String.prototype.startsWith=function(t,r){return this.substr(r||0,t.length)===t}),String.prototype.toKebabCase=function(){return this.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}}(),function(t,r){"use strict";t.module("frontend.library").factory("uuid",function(){return function(){function t(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()}})}(angular),function(t,r,n,e,o,i){"use strict";r.module("frontend.layouts")}(jQuery,angular,_,window,document); | ||
!function(t,e,r,n,a,o){"use strict";n.achasoft=n.achasoft||{},n.achasoft.frontend={enums:{},i18n:{},utils:{}},e.module("frontend.library",[]),e.module("frontend.templates",[]),e.module("frontend.layouts",[]),e.module("frontend.services",["frontend.library","ngFileUpload"]),e.module("frontend.filters",["frontend.library"]),e.module("frontend.directives",["frontend.services","frontend.filters"])}(jQuery,angular,_,window,document),function(t,e){"use strict";Array.prototype.copy=function(){return this.concat([])},Array.prototype.addRange=function(t){var e=this;(t||[]).forEach(function(t){e.push(t)})},Array.prototype.add=function(t,e){var r=this.indexOf(t);return-1!==r?r:!1===e?(this.unshift(t),0):(this.push(t),this.length-1)},Array.prototype.del=function(t){var e=this.indexOf(t);return-1!==e&&this.splice(e,1),e},Array.prototype.partition=function(t){for(var e=[],r=0;r<this.length;r++)r%t==0&&e.push([]),e[e.length-1].push(this[r]);return e},Array.prototype.pluck=function(t){return this.map(function(e){return e[t]})}}(window),function(t,e){"use strict";Date.isDate=function(t){if("[object Date]"===toString.call(t))return!0;if("string"==typeof t){var e=Date.parse(t);return isNaN(t)&&!isNaN(e)}return!1}}(window),function(t,e){"use strict"}(window),function(t,e){"use strict";var r=function(t,e,r){if(t||(t=new Date),Date.isDate(t)){var n=new Date(t);return this.year=n.getFullYear(),this.month=n.getMonth()+1,void(this.day=n.getDate())}this.year=t,this.month=e,this.day=r};r.getMonthStartWeekDate=function(t,e){return new Date(t,e-1,1).getDay()+r.weekGap},r.prototype.getMonthStartWeekDate=function(){return r.getMonthStartWeekDate(this.year,this.month-1)},r.prototype.toDate=function(){return new Date(this.year,this.month-1,this.day)},r.parsePersian=function(){return PersianCalendar.toGregorian.apply(null,arguments)},r.parseHijri=function(){return HijriCalendar.toGregorian.apply(null,arguments)},r.weekGap=0,r.daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31],r.dayNames=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],r.dayNamesShort=["Mo","Tu","We","Th","Fr","Sa","Su"],r.monthNames=["January","February","March","April","May","June","July","August","September","October","November","December"],r.monthNamesShort=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],t.GregorianCalendar=r}(window),function(t,e){"use strict";function r(t){return t<-1e-7?Math.ceil(t-1e-7):Math.floor(t+1e-7)}function n(t,e,n){var a,o,i,s,u=parseInt(n),h=parseInt(e),c=parseInt(t);return a=c>1582||1582===c&&h>10||1582===c&&10===h&&u>14?r(1461*(c+4800+r((h-14)/12))/4)+r(367*(h-2-12*r((h-14)/12))/12)-r(3*r((c+4900+r((h-14)/12))/100)/4)+u-32075+1:367*c-r(7*(c+5001+r((h-9)/7))/4)+r(275*h/9)+u+1729777+1,a-1,o=a-1948440+10632,i=r((o-1)/10631),o=o-10631*i+354,s=r((10985-o)/5316)*r(50*o/17719)+r(o/5670)*r(43*o/15238),o=o-r((30-s)/15)*r(17719*s/50)-r(s/16)*r(15238*s/43)+29,h=r(24*o/709),u=o-r(709*h/24),c=30*i+s-30,{day:u,month:h,year:c}}function a(t,e,n){var a,i,s,u,h,c=parseInt(n),y=parseInt(e),d=parseInt(t),f=r((11*d+3)/30)+354*d+30*y-r((y-1)/2)+c+1948440-385-o;return f>2299160?(a=f+68569,i=r(4*a/146097),a-=r((146097*i+3)/4),s=r(4e3*(a+1)/1461001),a=a-r(1461*s/4)+31,u=r(80*a/2447),c=a-r(2447*u/80),a=r(u/11),y=u+2-12*a,d=100*(i-49)+s+a):(u=f+1402,h=r((u-1)/1461),a=u-1461*h,i=r((a-1)/365)-r(a/1461),s=a-365*i+30,u=r(80*s/2447),c=s-r(2447*u/80),s=r(u/11),y=u+2-12*s,d=4*h+i+s-4716),{day:c,month:y,year:d}}var o=1,i=function(t){return t=new Date(t),n(t.getFullYear(),t.getMonth()+1,t.getDate())},s=function(t,e,r){var n=a(t,e,r);return new Date(n.year,n.month-1,n.day)},u=function(t,e,r){if(t||(t=new Date),Date.isDate(t)){var n=i(t);return this.year=n.year,this.month=n.month,void(this.day=n.day)}this.year=t,this.month=e,this.day=r};u.prototype.getMonthStartWeekDate=function(){return u.getMonthStartWeekDate(this.year,this.month)},u.prototype.toDate=function(){return s(this.year,this.month,this.day)},u.toGregorian=function(t,e,r){var n=s(t,e,r);return new GregorianCalendar(n)},u.getMonthStartWeekDate=function(t,e){return s(t,e,1).getDay()+u.weekGap},u.weekGap=0,u.daysInMonth=[30,29,30,29,30,29,30,29,30,29,30,29],u.dayNames=["الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"],u.dayNamesShort=["إث","ثل","أر","خم","جم","سب","أح"],u.monthNames=["مُحَرَّم","صَفَر","رَبيع الأوّل","رَبيع الثاني","جُمادى الأولى","جُمادى الآخرة","رَجَب","شَعْبان","رَمَضان","شَوّال","ذو القعدة","ذو الحجة"],u.monthNamesShort=["مُحَر","صَفَر","رَبي","ثان","أول","آخر","رَجَب","شَعْب","رَمَض","شَوّا","قعد","حجة"],t.HijriCalendar=u}(window),function(t,e){"use strict"}(jQuery),function(){var t,e,r,n,a,o;e=navigator.platform.toUpperCase().indexOf("MAC")>=0,window.macKeys={cmdKey:!1,ctrlKey:!1,shiftKey:!1,altKey:!1,reset:function(){this.cmdKey=!1,this.ctrlKey=!1,this.shiftKey=!1,this.altKey=!1}},e&&(t=function(){var t,e=navigator.userAgent,r=e.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)||[];return/trident/i.test(r[1])?(t=/\brv[ :]+(\d+)/g.exec(e)||[],{browser:"IE",version:t[1]||""}):"Chrome"===r[1]&&null!=(t=e.match(/\b(OPR|Edge)\/(\d+)/))?{browser:t.slice(1)[0].replace("OPR","Opera"),version:t.slice(1)[1]}:(r=r[2]?[r[1],r[2]]:[navigator.appName,navigator.appVersion,"-?"],null!=(t=e.match(/version\/(\d+)/i))&&r.splice(1,1,t[1]),{browser:r[0],version:r[1]})}(),r="Chrome"===t.browser||"Safari"===t.browser,n="Firefox"===t.browser,a="Opera"===t.browser,window.onkeydown=function(t){o=t.keyCode,(r||a)&&(91===o||93===o)||n&&224===o?macKeys.cmdKey=!0:16===o?macKeys.shiftKey=!0:17===o?macKeys.ctrlKey=!0:18===o&&(macKeys.altKey=!0)},window.onkeyup=function(t){o=t.keyCode,(r||a)&&(91===o||93===o)||n&&224===o?macKeys.cmdKey=!1:16===o?macKeys.shiftKey=!1:17===o?macKeys.ctrlKey=!1:18===o&&(macKeys.altKey=!1)},window.onblur=function(){macKeys.reset()})}(),function(t,e){"use strict";Number.prototype.pad=function(t){for(var e=String(this);e.length<(t||2);)e="0"+e;return e},Number.prototype.humanFileSize=function(t){var e=this,r=t?1e3:1024;if(Math.abs(e)<r)return e+" B";var n=t?["kB","MB","GB","TB","PB","EB","ZB","YB"]:["KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],a=-1;do{e/=r,++a}while(Math.abs(e)>=r&&a<n.length-1);return e.toFixed(1)+" "+n[a]}}(window),function(t,e){"use strict";t.module("frontend.library").factory("operationResult",function(){var t=function(){this.error=null,this.status=!1,this.data=null};return t.success=function(e){return(new t).success(e)},t.failed=function(e){return(new t).failed(e)},t.prototype.success=function(t){return this.data=t,this.status=!0,this.error=null,this},t.prototype.failed=function(t){return this.data=null,this.status=!1,this.error=t,this},t})}(angular),function(t,e){"use strict";var r={g_days_in_month:[31,28,31,30,31,30,31,31,30,31,30,31],j_days_in_month:[31,31,31,31,31,31,30,30,30,30,30,29]};r.jalaliToGregorian=function(t,e,n){t=parseInt(t),e=parseInt(e),n=parseInt(n);for(var a=t-979,o=e-1,i=n-1,s=365*a+8*parseInt(a/33)+parseInt((a%33+3)/4),u=0;u<o;++u)s+=r.j_days_in_month[u];s+=i;var h=s+79,c=1600+400*parseInt(h/146097);h%=146097;var y=!0;h>=36525&&(h--,c+=100*parseInt(h/36524),h%=36524,h>=365?h++:y=!1),c+=4*parseInt(h/1461),(h%=1461)>=366&&(y=!1,h--,c+=parseInt(h/365),h%=365);for(var u=0;h>=r.g_days_in_month[u]+(1===u&&y);u++)h-=r.g_days_in_month[u]+(1===u&&y);return[c,u+1,h+1]},r.checkDate=function(t,e,n){return!(t<0||t>32767||e<1||e>12||n<1||n>r.j_days_in_month[e-1]+(12===e&&!((t-979)%33%4)))},r.gregorianToJalali=function(t,e,n){t=parseInt(t),e=parseInt(e),n=parseInt(n);for(var a=t-1600,o=e-1,i=n-1,s=365*a+parseInt((a+3)/4)-parseInt((a+99)/100)+parseInt((a+399)/400),u=0;u<o;++u)s+=r.g_days_in_month[u];o>1&&(a%4==0&&a%100!=0||a%400==0)&&++s,s+=i;var h=s-79,c=parseInt(h/12053);h%=12053;var y=979+33*c+4*parseInt(h/1461);(h%=1461)>=366&&(y+=parseInt((h-1)/365),h=(h-1)%365);for(var u=0;u<11&&h>=r.j_days_in_month[u];++u)h-=r.j_days_in_month[u];return[y,u+1,h+1]};var n=function(t){t=new Date(t);var e=r.gregorianToJalali(t.getFullYear(),t.getMonth()+1,t.getDate());return{year:e[0],month:e[1],day:e[2]}},a=function(t,e,n){var a=r.jalaliToGregorian(t,e,n);return new Date(a[0],a[1]-1,a[2])},o=function(t,e,r){if(t||(t=new Date),Date.isDate(t)){var a=n(t);return this.year=a.year,this.month=a.month,void(this.day=a.day)}this.year=t,this.month=e,this.day=r};o.prototype.getMonthStartWeekDate=function(){return o.getMonthStartWeekDate(this.year,this.month)},o.prototype.toDate=function(){return a(this.year,this.month,this.day)},o.toGregorian=function(){var t=a(this.year,this.month,this.day);return new GregorianCalendar(t)},o.getMonthStartWeekDate=function(t,e){var r=a(t,e,1).getDay()+o.weekGap;return r>7&&(r-=7),r},o.weekGap=2,o.daysInMonth=[31,31,31,31,31,31,30,30,30,30,30,29],o.dayNames=["شنبه","یک شنبه","دوشنبه","سه شنبه","چهار شنبه","پنج شنبه","جمعه"],o.dayNamesShort=["ش","۱ش","۲ش","۳ش","۴ش","۵ش","ج"],o.monthNames=["فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند"],o.monthNamesShort=["فر","ارد","خرد","تیر","مرد","شهر","مهر","آب","آذر","دی","بهم","اسف"],t.PersianCalendar=o}(window),function(t){"use strict";String.prototype.format=function(t){return this.replace(/{(\d+)}/g,function(e,r,n,a){return t[r]?t[r]:e})},String.prototype.startsWith||(String.prototype.startsWith=function(t,e){return this.substr(e||0,t.length)===t}),String.prototype.toKebabCase=function(){return this.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}}(),function(t,e){"use strict";t.module("frontend.library").factory("uuid",function(){return function(){function t(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()}})}(angular),function(t,e,r,n,a,o){"use strict";e.module("frontend.layouts")}(jQuery,angular,_,window,document); |
@@ -186,28 +186,2 @@ (function ($, angular, underscore, window, document, undefined) { | ||
'use strict'; | ||
angular.module('frontend.directives').directive('sideNavigationExtend', [ | ||
'$compile', | ||
function ($compile) { | ||
return { | ||
restrict: 'E', | ||
replace: true, | ||
scope: { | ||
model: '<', | ||
tag: '<?' | ||
}, | ||
compile: function ($$element) { | ||
return { | ||
pre: function (scope, element, attr) { | ||
var selector = '<0></0>'.replace(/0/g, scope.model); | ||
var target = $(selector); | ||
$compile(target)(scope); | ||
element.replaceWith(target); | ||
} | ||
}; | ||
} | ||
}; | ||
} | ||
]); | ||
}(jQuery, angular, _, window, document)); | ||
(function ($, angular, underscore, window, document, undefined) { | ||
'use strict'; | ||
angular.module('frontend.directives').directive('sideNavigation', [ | ||
@@ -344,2 +318,28 @@ '$rootScope', | ||
'use strict'; | ||
angular.module('frontend.directives').directive('sideNavigationExtend', [ | ||
'$compile', | ||
function ($compile) { | ||
return { | ||
restrict: 'E', | ||
replace: true, | ||
scope: { | ||
model: '<', | ||
tag: '<?' | ||
}, | ||
compile: function ($$element) { | ||
return { | ||
pre: function (scope, element, attr) { | ||
var selector = '<0></0>'.replace(/0/g, scope.model); | ||
var target = $(selector); | ||
$compile(target)(scope); | ||
element.replaceWith(target); | ||
} | ||
}; | ||
} | ||
}; | ||
} | ||
]); | ||
}(jQuery, angular, _, window, document)); | ||
(function ($, angular, underscore, window, document, undefined) { | ||
'use strict'; | ||
angular.module('frontend.directives').directive('toolbar', [ | ||
@@ -346,0 +346,0 @@ 'toolbarService', |
@@ -1,1 +0,1 @@ | ||
!function(e,t,n,i,o,c){"use strict";t.module("frontend.directives")}(jQuery,angular,_,window,document),function(e,t,n,i,o,c){"use strict";t.module("frontend.directives").directive("actionBar",["identityService","actionBarService","layoutTogglers","cultureService",function(e,t,n,o){return{restrict:"E",replace:!0,scope:{},templateUrl:"/templates/framework/panel/directives/action-bar/template.html",link:function(c,r,a){c.vm={dataSource:t,currentSet:[],page:1},c.vm.init=function(){c.vm.bind()},c.vm.logout=function(){e.clearToken(),i.location=e.accountPath.format([o.lang])},c.vm.onAction=function(e){e.action&&e.action(e)},c.vm.getNotificationClass=function(e,t){return 0===t?"notification-upperbody "+e.cssClass:"notification-lowerbody"},c.vm.collapseMenu=function(){n.toggleMenu()},c.vm.onNotificationsChanged=function(){c.vm.page=1,c.vm.setNotificationPage()},c.vm.prev=function(e){e.stopPropagation(),e.preventDefault(),1!==c.vm.page&&(c.vm.page--,c.vm.setNotificationPage())},c.vm.next=function(e){e.stopPropagation(),e.preventDefault();var n=Math.ceil((t.notifications||[]).length%3);c.vm.page>=n||(c.vm.page++,c.vm.setNotificationPage())},c.vm.setNotificationPage=function(){if(t.notifications.length<=3)return void(c.vm.currentSet=t.notifications.concat([]));var e=[],n=3*(c.vm.page-1),i=n+3;for(i>t.notifications.length&&(i=t.notifications.length),n;n<i;n++)e.push(t.notifications[n]);c.vm.currentSet=e},c.vm.bind=function(){c.$watchCollection("vm.dataSource.notifications",c.vm.onNotificationsChanged)},c.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,t,n,i,o,c){"use strict";t.module("frontend.directives").directive("breadcrumbs",["breadcrumbsService",function(e){return{restrict:"E",replace:!0,scope:{},templateUrl:"/templates/framework/panel/directives/breadcrumbs/template.html",link:function(t,n,i){t.vm={dataSource:e},t.vm.init=function(){t.vm.bind()},t.vm.bind=function(){},t.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,t,n,i,o,c){"use strict";t.module("frontend.directives").directive("panelWaiting",[function(){return{restrict:"E",replace:!0,scope:{},templateUrl:"/templates/framework/panel/directives/panel-waiting/template.html",link:function(e,t,n){e.vm={},e.vm.init=function(){e.vm.bind()},e.vm.bind=function(){},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,t,n,i,o,c){"use strict";t.module("frontend.directives").directive("sideBar",["sideBarService","layoutTogglers",function(e,t){return{restrict:"E",replace:!0,scope:{},templateUrl:"/templates/framework/panel/directives/side-bar/template.html",link:function(n,i,o){n.vm={dataSource:e},n.vm.init=function(){n.vm.bind()},n.vm.bind=function(){},n.vm.close=function(){t.closeSidebar()},n.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,t,n,i,o,c){"use strict";t.module("frontend.directives").directive("sideMenu",["sideMenuService",function(e){return{restrict:"E",replace:!0,scope:{},templateUrl:"/templates/framework/panel/directives/side-menu/template.html",link:function(t,n,i){t.vm={dataSource:e},t.vm.init=function(){t.vm.bind()},t.vm.bind=function(){},t.vm.signOut=function(){},t.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,t,n,i,o,c){"use strict";t.module("frontend.directives").directive("sideNavigationExtend",["$compile",function(t){return{restrict:"E",replace:!0,scope:{model:"<",tag:"<?"},compile:function(n){return{pre:function(n,i,o){var c="<0></0>".replace(/0/g,n.model),r=e(c);t(r)(n),i.replaceWith(r)}}}}}])}(jQuery,angular,_,window,document),function(e,t,n,i,o,c){"use strict";t.module("frontend.directives").directive("sideNavigation",["$rootScope","$route","sideMenuService","cultureService",function(t,n,o,c){return{restrict:"E",replace:!0,scope:{},templateUrl:"/templates/framework/panel/directives/side-navigation/template.html",link:function(n,r,a){n.vm={dataSource:o.menus,selectedMenu:null,selectedSub:null},n.vm.init=function(){n.vm.bind(),n.vm.preSelect()},n.vm.getMenuClass=function(e){var t=n.vm.selectedMenu===e?"active":"";return t?((e.type||e.categories&&e.categories.length)&&(t+=" open"),t):t},n.vm.getSubMenuClass=function(e){return e===n.vm.selectedSub?"active":""},n.vm.subMenuAction=function(e){n.vm.selectedSub=e,e.action&&e.action(e)},n.vm.menuAction=function(e){n.vm.selectedMenu=e,e.action&&e.action(e)},n.vm.preSelect=function(){var e=!1,t=i.location.hash;n.vm.dataSource.forEach(function(i){i.url===t&&(e=!0,n.vm.selectedMenu=i,n.vm.findSub(i))}),e||n.vm.findSub()},n.vm.findSub=function(e){var t,o,c,r=i.location.hash,a=!1,u=!1;if(e&&e.categories)for(o=0;o<e.categories.length;o++){for(c=0;c<e.categories[o].menus.length;c++)if(e.categories[o].menus[c].href===r){a=!0,n.vm.selectedSub=e.categories[o].menus[c];break}if(a)break}else for(t=0;t<n.vm.dataSource.length;t++)if(n.vm.dataSource[t].href===r&&(n.vm.selectedMenu=n.vm.dataSource[t],u=!0),n.vm.dataSource[t].categories){for(o=0;o<n.vm.dataSource[t].categories.length;o++){for(c=0;c<n.vm.dataSource[t].categories[o].menus.length;c++)if(n.vm.dataSource[t].categories[o].menus[c].href===r){a=!0,n.vm.selectedMenu=n.vm.dataSource[t],n.vm.selectedSub=n.vm.dataSource[t].categories[o].menus[c];break}if(a)break}if(a||u)break}},n.vm.onWindowResize=function(){r.slimscroll({destroy:!0}),n.vm.create()},n.vm.create=function(){r.slimscroll({touchScrollStep:80,height:e(i).height()-175,position:c.rtl?"left":"right",size:"3px",color:"#29c7ca"})},n.vm.bind=function(){e(i).on("resize",n.vm.onWindowResize),n.$on("$destroy",function(){r.slimscroll({destroy:!0}),e(i).off("resize",n.vm.onWindowResize)}),t.$on("$routeChangeSuccess",function(){n.vm.preSelect()}),setTimeout(n.vm.create,500)},n.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,t,n,i,o,c){"use strict";t.module("frontend.directives").directive("toolbar",["toolbarService",function(e){return{restrict:"E",replace:!0,scope:{},templateUrl:"/templates/framework/panel/directives/toolbar/template.html",link:function(t,n,i){t.vm={dataSource:e},t.vm.init=function(){t.vm.bind()},t.vm.bind=function(){},t.vm.onAction=function(e){e.action&&e.action(e)},t.vm.init()}}}])}(jQuery,angular,_,window,document); | ||
!function(e,t,n,i,o,c){"use strict";t.module("frontend.directives")}(jQuery,angular,_,window,document),function(e,t,n,i,o,c){"use strict";t.module("frontend.directives").directive("actionBar",["identityService","actionBarService","layoutTogglers","cultureService",function(e,t,n,o){return{restrict:"E",replace:!0,scope:{},templateUrl:"/templates/framework/panel/directives/action-bar/template.html",link:function(c,r,a){c.vm={dataSource:t,currentSet:[],page:1},c.vm.init=function(){c.vm.bind()},c.vm.logout=function(){e.clearToken(),i.location=e.accountPath.format([o.lang])},c.vm.onAction=function(e){e.action&&e.action(e)},c.vm.getNotificationClass=function(e,t){return 0===t?"notification-upperbody "+e.cssClass:"notification-lowerbody"},c.vm.collapseMenu=function(){n.toggleMenu()},c.vm.onNotificationsChanged=function(){c.vm.page=1,c.vm.setNotificationPage()},c.vm.prev=function(e){e.stopPropagation(),e.preventDefault(),1!==c.vm.page&&(c.vm.page--,c.vm.setNotificationPage())},c.vm.next=function(e){e.stopPropagation(),e.preventDefault();var n=Math.ceil((t.notifications||[]).length%3);c.vm.page>=n||(c.vm.page++,c.vm.setNotificationPage())},c.vm.setNotificationPage=function(){if(t.notifications.length<=3)return void(c.vm.currentSet=t.notifications.concat([]));var e=[],n=3*(c.vm.page-1),i=n+3;for(i>t.notifications.length&&(i=t.notifications.length),n;n<i;n++)e.push(t.notifications[n]);c.vm.currentSet=e},c.vm.bind=function(){c.$watchCollection("vm.dataSource.notifications",c.vm.onNotificationsChanged)},c.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,t,n,i,o,c){"use strict";t.module("frontend.directives").directive("breadcrumbs",["breadcrumbsService",function(e){return{restrict:"E",replace:!0,scope:{},templateUrl:"/templates/framework/panel/directives/breadcrumbs/template.html",link:function(t,n,i){t.vm={dataSource:e},t.vm.init=function(){t.vm.bind()},t.vm.bind=function(){},t.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,t,n,i,o,c){"use strict";t.module("frontend.directives").directive("panelWaiting",[function(){return{restrict:"E",replace:!0,scope:{},templateUrl:"/templates/framework/panel/directives/panel-waiting/template.html",link:function(e,t,n){e.vm={},e.vm.init=function(){e.vm.bind()},e.vm.bind=function(){},e.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,t,n,i,o,c){"use strict";t.module("frontend.directives").directive("sideBar",["sideBarService","layoutTogglers",function(e,t){return{restrict:"E",replace:!0,scope:{},templateUrl:"/templates/framework/panel/directives/side-bar/template.html",link:function(n,i,o){n.vm={dataSource:e},n.vm.init=function(){n.vm.bind()},n.vm.bind=function(){},n.vm.close=function(){t.closeSidebar()},n.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,t,n,i,o,c){"use strict";t.module("frontend.directives").directive("sideMenu",["sideMenuService",function(e){return{restrict:"E",replace:!0,scope:{},templateUrl:"/templates/framework/panel/directives/side-menu/template.html",link:function(t,n,i){t.vm={dataSource:e},t.vm.init=function(){t.vm.bind()},t.vm.bind=function(){},t.vm.signOut=function(){},t.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,t,n,i,o,c){"use strict";t.module("frontend.directives").directive("sideNavigation",["$rootScope","$route","sideMenuService","cultureService",function(t,n,o,c){return{restrict:"E",replace:!0,scope:{},templateUrl:"/templates/framework/panel/directives/side-navigation/template.html",link:function(n,r,a){n.vm={dataSource:o.menus,selectedMenu:null,selectedSub:null},n.vm.init=function(){n.vm.bind(),n.vm.preSelect()},n.vm.getMenuClass=function(e){var t=n.vm.selectedMenu===e?"active":"";return t?((e.type||e.categories&&e.categories.length)&&(t+=" open"),t):t},n.vm.getSubMenuClass=function(e){return e===n.vm.selectedSub?"active":""},n.vm.subMenuAction=function(e){n.vm.selectedSub=e,e.action&&e.action(e)},n.vm.menuAction=function(e){n.vm.selectedMenu=e,e.action&&e.action(e)},n.vm.preSelect=function(){var e=!1,t=i.location.hash;n.vm.dataSource.forEach(function(i){i.url===t&&(e=!0,n.vm.selectedMenu=i,n.vm.findSub(i))}),e||n.vm.findSub()},n.vm.findSub=function(e){var t,o,c,r=i.location.hash,a=!1,u=!1;if(e&&e.categories)for(o=0;o<e.categories.length;o++){for(c=0;c<e.categories[o].menus.length;c++)if(e.categories[o].menus[c].href===r){a=!0,n.vm.selectedSub=e.categories[o].menus[c];break}if(a)break}else for(t=0;t<n.vm.dataSource.length;t++)if(n.vm.dataSource[t].href===r&&(n.vm.selectedMenu=n.vm.dataSource[t],u=!0),n.vm.dataSource[t].categories){for(o=0;o<n.vm.dataSource[t].categories.length;o++){for(c=0;c<n.vm.dataSource[t].categories[o].menus.length;c++)if(n.vm.dataSource[t].categories[o].menus[c].href===r){a=!0,n.vm.selectedMenu=n.vm.dataSource[t],n.vm.selectedSub=n.vm.dataSource[t].categories[o].menus[c];break}if(a)break}if(a||u)break}},n.vm.onWindowResize=function(){r.slimscroll({destroy:!0}),n.vm.create()},n.vm.create=function(){r.slimscroll({touchScrollStep:80,height:e(i).height()-175,position:c.rtl?"left":"right",size:"3px",color:"#29c7ca"})},n.vm.bind=function(){e(i).on("resize",n.vm.onWindowResize),n.$on("$destroy",function(){r.slimscroll({destroy:!0}),e(i).off("resize",n.vm.onWindowResize)}),t.$on("$routeChangeSuccess",function(){n.vm.preSelect()}),setTimeout(n.vm.create,500)},n.vm.init()}}}])}(jQuery,angular,_,window,document),function(e,t,n,i,o,c){"use strict";t.module("frontend.directives").directive("sideNavigationExtend",["$compile",function(t){return{restrict:"E",replace:!0,scope:{model:"<",tag:"<?"},compile:function(n){return{pre:function(n,i,o){var c="<0></0>".replace(/0/g,n.model),r=e(c);t(r)(n),i.replaceWith(r)}}}}}])}(jQuery,angular,_,window,document),function(e,t,n,i,o,c){"use strict";t.module("frontend.directives").directive("toolbar",["toolbarService",function(e){return{restrict:"E",replace:!0,scope:{},templateUrl:"/templates/framework/panel/directives/toolbar/template.html",link:function(t,n,i){t.vm={dataSource:e},t.vm.init=function(){t.vm.bind()},t.vm.bind=function(){},t.vm.onAction=function(e){e.action&&e.action(e)},t.vm.init()}}}])}(jQuery,angular,_,window,document); |
(function ($, angular, underscore, window, document, undefined) { | ||
'use strict'; | ||
angular.module('frontend').config([function () { | ||
}]).run([function () { | ||
}]); | ||
}]).run([ | ||
'$rootScope', | ||
'mainContentScrollbar', | ||
function ($rootScope, mainContentScrollbar) { | ||
mainContentScrollbar.init(); | ||
$rootScope.$on('$routeChangeSuccess', function () { | ||
mainContentScrollbar.refresh(); | ||
}); | ||
$(window).on('resize', function () { | ||
mainContentScrollbar.refresh(); | ||
}); | ||
} | ||
]); | ||
}(jQuery, angular, _, window, document)); | ||
@@ -7,0 +18,0 @@ (function (window, undefined) { |
@@ -1,1 +0,1 @@ | ||
!function(n,u,o,t,i,c){"use strict";u.module("frontend").config([function(){}]).run([function(){}])}(jQuery,angular,_,window,document),function(n,u){"use strict"}(window); | ||
!function(n,o,e,t,i,r){"use strict";o.module("frontend").config([function(){}]).run(["$rootScope","mainContentScrollbar",function(o,e){e.init(),o.$on("$routeChangeSuccess",function(){e.refresh()}),n(t).on("resize",function(){e.refresh()})}])}(jQuery,angular,_,window,document),function(n,o){"use strict"}(window); |
(function ($, angular, underscore, window, document, undefined) { | ||
'use strict'; | ||
var services = angular.module('frontend.services'); | ||
services.factory('layoutTogglers', [function () { | ||
services.factory('mainContentScrollbar', [ | ||
'cultureService', | ||
function (cultureService) { | ||
var element = $('.content-body'); | ||
var create = function () { | ||
element.slimscroll({ | ||
touchScrollStep: 80, | ||
height: $(window).height() - 125, | ||
position: cultureService.rtl ? 'left' : 'right', | ||
size: '3px', | ||
color: '#29c7ca' | ||
}); | ||
}; | ||
return { | ||
init: create, | ||
refresh: function () { | ||
setTimeout(function () { | ||
element.slimscroll({ destroy: true }); | ||
create(); | ||
}, 3000); | ||
} | ||
}; | ||
} | ||
]).factory('layoutTogglers', [function () { | ||
return { | ||
toggleMenu: function () { | ||
@@ -7,0 +30,0 @@ $('.af-side-menu').toggleClass('collapsed'); |
@@ -1,1 +0,1 @@ | ||
!function(e,o,n,a,s,l){"use strict";o.module("frontend.services").factory("layoutTogglers",[function(){return{toggleMenu:function(){e(".af-side-menu").toggleClass("collapsed")},toggleSidebar:function(){e(".af-side-bar").toggleClass("collapsed")},openSidebar:function(){e(".af-side-bar").removeClass("collapsed")},closeSidebar:function(){e(".af-side-bar").addClass("collapsed")}}}])}(jQuery,angular,_,window,document),function(e,o,n,a,s,l){"use strict";o.module("frontend.filters")}(jQuery,angular,_,window,document); | ||
!function(e,o,t,n,l,r){"use strict";o.module("frontend.services").factory("mainContentScrollbar",["cultureService",function(o){var t=e(".content-body"),l=function(){t.slimscroll({touchScrollStep:80,height:e(n).height()-125,position:o.rtl?"left":"right",size:"3px",color:"#29c7ca"})};return{init:l,refresh:function(){setTimeout(function(){t.slimscroll({destroy:!0}),l()},3e3)}}}]).factory("layoutTogglers",[function(){return{toggleMenu:function(){e(".af-side-menu").toggleClass("collapsed")},toggleSidebar:function(){e(".af-side-bar").toggleClass("collapsed")},openSidebar:function(){e(".af-side-bar").removeClass("collapsed")},closeSidebar:function(){e(".af-side-bar").addClass("collapsed")}}}])}(jQuery,angular,_,window,document),function(e,o,t,n,l,r){"use strict";o.module("frontend.filters")}(jQuery,angular,_,window,document); |
@@ -7,6 +7,6 @@ ;(function(){ | ||
$templateCache.put('/templates/framework/panel/directives/action-bar/template.html', '<ul class="af-action-bar header-actions"><li class=actions-stretch-menu id=action-stretch-menu><div class=icon></div></li><li ng-click=vm.collapseMenu() id=action-menu-collapse><a><i class=pe-7s-menu></i></a></li><li ng-if=vm.dataSource.showNotifications class=actions-notification><a class=dropdown-toggle data-toggle=dropdown title="{{:: \'panel.general.notifications\' | translate}}" href=javascript:void(0)><i class=pe-7s-mail></i></a><ul ng-if=vm.dataSource.notifications.length class="dropdown-menu dropdown-arrow pull-right"><li><div class=notification-header><div class=header-title>{{:: \'panel.general.notifications\' | translate}}</div></div><div ng-repeat="notification in vm.currentSet" class="{{vm.getNotificationClass(notification, $index)}}"><div ng-if="$index === 0" class="widget {{notification.cssClass}}"><div class=row><div class="col-lg-6 h-70 w-70 p-5 align-center"><div><img ng-src={{notification.image}} class="w-60 h-60" alt={{notification.author}}></div></div><div class="col-lg-6 h-70 w-m-70 p-5 p-t-10"><div><strong class=f-13>{{notification.author}}</strong></div><div class=f-11>{{notification.subject}}</div></div></div></div><div class=notification-message><div class=message-title>{{notification.title}}</div><div class=message-time><i class="pe-7s-clock v-a-middle"></i> {{notification.date | moment}}</div></div></div><div class=notification-footer><a class=pull-left ng-click=vm.prev($event) href=javascript:void(0)><i class="pe-7s-angle-left-circle f-25"></i></a> <a class=pull-right ng-click=vm.next($event) href=javascript:void(0)><i class="pe-7s-angle-right-circle f-25"></i></a></div></li></ul></li><li ng-repeat="button in vm.dataSource.buttons"><a ng-if=::button.href href={{::button.href}}><i class={{::button.icon}}></i></a> <a ng-if=::!button.href ng-click=vm.onAction(button) href=javascript:void(0)><i class={{::button.icon}}></i></a></li><li><a ng-click=vm.logout() href=javascript:void(0)><i class=pe-7s-power></i></a></li></ul>'); | ||
$templateCache.put('/templates/framework/panel/directives/breadcrumbs/template.html', '<ul class="af-breadcrumbs breadcrumb"><li ng-repeat="crumb in vm.dataSource.crumbs" class="{{::($last?\'active\':\'\')}}"><a ng-if=::!$last href={{::crumb.href}}><i class={{::crumb.icon}}></i> <span>{{::crumb.title}}</span></a> <a ng-if=::$last href=javascript:void(0)><i class={{::crumb.icon}}></i> <span>{{::crumb.title}}</span></a></li></ul>'); | ||
$templateCache.put('/templates/framework/panel/directives/action-bar/template.html', '<ul class="af-action-bar header-actions"><li class=actions-stretch-menu id=action-stretch-menu><div class=icon></div></li><li ng-click=vm.collapseMenu() id=action-menu-collapse><a><i class=pe-7s-menu></i></a></li><li ng-if=vm.dataSource.showNotifications class=actions-notification><a class=dropdown-toggle data-toggle=dropdown title="{{:: \'panel.general.notifications\' | translate}}" href=javascript:void(0)><i class=pe-7s-mail></i></a><ul ng-if=vm.dataSource.notifications.length class="dropdown-menu dropdown-arrow pull-right"><li><div class=notification-header><div class=header-title>{{:: \'panel.general.notifications\' | translate}}</div></div><div ng-repeat="notification in vm.currentSet" class="{{vm.getNotificationClass(notification, $index)}}"><div ng-if="$index === 0" class="widget {{notification.cssClass}}"><div class=row><div class="col-lg-6 h-70 w-70 p-5 align-center"><div><img ng-src={{notification.image}} class="w-60 h-60" alt={{notification.author}}></div></div><div class="col-lg-6 h-70 w-m-70 p-5 p-t-10"><div><strong class=f-13>{{notification.author}}</strong></div><div class=f-11>{{notification.subject}}</div></div></div></div><div class=notification-message><div class=message-title>{{notification.title}}</div><div class=message-time><i class="pe-7s-clock v-a-middle"></i> {{notification.date | moment}}</div></div></div><div class=notification-footer><a class=pull-left ng-click=vm.prev($event) href=javascript:void(0)><i class="pe-7s-angle-left-circle f-25"></i></a> <a class=pull-right ng-click=vm.next($event) href=javascript:void(0)><i class="pe-7s-angle-right-circle f-25"></i></a></div></li></ul></li><li ng-repeat="button in vm.dataSource.buttons"><a ng-if=::button.href href={{::button.href}}><i class={{::button.icon}}></i></a> <a ng-if=::!button.href ng-click=vm.onAction(button) href=javascript:void(0)><i class={{::button.icon}}></i></a></li><li><a ng-click=vm.logout() href=javascript:void(0)><i class=pe-7s-power></i></a></li></ul>'); | ||
$templateCache.put('/templates/framework/panel/directives/panel-waiting/template.html', '<div class=af-panel-waiting>panel-waiting</div>'); | ||
@@ -13,0 +13,0 @@ |
@@ -1,1 +0,1 @@ | ||
!function(){"use strict";angular.module("frontend.templates").run(["$templateCache",function(a){a.put("/templates/framework/panel/directives/breadcrumbs/template.html",'<ul class="af-breadcrumbs breadcrumb"><li ng-repeat="crumb in vm.dataSource.crumbs" class="{{::($last?\'active\':\'\')}}"><a ng-if=::!$last href={{::crumb.href}}><i class={{::crumb.icon}}></i> <span>{{::crumb.title}}</span></a> <a ng-if=::$last href=javascript:void(0)><i class={{::crumb.icon}}></i> <span>{{::crumb.title}}</span></a></li></ul>'),a.put("/templates/framework/panel/directives/action-bar/template.html",'<ul class="af-action-bar header-actions"><li class=actions-stretch-menu id=action-stretch-menu><div class=icon></div></li><li ng-click=vm.collapseMenu() id=action-menu-collapse><a><i class=pe-7s-menu></i></a></li><li ng-if=vm.dataSource.showNotifications class=actions-notification><a class=dropdown-toggle data-toggle=dropdown title="{{:: \'panel.general.notifications\' | translate}}" href=javascript:void(0)><i class=pe-7s-mail></i></a><ul ng-if=vm.dataSource.notifications.length class="dropdown-menu dropdown-arrow pull-right"><li><div class=notification-header><div class=header-title>{{:: \'panel.general.notifications\' | translate}}</div></div><div ng-repeat="notification in vm.currentSet" class="{{vm.getNotificationClass(notification, $index)}}"><div ng-if="$index === 0" class="widget {{notification.cssClass}}"><div class=row><div class="col-lg-6 h-70 w-70 p-5 align-center"><div><img ng-src={{notification.image}} class="w-60 h-60" alt={{notification.author}}></div></div><div class="col-lg-6 h-70 w-m-70 p-5 p-t-10"><div><strong class=f-13>{{notification.author}}</strong></div><div class=f-11>{{notification.subject}}</div></div></div></div><div class=notification-message><div class=message-title>{{notification.title}}</div><div class=message-time><i class="pe-7s-clock v-a-middle"></i> {{notification.date | moment}}</div></div></div><div class=notification-footer><a class=pull-left ng-click=vm.prev($event) href=javascript:void(0)><i class="pe-7s-angle-left-circle f-25"></i></a> <a class=pull-right ng-click=vm.next($event) href=javascript:void(0)><i class="pe-7s-angle-right-circle f-25"></i></a></div></li></ul></li><li ng-repeat="button in vm.dataSource.buttons"><a ng-if=::button.href href={{::button.href}}><i class={{::button.icon}}></i></a> <a ng-if=::!button.href ng-click=vm.onAction(button) href=javascript:void(0)><i class={{::button.icon}}></i></a></li><li><a ng-click=vm.logout() href=javascript:void(0)><i class=pe-7s-power></i></a></li></ul>'),a.put("/templates/framework/panel/directives/panel-waiting/template.html","<div class=af-panel-waiting>panel-waiting</div>"),a.put("/templates/framework/panel/directives/side-bar/template.html",'<div class="af-side-bar sidebar form collapsed"><div id=helpbar class=helpbar><div class=sidebar-header><div class=header-title><i class=pe-7s-info></i> <span>{{vm.dataSource.title}}</span></div><div class=header-description>{{vm.dataSource.description}}</div><div ng-click=vm.close() class=header-close><i class=pe-7s-angle-right-circle></i></div></div><div class=sidebar-body>SIDE BAR CONTENT</div></div></div>'),a.put("/templates/framework/panel/directives/side-menu/template.html",'<div class="af-side-menu sidebar menu"><div class=sidebar-header><div class=header-brand><div class=brand-logo><img ng-src="{{:: vm.dataSource.logoPath}}" alt="{{:: vm.dataSource.applicationName}}"></div><div class=brand-slogan><div class=slogan-title>{{:: vm.dataSource.applicationName}}</div></div></div><div class=header-notification><a ng-if=vm.dataSource.notifications.length class=notification href="{{ vm.dataSource.notifications[0].href}}"><i class="{{ vm.dataSource.notifications[0].icon}}"></i> <span class=text>{{ vm.dataSource.notifications[0].title}}</span><div ng-if=vm.dataSource.notifications[0].sub class=more><span class=more-text>{{ vm.dataSource.notifications[0].sub}}</span> <i class="{{ vm.dataSource.notifications[0].subIcon}}"></i></div></a></div></div><div class=sidebar-menu><side-navigation></side-navigation></div><div class=sidebar-footer><div class=footer-avatar><img ng-src="{{ vm.dataSource.user.avatar}}" alt="{{ vm.dataSource.user.fullName}}"></div><div class=footer-user><a href=#/profile>{{ vm.dataSource.user.fullName}}</a></div><div class=footer-links><a href=javascript:void(0) ng-click=vm.signOut() class=links-logout><i class=pe-7s-power></i> <span>{{:: \'panel.general.signOut\' | translate}}</span></a></div></div></div>'),a.put("/templates/framework/panel/directives/side-navigation/template.html",'<ul class="af-action-bar menu"><li ng-repeat="menu in vm.dataSource" class={{vm.getMenuClass(menu)}}><a ng-if=::menu.href href="{{:: menu.href}}" ng-click=vm.menuAction(menu)><i class="{{:: menu.icon}}"></i> <span ng-if=::menu.title>{{:: menu.title}}</span> <span ng-if=::menu.titleTranslate>{{:: menu.titleTranslate | translate}}</span></a> <a ng-if=::!menu.href ng-click=vm.menuAction(menu) href=javascript:void(0)><i class="{{:: menu.icon}}"></i> <span ng-if=::menu.title>{{:: menu.title}}</span> <span ng-if=::menu.titleTranslate>{{:: menu.titleTranslate | translate}}</span></a><ul ng-if="::(menu.type === undefined || menu.type === \'submenu\')"><li ng-repeat-start="cat in menu.categories" class=submenu-title><span ng-if=::cat.title>{{:: cat.title}}</span> <span ng-if=::cat.titleTranslate>{{:: cat.titleTranslate | translate}}</span></li><li ng-repeat="sub in cat.menus"><a ng-if=::sub.href class={{vm.getSubMenuClass(sub)}} href="{{:: sub.href}}"><i class="{{:: sub.icon}}"></i> <span ng-if=::sub.title>{{:: sub.title}}</span> <span ng-if=::sub.titleTranslate>{{:: sub.titleTranslate | translate}}</span></a> <a ng-if=::!sub.href class={{vm.getSubMenuClass(sub)}} ng-click=vm.subMenuAction(sub) href=javascript:void(0)><i class="{{:: sub.icon}}"></i> <span ng-if=::sub.title>{{:: sub.title}}</span> <span ng-if=::sub.titleTranslate>{{:: sub.titleTranslate | translate}}</span></a></li><li ng-repeat-end class=seperator></li></ul><side-navigation-extend ng-if=::menu.type tag=menu model=menu.type></side-navigation-extend></li></ul>'),a.put("/templates/framework/panel/directives/toolbar/template.html",'<div class="af-toolbar content-nav"><div class="navbar navbar-default content-nav-navbar"><div class=navbar-header><a data-toggle=collapse data-target=#navbar-collapse-2 class="navbar-toggle collapsed"><div class=icon></div></a> <a ng-if=::vm.dataSource.title href=javascript:void(0) class=navbar-brand>{{vm.dataSource.title}}</a> <a ng-if=::vm.dataSource.titleTranslate href=javascript:void(0) class=navbar-brand>{{vm.dataSource.titleTranslate | translate}}</a></div><div id=navbar-collapse-2 class="navbar-collapse collapse"><ul class="nav navbar-nav"><li ng-repeat="menu in vm.dataSource.menus" class="dropdown content-nav-navbar-fw"><a href=javascript:void(0) data-toggle=dropdown class=dropdown-toggle><span ng-if=::menu.title>{{:: menu.title}}</span> <span ng-if=::menu.titleTranslate>{{:: menu.titleTranslate | translate}}</span> <i class="dropdown-caret pe-7s-angle-down"></i></a><ul class=dropdown-menu><li><div class="content-nav-navbar-content p-b-0"><ul ng-if="::(menu.type === \'thumbnail\')" class="thumbnail-links row"><li ng-repeat="thumbnail in menu.thumbnails" class=col-sm-4><a ng-if=::thumbnail.href href={{::thumbnail.href}}><i class={{::thumbnail.icon}}></i><div ng-if=::thumbnail.title class=link-title>{{::thumbnail.title}}</div><div ng-if=::thumbnail.titleTranslate class=link-title>{{::thumbnail.titleTranslate | translate}}</div><p>{{::thumbnail.description}}</p></a> <a ng-if=::!thumbnail.href ng-click=vm.onAction(thumbnail) href=javascript:void(0)><i class={{::thumbnail.icon}}></i><div ng-if=::thumbnail.title class=link-title>{{::thumbnail.title}}</div><div ng-if=::thumbnail.titleTranslate class=link-title>{{::thumbnail.titleTranslate | translate}}</div><p>{{::thumbnail.description}}</p></a></li></ul><ul ng-if="::(menu.type === \'categories\')" class="categories-links row"><li ng-repeat="cat in menu.categories" class=col-sm-4><div ng-if=::cat.title class=category-title>{{::cat.title}}</div><div ng-if=::cat.titleTranslate class=category-title>{{::cat.titleTranslate | translate}}</div><ul><li ng-repeat="item in cat.items"><a ng-if=::item.href href={{::item.href}}><i class={{::item.icon}}></i> <span ng-if=::item.title>{{::item.title}}</span> <span ng-if=::item.titleTranslate>{{::item.titleTranslate|translate}}</span></a> <a ng-if=::!item.href href=javascript:void(0) ng-click=vm.onAction(item)><i class={{::item.icon}}></i> <span ng-if=::item.title>{{::item.title}}</span> <span ng-if=::item.titleTranslate>{{::item.titleTranslate|translate}}</span></a></li></ul></li></ul><ul ng-if="::(menu.type === \'gallery\')" class="gallery-links row"><li ng-repeat="item in menu.gallery" class=col-sm-3><a ng-if=::item.href href={{::item.href}}><img ng-src={{::item.image}} alt={{::item.title}}><div class=link-title>{{::item.title}}</div><p>{{::item.description}}</p></a> <a ng-if=::!item.href ng-click=vm.onAction(item) href=javascript:void(0)><img ng-src={{::item.image}} alt={{::item.title}}><div class=link-title>{{::item.title}}</div><p>{{::item.description}}</p></a></li></ul></div></li></ul></li></ul><ul ng-if=vm.dataSource.actions.length class="nav navbar-nav navbar-right"><li class=dropdown><a href=javascript:void(0) data-toggle=dropdown class=dropdown-toggle><span ng-if=::vm.dataSource.actionsTitle>{{::vm.dataSource.actionsTitle}}</span> <span ng-if=::vm.dataSource.actionsTitleTranslate>{{::vm.dataSource.actionsTitleTranslate | translate}}</span> <i class="dropdown-caret pe-7s-angle-down"></i></a><ul class=dropdown-menu><li ng-repeat="action in vm.dataSource.actions" class={{::action.cssClass}} ng-bind-html=action.content|to_trusted_html></li></ul></li></ul></div></div></div>')}])}(); | ||
!function(){"use strict";angular.module("frontend.templates").run(["$templateCache",function(a){a.put("/templates/framework/panel/directives/action-bar/template.html",'<ul class="af-action-bar header-actions"><li class=actions-stretch-menu id=action-stretch-menu><div class=icon></div></li><li ng-click=vm.collapseMenu() id=action-menu-collapse><a><i class=pe-7s-menu></i></a></li><li ng-if=vm.dataSource.showNotifications class=actions-notification><a class=dropdown-toggle data-toggle=dropdown title="{{:: \'panel.general.notifications\' | translate}}" href=javascript:void(0)><i class=pe-7s-mail></i></a><ul ng-if=vm.dataSource.notifications.length class="dropdown-menu dropdown-arrow pull-right"><li><div class=notification-header><div class=header-title>{{:: \'panel.general.notifications\' | translate}}</div></div><div ng-repeat="notification in vm.currentSet" class="{{vm.getNotificationClass(notification, $index)}}"><div ng-if="$index === 0" class="widget {{notification.cssClass}}"><div class=row><div class="col-lg-6 h-70 w-70 p-5 align-center"><div><img ng-src={{notification.image}} class="w-60 h-60" alt={{notification.author}}></div></div><div class="col-lg-6 h-70 w-m-70 p-5 p-t-10"><div><strong class=f-13>{{notification.author}}</strong></div><div class=f-11>{{notification.subject}}</div></div></div></div><div class=notification-message><div class=message-title>{{notification.title}}</div><div class=message-time><i class="pe-7s-clock v-a-middle"></i> {{notification.date | moment}}</div></div></div><div class=notification-footer><a class=pull-left ng-click=vm.prev($event) href=javascript:void(0)><i class="pe-7s-angle-left-circle f-25"></i></a> <a class=pull-right ng-click=vm.next($event) href=javascript:void(0)><i class="pe-7s-angle-right-circle f-25"></i></a></div></li></ul></li><li ng-repeat="button in vm.dataSource.buttons"><a ng-if=::button.href href={{::button.href}}><i class={{::button.icon}}></i></a> <a ng-if=::!button.href ng-click=vm.onAction(button) href=javascript:void(0)><i class={{::button.icon}}></i></a></li><li><a ng-click=vm.logout() href=javascript:void(0)><i class=pe-7s-power></i></a></li></ul>'),a.put("/templates/framework/panel/directives/breadcrumbs/template.html",'<ul class="af-breadcrumbs breadcrumb"><li ng-repeat="crumb in vm.dataSource.crumbs" class="{{::($last?\'active\':\'\')}}"><a ng-if=::!$last href={{::crumb.href}}><i class={{::crumb.icon}}></i> <span>{{::crumb.title}}</span></a> <a ng-if=::$last href=javascript:void(0)><i class={{::crumb.icon}}></i> <span>{{::crumb.title}}</span></a></li></ul>'),a.put("/templates/framework/panel/directives/panel-waiting/template.html","<div class=af-panel-waiting>panel-waiting</div>"),a.put("/templates/framework/panel/directives/side-bar/template.html",'<div class="af-side-bar sidebar form collapsed"><div id=helpbar class=helpbar><div class=sidebar-header><div class=header-title><i class=pe-7s-info></i> <span>{{vm.dataSource.title}}</span></div><div class=header-description>{{vm.dataSource.description}}</div><div ng-click=vm.close() class=header-close><i class=pe-7s-angle-right-circle></i></div></div><div class=sidebar-body>SIDE BAR CONTENT</div></div></div>'),a.put("/templates/framework/panel/directives/side-menu/template.html",'<div class="af-side-menu sidebar menu"><div class=sidebar-header><div class=header-brand><div class=brand-logo><img ng-src="{{:: vm.dataSource.logoPath}}" alt="{{:: vm.dataSource.applicationName}}"></div><div class=brand-slogan><div class=slogan-title>{{:: vm.dataSource.applicationName}}</div></div></div><div class=header-notification><a ng-if=vm.dataSource.notifications.length class=notification href="{{ vm.dataSource.notifications[0].href}}"><i class="{{ vm.dataSource.notifications[0].icon}}"></i> <span class=text>{{ vm.dataSource.notifications[0].title}}</span><div ng-if=vm.dataSource.notifications[0].sub class=more><span class=more-text>{{ vm.dataSource.notifications[0].sub}}</span> <i class="{{ vm.dataSource.notifications[0].subIcon}}"></i></div></a></div></div><div class=sidebar-menu><side-navigation></side-navigation></div><div class=sidebar-footer><div class=footer-avatar><img ng-src="{{ vm.dataSource.user.avatar}}" alt="{{ vm.dataSource.user.fullName}}"></div><div class=footer-user><a href=#/profile>{{ vm.dataSource.user.fullName}}</a></div><div class=footer-links><a href=javascript:void(0) ng-click=vm.signOut() class=links-logout><i class=pe-7s-power></i> <span>{{:: \'panel.general.signOut\' | translate}}</span></a></div></div></div>'),a.put("/templates/framework/panel/directives/side-navigation/template.html",'<ul class="af-action-bar menu"><li ng-repeat="menu in vm.dataSource" class={{vm.getMenuClass(menu)}}><a ng-if=::menu.href href="{{:: menu.href}}" ng-click=vm.menuAction(menu)><i class="{{:: menu.icon}}"></i> <span ng-if=::menu.title>{{:: menu.title}}</span> <span ng-if=::menu.titleTranslate>{{:: menu.titleTranslate | translate}}</span></a> <a ng-if=::!menu.href ng-click=vm.menuAction(menu) href=javascript:void(0)><i class="{{:: menu.icon}}"></i> <span ng-if=::menu.title>{{:: menu.title}}</span> <span ng-if=::menu.titleTranslate>{{:: menu.titleTranslate | translate}}</span></a><ul ng-if="::(menu.type === undefined || menu.type === \'submenu\')"><li ng-repeat-start="cat in menu.categories" class=submenu-title><span ng-if=::cat.title>{{:: cat.title}}</span> <span ng-if=::cat.titleTranslate>{{:: cat.titleTranslate | translate}}</span></li><li ng-repeat="sub in cat.menus"><a ng-if=::sub.href class={{vm.getSubMenuClass(sub)}} href="{{:: sub.href}}"><i class="{{:: sub.icon}}"></i> <span ng-if=::sub.title>{{:: sub.title}}</span> <span ng-if=::sub.titleTranslate>{{:: sub.titleTranslate | translate}}</span></a> <a ng-if=::!sub.href class={{vm.getSubMenuClass(sub)}} ng-click=vm.subMenuAction(sub) href=javascript:void(0)><i class="{{:: sub.icon}}"></i> <span ng-if=::sub.title>{{:: sub.title}}</span> <span ng-if=::sub.titleTranslate>{{:: sub.titleTranslate | translate}}</span></a></li><li ng-repeat-end class=seperator></li></ul><side-navigation-extend ng-if=::menu.type tag=menu model=menu.type></side-navigation-extend></li></ul>'),a.put("/templates/framework/panel/directives/toolbar/template.html",'<div class="af-toolbar content-nav"><div class="navbar navbar-default content-nav-navbar"><div class=navbar-header><a data-toggle=collapse data-target=#navbar-collapse-2 class="navbar-toggle collapsed"><div class=icon></div></a> <a ng-if=::vm.dataSource.title href=javascript:void(0) class=navbar-brand>{{vm.dataSource.title}}</a> <a ng-if=::vm.dataSource.titleTranslate href=javascript:void(0) class=navbar-brand>{{vm.dataSource.titleTranslate | translate}}</a></div><div id=navbar-collapse-2 class="navbar-collapse collapse"><ul class="nav navbar-nav"><li ng-repeat="menu in vm.dataSource.menus" class="dropdown content-nav-navbar-fw"><a href=javascript:void(0) data-toggle=dropdown class=dropdown-toggle><span ng-if=::menu.title>{{:: menu.title}}</span> <span ng-if=::menu.titleTranslate>{{:: menu.titleTranslate | translate}}</span> <i class="dropdown-caret pe-7s-angle-down"></i></a><ul class=dropdown-menu><li><div class="content-nav-navbar-content p-b-0"><ul ng-if="::(menu.type === \'thumbnail\')" class="thumbnail-links row"><li ng-repeat="thumbnail in menu.thumbnails" class=col-sm-4><a ng-if=::thumbnail.href href={{::thumbnail.href}}><i class={{::thumbnail.icon}}></i><div ng-if=::thumbnail.title class=link-title>{{::thumbnail.title}}</div><div ng-if=::thumbnail.titleTranslate class=link-title>{{::thumbnail.titleTranslate | translate}}</div><p>{{::thumbnail.description}}</p></a> <a ng-if=::!thumbnail.href ng-click=vm.onAction(thumbnail) href=javascript:void(0)><i class={{::thumbnail.icon}}></i><div ng-if=::thumbnail.title class=link-title>{{::thumbnail.title}}</div><div ng-if=::thumbnail.titleTranslate class=link-title>{{::thumbnail.titleTranslate | translate}}</div><p>{{::thumbnail.description}}</p></a></li></ul><ul ng-if="::(menu.type === \'categories\')" class="categories-links row"><li ng-repeat="cat in menu.categories" class=col-sm-4><div ng-if=::cat.title class=category-title>{{::cat.title}}</div><div ng-if=::cat.titleTranslate class=category-title>{{::cat.titleTranslate | translate}}</div><ul><li ng-repeat="item in cat.items"><a ng-if=::item.href href={{::item.href}}><i class={{::item.icon}}></i> <span ng-if=::item.title>{{::item.title}}</span> <span ng-if=::item.titleTranslate>{{::item.titleTranslate|translate}}</span></a> <a ng-if=::!item.href href=javascript:void(0) ng-click=vm.onAction(item)><i class={{::item.icon}}></i> <span ng-if=::item.title>{{::item.title}}</span> <span ng-if=::item.titleTranslate>{{::item.titleTranslate|translate}}</span></a></li></ul></li></ul><ul ng-if="::(menu.type === \'gallery\')" class="gallery-links row"><li ng-repeat="item in menu.gallery" class=col-sm-3><a ng-if=::item.href href={{::item.href}}><img ng-src={{::item.image}} alt={{::item.title}}><div class=link-title>{{::item.title}}</div><p>{{::item.description}}</p></a> <a ng-if=::!item.href ng-click=vm.onAction(item) href=javascript:void(0)><img ng-src={{::item.image}} alt={{::item.title}}><div class=link-title>{{::item.title}}</div><p>{{::item.description}}</p></a></li></ul></div></li></ul></li></ul><ul ng-if=vm.dataSource.actions.length class="nav navbar-nav navbar-right"><li class=dropdown><a href=javascript:void(0) data-toggle=dropdown class=dropdown-toggle><span ng-if=::vm.dataSource.actionsTitle>{{::vm.dataSource.actionsTitle}}</span> <span ng-if=::vm.dataSource.actionsTitleTranslate>{{::vm.dataSource.actionsTitleTranslate | translate}}</span> <i class="dropdown-caret pe-7s-angle-down"></i></a><ul class=dropdown-menu><li ng-repeat="action in vm.dataSource.actions" class={{::action.cssClass}} ng-bind-html=action.content|to_trusted_html></li></ul></li></ul></div></div></div>')}])}(); |
@@ -6,3 +6,4 @@ (function ($, angular, underscore, window, document, undefined) { | ||
'$q', | ||
function ($http, $q) { | ||
'Upload', | ||
function ($http, $q, Upload) { | ||
var prefix = function (url) { | ||
@@ -17,2 +18,19 @@ return '/api/v1/' + url; | ||
return $http.post(prefix(path || ''), model || {}); | ||
}, | ||
upload: function (path, options) { | ||
Upload.upload({ | ||
url: prefix(path), | ||
data: options.data, | ||
arrayKey: '', | ||
file: options.file | ||
}).then(function (resp) { | ||
if (options.onSuccess) { | ||
options.onSuccess(resp.data); | ||
} | ||
}, options.onError, function (evt) { | ||
var percent = parseInt(100 * evt.loaded / evt.total); | ||
if (options.onProgress) { | ||
options.onProgress(percent, evt.config.data); | ||
} | ||
}); | ||
} | ||
@@ -178,10 +196,36 @@ }; | ||
'use strict'; | ||
angular.module('frontend.services').factory('notificationService', [function () { | ||
angular.module('frontend.services').factory('notificationService', [ | ||
'translateService', | ||
function (translateService) { | ||
return { | ||
error: function (message) { | ||
error: function (message, title, options, isTranslate) { | ||
if (isTranslate === undefined) | ||
isTranslate = true; | ||
if (isTranslate) { | ||
message = translateService(message); | ||
title = translateService(title); | ||
} | ||
toastr.error(message, title, options); | ||
}, | ||
success: function (message) { | ||
success: function (message, title, options, isTranslate) { | ||
if (isTranslate === undefined) | ||
isTranslate = true; | ||
if (isTranslate) { | ||
message = translateService(message); | ||
title = translateService(title); | ||
} | ||
toastr.success(message, title, options); | ||
}, | ||
info: function (message, title, options, isTranslate) { | ||
if (isTranslate === undefined) | ||
isTranslate = true; | ||
if (isTranslate) { | ||
message = translateService(message); | ||
title = translateService(title); | ||
} | ||
toastr.info(message, title, options); | ||
} | ||
}; | ||
}]); | ||
} | ||
]); | ||
}(jQuery, angular, _, window, document)); | ||
@@ -243,2 +287,8 @@ (function ($, angular, underscore, window, document, undefined) { | ||
}); | ||
$rootScope.constructor.prototype.$timeout = function (func, timeout) { | ||
var ctx = this; | ||
setTimeout(function () { | ||
ctx.$apply.call(ctx, func); | ||
}, timeout || 0); | ||
}; | ||
} | ||
@@ -289,7 +339,23 @@ ]); | ||
'use strict'; | ||
angular.module('frontend.filters').filter('cultured_date', function () { | ||
return function (input) { | ||
return input; | ||
}; | ||
}); | ||
angular.module('frontend.filters').filter('cultured_date', [ | ||
'cultureService', | ||
function (cultureService) { | ||
return function (input, culture, format) { | ||
format = format || 'yyyy-mm-dd'; | ||
var Calendar; | ||
switch (culture || cultureService.lang) { | ||
case 'fa': | ||
Calendar = PersianCalendar; | ||
break; | ||
case 'ar': | ||
Calendar = HijriCalendar; | ||
break; | ||
default: | ||
Calendar = GregorianCalendar; | ||
} | ||
var date = new Calendar(input); | ||
return format.replace('yyyy', date.year).replace('mm', date.month.pad(2)).replace('dd', date.day.pad(2)); | ||
}; | ||
} | ||
]); | ||
}(jQuery, angular, _, window, document)); | ||
@@ -300,3 +366,3 @@ (function ($, angular, underscore, window, document, undefined) { | ||
return function (input) { | ||
return input; | ||
return (input || 0).humanFileSize(); | ||
}; | ||
@@ -303,0 +369,0 @@ }); |
@@ -1,1 +0,1 @@ | ||
!function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("apiService",["$http","$q",function(t,n){var e=function(t){return"/api/v1/"+t};return{get:function(n,r){return t.get(e(n||""),r||{})},post:function(n,r){return t.post(e(n||""),r||{})}}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").run(["$rootScope","appWaitingService",function(t,n){t.$on("$routeChangeStart",function(){n.start()})}]).factory("appWaitingService",["$rootScope",function(t){return{stop:function(){t.appWaiting=!1},start:function(){t.appWaiting=!0}}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("commonService",["$compile","$rootScope","$timeout","$interval","$location","$q","cultureService","translateService","operationResult","uuid","layoutService",function(t,n,e,r,o,u,i,c,a,f,s){return{$compile:t,$rootScope:n,$timeout:e,$interval:r,$location:o,$q:u,culture:i,translate:c,OperationResult:a,uuid:f,layout:s}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("cultureService",[function(){return{lang:o.getElementsByTagName("html")[0].getAttribute("lang"),rtl:"rtl"===o.getElementsByTagName("html")[0].getAttribute("dir")}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("fileService",[function(){return{getExtention:function(t){var n=(t||"").lastIndexOf(".");return-1===n?t.toLowerCase():t.substring(n).toLowerCase()},isImage:function(t){return/\.(gif|jpg|bmp|jpeg|tiff|png)$/i.test(t)}}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("formService",["$q",function(t){return{validate:function(){return t(function(t,n){t(!0)})},getModel:function(n){return t(function(t,n){t({})})},setModel:function(n,e){return t(function(t,n){t()})}}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("identityService",["ipCookie",function(t){return{accountPath:"/{0}/account",setToken:function(n,e){t("userId",n,{path:"/"}),t("token",e,{path:"/"})},clearToken:function(){t.remove("userId",{path:"/"}),t.remove("token",{path:"/"})},getToken:function(){return t("token")}}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("layoutService",["$rootScope",function(t){var n={};return Object.defineProperty(n,"bodyClass",{get:function(){return t.layout||(t.layout={}),t.layout.bodyClass},set:function(n){t.layout||(t.layout={}),t.layout.bodyClass=n}}),n}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("notificationService",[function(){return{error:function(t){},success:function(t){}}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("recursion-helper",["$compile",function(t){return{compile:function(e,r){n.isFunction(r)&&(r={post:r});var o,u=e.contents().remove();return{pre:r&&r.pre?r.pre:null,post:function(n,e){o||(o=t(u)),o(n,function(t){e.append(t)}),r&&r.post&&r.post.apply(null,arguments)}}}}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").run(["$rootScope",function(t){Object.defineProperty(t.constructor.prototype,"$console",{get:function(){return console}})}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("translateService",[function(){return function(t){return r.achasoft.i18n[t]||t}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("validationService",[function(){return{extractErrors:function(t){if(!t)return[];if(Array.isArray(t))return t;var e=[];return Object.keys(t).forEach(function(r){var o=t[r];if(n.isString(o))e.push(o);else if(Array.isArray(o)&&o.length){var u=o[o.length-1];u.startsWith(r)?e.push(u):e.push("{0} {1}".format([r,u]))}}),e}}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.filters").filter("cultured_date",function(){return function(t){return t}})}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.filters").filter("human_size",function(){return function(t){return t}})}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.filters").filter("moment",function(){return function(t){return t}})}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.filters").filter("range",[function(){return function(t,n,e){e||(e=n,n=0);for(var r=n;r<e;r++)t.push(r);return t}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.filters").filter("translate",["translateService",function(t){return function(n){return t(n)}}]),n.module("frontend.filters").filter("textOrTranslate",["translateService",function(t){return function(n,e){return e?t(e):n||""}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.filters").filter("to_trusted_html",["$sce",function(t){return function(n){return t.trustAsHtml(n)}}])}(jQuery,angular,_,window,document); | ||
!function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("apiService",["$http","$q","Upload",function(t,n,e){var r=function(t){return"/api/v1/"+t};return{get:function(n,e){return t.get(r(n||""),e||{})},post:function(n,e){return t.post(r(n||""),e||{})},upload:function(t,n){e.upload({url:r(t),data:n.data,arrayKey:"",file:n.file}).then(function(t){n.onSuccess&&n.onSuccess(t.data)},n.onError,function(t){var e=parseInt(100*t.loaded/t.total);n.onProgress&&n.onProgress(e,t.config.data)})}}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").run(["$rootScope","appWaitingService",function(t,n){t.$on("$routeChangeStart",function(){n.start()})}]).factory("appWaitingService",["$rootScope",function(t){return{stop:function(){t.appWaiting=!1},start:function(){t.appWaiting=!0}}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("commonService",["$compile","$rootScope","$timeout","$interval","$location","$q","cultureService","translateService","operationResult","uuid","layoutService",function(t,n,e,r,o,u,i,c,a,s,f){return{$compile:t,$rootScope:n,$timeout:e,$interval:r,$location:o,$q:u,culture:i,translate:c,OperationResult:a,uuid:s,layout:f}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("cultureService",[function(){return{lang:o.getElementsByTagName("html")[0].getAttribute("lang"),rtl:"rtl"===o.getElementsByTagName("html")[0].getAttribute("dir")}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("fileService",[function(){return{getExtention:function(t){var n=(t||"").lastIndexOf(".");return-1===n?t.toLowerCase():t.substring(n).toLowerCase()},isImage:function(t){return/\.(gif|jpg|bmp|jpeg|tiff|png)$/i.test(t)}}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("formService",["$q",function(t){return{validate:function(){return t(function(t,n){t(!0)})},getModel:function(n){return t(function(t,n){t({})})},setModel:function(n,e){return t(function(t,n){t()})}}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("identityService",["ipCookie",function(t){return{accountPath:"/{0}/account",setToken:function(n,e){t("userId",n,{path:"/"}),t("token",e,{path:"/"})},clearToken:function(){t.remove("userId",{path:"/"}),t.remove("token",{path:"/"})},getToken:function(){return t("token")}}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("layoutService",["$rootScope",function(t){var n={};return Object.defineProperty(n,"bodyClass",{get:function(){return t.layout||(t.layout={}),t.layout.bodyClass},set:function(n){t.layout||(t.layout={}),t.layout.bodyClass=n}}),n}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("notificationService",["translateService",function(t){return{error:function(n,e,r,o){void 0===o&&(o=!0),o&&(n=t(n),e=t(e)),toastr.error(n,e,r)},success:function(n,e,r,o){void 0===o&&(o=!0),o&&(n=t(n),e=t(e)),toastr.success(n,e,r)},info:function(n,e,r,o){void 0===o&&(o=!0),o&&(n=t(n),e=t(e)),toastr.info(n,e,r)}}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("recursion-helper",["$compile",function(t){return{compile:function(e,r){n.isFunction(r)&&(r={post:r});var o,u=e.contents().remove();return{pre:r&&r.pre?r.pre:null,post:function(n,e){o||(o=t(u)),o(n,function(t){e.append(t)}),r&&r.post&&r.post.apply(null,arguments)}}}}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").run(["$rootScope",function(t){Object.defineProperty(t.constructor.prototype,"$console",{get:function(){return console}}),t.constructor.prototype.$timeout=function(t,n){var e=this;setTimeout(function(){e.$apply.call(e,t)},n||0)}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("translateService",[function(){return function(t){return r.achasoft.i18n[t]||t}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.services").factory("validationService",[function(){return{extractErrors:function(t){if(!t)return[];if(Array.isArray(t))return t;var e=[];return Object.keys(t).forEach(function(r){var o=t[r];if(n.isString(o))e.push(o);else if(Array.isArray(o)&&o.length){var u=o[o.length-1];u.startsWith(r)?e.push(u):e.push("{0} {1}".format([r,u]))}}),e}}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.filters").filter("cultured_date",["cultureService",function(t){return function(n,e,r){r=r||"yyyy-mm-dd";var o;switch(e||t.lang){case"fa":o=PersianCalendar;break;case"ar":o=HijriCalendar;break;default:o=GregorianCalendar}var u=new o(n);return r.replace("yyyy",u.year).replace("mm",u.month.pad(2)).replace("dd",u.day.pad(2))}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.filters").filter("human_size",function(){return function(t){return(t||0).humanFileSize()}})}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.filters").filter("moment",function(){return function(t){return t}})}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.filters").filter("range",[function(){return function(t,n,e){e||(e=n,n=0);for(var r=n;r<e;r++)t.push(r);return t}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.filters").filter("translate",["translateService",function(t){return function(n){return t(n)}}]),n.module("frontend.filters").filter("textOrTranslate",["translateService",function(t){return function(n,e){return e?t(e):n||""}}])}(jQuery,angular,_,window,document),function(t,n,e,r,o,u){"use strict";n.module("frontend.filters").filter("to_trusted_html",["$sce",function(t){return function(n){return t.trustAsHtml(n)}}])}(jQuery,angular,_,window,document); |
@@ -11,3 +11,3 @@ ;(function(){ | ||
$templateCache.put('/templates/framework/directives/calendar/template.html', '<div class="af-calendar af-component">calendar</div>'); | ||
$templateCache.put('/templates/framework/directives/calendar/template.html', '<div ng-show=visible class="af-calendar af-component {{::cssClass}} datepicker datepicker-orient-left datepicker-orient-top"><div ng-if="mode ===\'days\'" class=datepicker-days><table><thead><tr><th class="{{::vm.cultureService.rtl ? \'next\' : \'prev\'}}" ng-click=vm.forwardMonth()>«</th><th colspan=5 class=datepicker-switch ng-click="vm.switch(\'months\')">{{vm.getMonthName()}} {{vm.tempYear}}</th><th class="{{::vm.cultureService.rtl ? \'prev\' : \'next\'}}" ng-click=vm.backwardMonth()>»</th></tr><tr><th ng-repeat="title in ::vm.calendar.dayNamesShort" class=dow>{{::title}}</th></tr></thead><tbody><tr ng-repeat="week in vm.days"><td ng-repeat="day in ::week" ng-click="vm.update(day.year, day.month, day.number)" class="{{::day.old?\'old\':\'\'}} day {{!day.old &&day.number === vm.current.day?\'active\':\'\'}}">{{day.number}}</td></tr></tbody><tfoot><tr><th colspan=7 ng-click=vm.setToday() class=today>{{::\'general.today\'|translate}}</th></tr></tfoot></table></div><div ng-if="mode ===\'months\'" class=datepicker-months><table class=table-condensed><thead><tr><th class="{{::vm.cultureService.rtl ? \'next\' : \'prev\'}}" ng-click=vm.forwardYears(1)>«</th><th colspan=5 class=datepicker-switch ng-click="vm.switch(\'years\')">{{vm.tempYear}}</th><th class="{{::vm.cultureService.rtl ? \'prev\' : \'next\'}}" ng-click=vm.backwardYears(1)>»</th></tr></thead><tbody><tr><td colspan=7><span ng-repeat="name in vm.calendar.monthNames" ng-click=vm.updateMonth($index+1) class="month {{$index+1 === vm.current.month?\'active\':\'\'}}">{{::name}}</span></td></tr></tbody><tfoot><tr><th colspan=7 ng-click=vm.setToday() class=today>{{::\'general.today\'|translate}}</th></tr></tfoot></table></div><div ng-if="mode ===\'years\'" class=datepicker-years><table class=table-condensed><thead><tr><th class="{{::vm.cultureService.rtl ? \'next\' : \'prev\'}}" ng-click=vm.forwardYears(12)>«</th><th colspan=5 class=datepicker-switch ng-click="vm.switch(\'days\')">{{vm.tempYears[0]}}-{{vm.tempYears[vm.tempYears.length-1]}}</th><th class="{{::vm.cultureService.rtl ? \'prev\' : \'next\'}}" ng-click=vm.backwardYears(12)>»</th></tr></thead><tbody><tr><td colspan=7><span ng-click=vm.updateYear(year) ng-repeat="year in vm.tempYears" class="year {{year === vm.current.year?\'active\':\'\'}} {{::$first?\'old\':\'\'}} {{::$last?\'new\':\'\'}}">{{::year}}</span></td></tr></tbody><tfoot><tr><th colspan=7 ng-click=vm.setToday() class=today>{{::\'general.today\'|translate}}</th></tr></tfoot></table></div></div>'); | ||
@@ -20,3 +20,3 @@ $templateCache.put('/templates/framework/directives/captcha/template.html', '<div class="af-captcha af-component"><input type=text ng-model=model.value number-only maxlength=4 ng-readonly=vm.waiting> <img width=80 height=30 ng-src={{vm.image}}> <button ng-disabled=vm.waiting ng-click=vm.refresh()><i class="fa fa-refresh"></i></button></div>'); | ||
$templateCache.put('/templates/framework/directives/date-picker/template.html', '<div class="af-date-picker af-component">date-picker</div>'); | ||
$templateCache.put('/templates/framework/directives/date-picker/template.html', '<div ng-show=visible ng-click=vm.prevent($event) class="af-date-picker {{disabled?\'disabled\':\'\'}} af-component input-group {{::cssClass}}"><input ng-click=vm.toggle() value={{vm.model|cultured_date:culture:format}} class=form-control type=text readonly> <span ng-click=vm.toggle() class=input-group-addon><i class="fa fa-calendar"></i></span><div ng-if=vm.showPlate><calendar css-class="\'datepicker-dropdown dropdown-menu\'" culture=$parent.culture on-change=$parent.vm.onChange model=$parent.vm.model></calendar></div></div>'); | ||
@@ -27,11 +27,11 @@ $templateCache.put('/templates/framework/directives/dropdown/template.html', '<div ng-show=visible ng-click=vm.prevent($event) class="af-dropdown af-component dropdown {{vm.plate?\'open\':\'\'}} {{::cssClass}}"><button class="btn btn-default dropdown-toggle" ng-disabled=disabled||vm.waiting type=button ng-click=vm.toggle()> {{vm.getText()}} <span class=caret></span></button><ul ng-if=vm.plate class=dropdown-menu><li ng-if=::!item.separator class="{{item[valueField] === model ? \'active\' : \'\'}}" ng-repeat-start="item in items" ng-click=vm.onPick(item)><a href=javascript:void(0)>{{::item[textField]}}</a></li><li ng-repeat-end ng-if=::item.separator role=separator class=divider></li></ul></div>'); | ||
$templateCache.put('/templates/framework/directives/file-explorer/template.html', '<div class="af-file-explorer-preview af-component {{mode}}"><div class="clearfix details-tape"><div class="details name"><span class=details-text>{{:: \'general.name\'|translate}}</span> <i class="af-icon af-icon-chevron_up"></i><div class=show-settings><i ng-click="vm.showSort(\'namePlate\', $event)" class="af-icon af-icon-chevron_down"></i><ul ng-if=vm.namePlate class=details-menu><li ng-click="vm.onSort(\'name\', true, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortAscending\'|translate}}</span></a></li><li ng-click="vm.onSort(\'name\', false, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortDescending\'|translate}}</span></a></li></ul></div></div><div class="details date-modified"><span class=details-text>{{:: \'general.dateModified\'|translate}}</span><div class=show-settings><i class="af-icon af-icon-chevron_down"></i><ul ng-if=vm.datePlate class=details-menu><li ng-click="vm.onSort(\'date\', true, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortAscending\'|translate}}</span></a></li><li ng-click="vm.onSort(\'date\', false, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortDescending\'|translate}}</span></a></li></ul></div></div><div class="details type"><span class=details-text>{{:: \'general.type\'|translate}}</span><div class=show-settings><i class="af-icon af-icon-chevron_down"></i><ul ng-if=vm.typePlate class=details-menu><li ng-click="vm.onSort(\'type\', true, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortAscending\'|translate}}</span></a></li><li ng-click="vm.onSort(\'type\', false, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortDescending\'|translate}}</span></a></li></ul></div></div><div class="details size"><span class=details-text>{{:: \'general.size\'|translate}}</span><div class=show-settings><i class="af-icon af-icon-chevron_down"></i><ul ng-if=vm.sizePlate class=details-menu><li ng-click="vm.onSort(\'size\', true, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortAscending\'|translate}}</span></a></li><li ng-click="vm.onSort(\'size\', false, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortDescending\'|translate}}</span></a></li></ul></div></div></div><ul class=details-mode ng-click=vm.unSelect()><li ng-if="path !== \'/\'" ng-dblclick=vm.onParent() class="clearfix folder"><div class="details name folder-item"><i class="af-icon-50 af-icon-folder"></i> <span>..</span></div><span class="details date-modified"> </span> <span class="details type"> </span> <span class="details size"> </span></li><li ng-repeat="item in items|filter:search" ng-dblclick="vm.onDoubleClick(item, $event)" ng-click="vm.onClick(item, $event)" class="clearfix {{::item.folder?\'folder\':\'file\'}} {{item.selected?\'selected\':\'\'}}"><div class="details name {{::item.folder?\'folder\':\'file\'}}-item"><i class="af-icon-50 {{::vm.getIcon(item)}}"></i> <span>{{::item.name}}</span></div><span class="details date-modified">{{::item.date|cultured_date}}</span> <span class="details type">{{vm.getExtention(item)}}</span> <span class="details size">{{::item.size | human_size}}</span></li></ul></div>'); | ||
$templateCache.put('/templates/framework/directives/file-explorer/template.html', '<div class="af-file-explorer-preview af-component {{mode}}"><div class="clearfix details-tape"><div class="details name"><span class=details-text>{{:: \'general.name\'|translate}}</span> <i class="af-icon af-icon-chevron_up"></i><div class=show-settings><i ng-click="vm.showSort(\'namePlate\', $event)" class="af-icon af-icon-chevron_down"></i><ul ng-if=vm.namePlate class=details-menu><li ng-click="vm.onSort(\'name\', true, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortAscending\'|translate}}</span></a></li><li ng-click="vm.onSort(\'name\', false, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortDescending\'|translate}}</span></a></li></ul></div></div><div class="details date-modified"><span class=details-text>{{:: \'general.dateModified\'|translate}}</span><div class=show-settings><i class="af-icon af-icon-chevron_down"></i><ul ng-if=vm.datePlate class=details-menu><li ng-click="vm.onSort(\'date\', true, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortAscending\'|translate}}</span></a></li><li ng-click="vm.onSort(\'date\', false, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortDescending\'|translate}}</span></a></li></ul></div></div><div class="details type"><span class=details-text>{{:: \'general.type\'|translate}}</span><div class=show-settings><i class="af-icon af-icon-chevron_down"></i><ul ng-if=vm.typePlate class=details-menu><li ng-click="vm.onSort(\'type\', true, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortAscending\'|translate}}</span></a></li><li ng-click="vm.onSort(\'type\', false, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortDescending\'|translate}}</span></a></li></ul></div></div><div class="details size"><span class=details-text>{{:: \'general.size\'|translate}}</span><div class=show-settings><i class="af-icon af-icon-chevron_down"></i><ul ng-if=vm.sizePlate class=details-menu><li ng-click="vm.onSort(\'size\', true, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortAscending\'|translate}}</span></a></li><li ng-click="vm.onSort(\'size\', false, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortDescending\'|translate}}</span></a></li></ul></div></div></div><ul class=details-mode ng-click=vm.unSelect()><li ng-if="path !== \'/\'" ng-dblclick=vm.onParent() class="clearfix folder"><div class="details name folder-item"><i class="af-icon-50 af-icon-folder"></i> <span>..</span></div><span class="details date-modified"> </span> <span class="details type"> </span> <span class="details size"> </span></li><li ng-if=newFolder ng-dblclick=vm.onNewFolder() class="clearfix folder new-folder"><div class="details name folder-item"><i class="af-icon-50 af-icon-new-folder"></i> <input type=text ng-if=!vm.creating ng-click=vm.prevent($event) ng-dblclick=vm.prevent($event) ng-model=vm.newFolder on-enter=vm.onNewFolder()> <i ng-if=vm.creating class="fa fa-spin fa-spinner"></i></div><span class="details date-modified"> </span> <span class="details type"> </span> <span class="details size"> </span></li><li ng-repeat="item in items|filter:search" ng-dblclick="vm.onDoubleClick(item, $event)" ng-click="vm.onClick(item, $event)" class="clearfix {{::item.folder?\'folder\':\'file\'}} {{item.selected?\'selected\':\'\'}}"><div class="details name {{::item.folder?\'folder\':\'file\'}}-item"><i class="af-icon-50 {{::vm.getIcon(item)}}"></i> <i ng-if=item.updating class="fa fa-spinner fa-spin"></i> <span ng-if=!item.editting>{{::item.name}}</span> <input type=text ng-if=item.editting&&!item.updating ng-click=vm.prevent($event) ng-dblclick=vm.prevent($event) ng-model=item.newName on-enter=vm.onRename(item)></div><span class="details date-modified">{{::item.date|cultured_date}}</span> <span class="details type">{{vm.getExtention(item)}}</span> <span class="details size">{{::item.size | human_size}}</span></li></ul></div>'); | ||
$templateCache.put('/templates/framework/directives/file-manager/template.html', '<div ng-show=visible class="af-file-manager noselect af-component {{::cssClass}}"><div ng-if=::toolbar class="meta-container clearfix"><div class=info><i class="af-icon af-icon-binders_folder"></i> <span>{{::toolbarTitle|textOrTranslate:toolbarTitleTranslate}}</span></div><div class=actions><div class="af-drop-menu af-component"><a class=drop-handler href=javascript:void(0)><i class="af-icon af-icon-settings_3"></i> <span class=menu-title>{{::toolbarActionsTitle|textOrTranslate:toolbarActionsTitleTranslate}}</span> <i class="fa fa-caret-down"></i><ul class=menu-items><li ng-if=::!action.separator ng-repeat-start="action in toolbarActions" ng-click=vm.onAction(action)><div><i class={{::action.icon}}></i> <span class=menu-item-title>{{::action.title|textOrTranslate:action.titleTranslate}}</span></div></li><li ng-if=::action.separator ng-repeat-end class=separator></li></ul></a></div></div></div><div class=inner-container><ribbon buttons=vm.ribbon on-action=vm.onRibbonAction><step icon="\'af-icon af-icon-dossier_folder\'" title-translate="\'fileManager.operations\'"><section title-translate="\'fileManager.clipboard\'" name="\'clipboard\'"><button css-class="\'btn-copy\'" enabled=false key="\'copy\'" icon="\'af-icon af-icon-copy\'" title-translate="\'fileManager.copy\'"></button> <button css-class="\'btn-paste\'" enabled=false key="\'paste\'" icon="\'af-icon af-icon-paste\'" title-translate="\'fileManager.paste\'"></button> <button css-class="\'btn-cut\'" enabled=false key="\'cut\'" icon="\'af-icon af-icon-cut\'" title-translate="\'fileManager.cut\'"></button></section><section title-translate="\'fileManager.organize\'" name="\'organize\'"><button css-class="\'btn-delete\'" enabled=false key="\'delete\'" icon="\'af-icon af-icon-delete\'" title-translate="\'fileManager.delete\'"></button> <button css-class="\'btn-rename\'" enabled=false key="\'rename\'" icon="\'af-icon af-icon-rename\'" title-translate="\'fileManager.rename\'"></button></section><section title-translate="\'fileManager.new\'" name="\'new\'"><button css-class="\'btn-new\'" key="\'new-folder\'" icon="\'af-icon af-icon-new-folder\'" title-translate="\'fileManager.newFolder\'"></button></section><section title-translate="\'fileManager.transfer\'" name="\'transfer\'"><button css-class="\'btn-download\'" enabled=false key="\'download\'" icon="\'af-icon af-icon-download\'" title-translate="\'fileManager.download\'"></button> <button css-class="\'btn-upload\'" key="\'upload\'" icon="\'af-icon af-icon-upload\'" title-translate="\'fileManager.upload\'"></button></section><section title-translate="\'fileManager.open\'" name="\'open\'"><button css-class="\'btn-open\'" enabled=false key="\'open\'" icon="\'af-icon af-icon-open\'" title-translate="\'fileManager.open\'"></button> <button css-class="\'btn-preview\'" enabled=false key="\'preview\'" icon="\'af-icon af-icon-preview\'" title-translate="\'fileManager.preview\'"></button></section><section title-translate="\'fileManager.compression\'" name="\'compression\'"><button css-class="\'btn-add-to-zip\'" enabled=false key="\'zip\'" icon="\'af-icon af-icon-archive\'" title-translate="\'fileManager.addToZip\'"></button> <button css-class="\'btn-extract\'" enabled=false icon="\'af-icon af-icon-open_archive\'" title-translate="\'fileManager.extract\'"><sub-button icon="\'af-icon af-icon-file\'" key="\'extract-all\'" title-translate="\'fileManager.extractAllHere\'"></sub-button><sub-button icon="\'af-icon af-icon-folder\'" key="\'extract-seprate\'" title-translate="\'fileManager.extractSeprate\'"></sub-button></button></section><section title-translate="\'fileManager.selection\'" name="\'select\'"><button css-class="\'btn-select-all\'" inline=true icon="\'af-icon af-icon-select_all\'" key="\'select-all\'" title-translate="\'fileManager.selectAll\'"></button> <button css-class="\'btn-select-none\'" inline=true key="\'select-none\'" icon="\'af-icon af-icon-deselect_all\'" title-translate="\'fileManager.selectNone\'"></button> <button css-class="\'btn-select-invert\'" inline=true key="\'select-invert\'" icon="\'af-icon af-icon-invert_selection\'" title-translate="\'fileManager.invertSelection\'"></button></section></step><step icon="\'af-icon af-icon-columns\'" title-translate="\'fileManager.view\'"><section title-translate="\'fileManager.panes\'" name="\'panes\'"><button css-class="\'btn-navigation\'" toggle=true key="\'navigation-pane\'" icon="\'af-icon af-icon-close_pane_ltr\'" title-translate="\'fileManager.navigationPane\'"></button></section><section title-translate="\'fileManager.layout\'" name="\'layout\'"><column><button css-class="\'btn-ex-icon\'" toggle=true key="\'xlarge-icons\'" inline=true toggle-group="\'selection\'" icon="\'af-icon af-icon-xlarge_icons\'" title-translate="\'fileManager.xLargeIcons\'"></button> <button css-class="\'btn-m-icon\'" toggle=true inline=true key="\'medium-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-medium_icons\'" title-translate="\'fileManager.mediumIcons\'"></button> <button css-class="\'btn-d-icon\'" toggle=true inline=true key="\'details-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-details_icons\'" title-translate="\'fileManager.detailsIcons\'"></button></column><column><button css-class="\'btn-l-icon\'" toggle=true inline=true key="\'large-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-large_icons\'" title-translate="\'fileManager.largeIcons\'"></button> <button css-class="\'btn-s-icon\'" toggle=true inline=true key="\'small-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-small_icons\'" title-translate="\'fileManager.smallIcons\'"></button> <button css-class="\'btn-t-icon\'" toggle=true inline=true key="\'tiles-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-tiles_icons\'" title-translate="\'fileManager.tilesIcons\'"></button></column></section></step></ribbon><div class="af-navigation-bar af-component clearfix"><crumb-nav waiting=vm.waiting on-refresh=vm.onCrumbRefresh on-select=vm.onCrumbFolderPicked model=vm.crumbNav></crumb-nav><div class=search-container><div class="input-group clearfix"><input type=text ng-readonly=vm.waiting ng-model=vm.search placeholder={{::searchTitle|textOrTranslate:searchTitleTranslate}}><div class=prefix><button ng-disabled=vm.waiting ng-click=vm.refresh()><i class="af-icon af-icon-search"></i></button></div></div></div></div></div><div class="af-split-panel af-component {{vm.treeToggle? \'\' :\'no-tree\'}} clearfix"><div ng-if=vm.treeToggle class="panel folder-explorer-panel fixed"><tree on-node-expand=vm.onNodeExpand on-node-select=vm.onNodeSelect items=vm.tree></tree></div><div class=panel-handler><div class=panel-handler-button><button ng-click=vm.toggleExplorer($event)><i class="fa fa-caret-{{vm.treeToggle? \'left\' :\'right\'}}"></i></button></div></div><div class="panel file-explorer-panel"><waiting ng-if=vm.waiting></waiting><file-explorer ng-if=!vm.waiting path=vm.path mode=vm.mode multiple-selection=multipleSelection on-parent=vm.onExplorerParent on-double-select=vm.onExplorerDoubleSelect on-select=vm.onExplorerSelect search=vm.search items=vm.fileExplorer></file-explorer></div></div></div>'); | ||
$templateCache.put('/templates/framework/directives/file-manager/template.html', '<div ng-show=visible class="af-file-manager noselect af-component {{::cssClass}}"><div ng-if=::toolbar class="meta-container clearfix"><div class=info><i class="af-icon af-icon-binders_folder"></i> <span>{{::toolbarTitle|textOrTranslate:toolbarTitleTranslate}}</span></div><div class=actions><div class="af-drop-menu af-component"><a class=drop-handler href=javascript:void(0)><i class="af-icon af-icon-settings_3"></i> <span class=menu-title>{{::toolbarActionsTitle|textOrTranslate:toolbarActionsTitleTranslate}}</span> <i class="fa fa-caret-down"></i><ul class=menu-items><li ng-if=::!action.separator ng-repeat-start="action in toolbarActions" ng-click=vm.onAction(action)><div><i class={{::action.icon}}></i> <span class=menu-item-title>{{::action.title|textOrTranslate:action.titleTranslate}}</span></div></li><li ng-if=::action.separator ng-repeat-end class=separator></li></ul></a></div></div></div><div class=inner-container><ribbon buttons=vm.ribbon on-action=vm.onRibbonAction><step icon="\'af-icon af-icon-dossier_folder\'" title-translate="\'fileManager.operations\'"><section title-translate="\'fileManager.clipboard\'" name="\'clipboard\'"><button css-class="\'btn-copy\'" enabled=false key="\'copy\'" icon="\'af-icon af-icon-copy\'" title-translate="\'fileManager.copy\'"></button> <button css-class="\'btn-paste\'" enabled=false key="\'paste\'" icon="\'af-icon af-icon-paste\'" title-translate="\'fileManager.paste\'"></button> <button css-class="\'btn-cut\'" enabled=false key="\'cut\'" icon="\'af-icon af-icon-cut\'" title-translate="\'fileManager.cut\'"></button></section><section title-translate="\'fileManager.organize\'" name="\'organize\'"><button css-class="\'btn-delete\'" enabled=false key="\'delete\'" icon="\'af-icon af-icon-delete\'" title-translate="\'fileManager.delete\'"></button> <button css-class="\'btn-rename\'" enabled=false key="\'rename\'" icon="\'af-icon af-icon-rename\'" title-translate="\'fileManager.rename\'"></button></section><section title-translate="\'fileManager.new\'" name="\'new\'"><button css-class="\'btn-new\'" key="\'new-folder\'" icon="\'af-icon af-icon-new-folder\'" title-translate="\'fileManager.newFolder\'"></button></section><section title-translate="\'fileManager.transfer\'" name="\'transfer\'"><button css-class="\'btn-download\'" enabled=false key="\'download\'" icon="\'af-icon af-icon-download\'" title-translate="\'fileManager.download\'"></button> <button css-class="\'btn-upload\'" key="\'upload\'" icon="\'af-icon af-icon-upload\'" title-translate="\'fileManager.upload\'"></button></section><section title-translate="\'fileManager.open\'" name="\'open\'"><button css-class="\'btn-open\'" enabled=false key="\'open\'" icon="\'af-icon af-icon-open\'" title-translate="\'fileManager.open\'"></button> <button css-class="\'btn-preview\'" enabled=false key="\'preview\'" icon="\'af-icon af-icon-preview\'" title-translate="\'fileManager.preview\'"></button></section><section title-translate="\'fileManager.compression\'" name="\'compression\'"><button css-class="\'btn-add-to-zip\'" enabled=false key="\'zip\'" icon="\'af-icon af-icon-archive\'" title-translate="\'fileManager.addToZip\'"></button> <button css-class="\'btn-extract\'" enabled=false icon="\'af-icon af-icon-open_archive\'" title-translate="\'fileManager.extract\'"><sub-button icon="\'af-icon af-icon-file\'" key="\'extract-all\'" title-translate="\'fileManager.extractAllHere\'"></sub-button><sub-button icon="\'af-icon af-icon-folder\'" key="\'extract-seprate\'" title-translate="\'fileManager.extractSeprate\'"></sub-button></button></section><section title-translate="\'fileManager.selection\'" name="\'select\'"><button css-class="\'btn-select-all\'" inline=true icon="\'af-icon af-icon-select_all\'" key="\'select-all\'" title-translate="\'fileManager.selectAll\'"></button> <button css-class="\'btn-select-none\'" inline=true key="\'select-none\'" icon="\'af-icon af-icon-deselect_all\'" title-translate="\'fileManager.selectNone\'"></button> <button css-class="\'btn-select-invert\'" inline=true key="\'select-invert\'" icon="\'af-icon af-icon-invert_selection\'" title-translate="\'fileManager.invertSelection\'"></button></section></step><step icon="\'af-icon af-icon-columns\'" title-translate="\'fileManager.view\'"><section title-translate="\'fileManager.panes\'" name="\'panes\'"><button css-class="\'btn-navigation\'" toggle=true key="\'navigation-pane\'" icon="\'af-icon af-icon-close_pane_ltr\'" title-translate="\'fileManager.navigationPane\'"></button></section><section title-translate="\'fileManager.layout\'" name="\'layout\'"><column><button css-class="\'btn-ex-icon\'" toggle=true key="\'xlarge-icons\'" inline=true toggle-group="\'selection\'" icon="\'af-icon af-icon-xlarge_icons\'" title-translate="\'fileManager.xLargeIcons\'"></button> <button css-class="\'btn-m-icon\'" toggle=true inline=true key="\'medium-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-medium_icons\'" title-translate="\'fileManager.mediumIcons\'"></button> <button css-class="\'btn-d-icon\'" toggle=true inline=true key="\'details-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-details_icons\'" title-translate="\'fileManager.detailsIcons\'"></button></column><column><button css-class="\'btn-l-icon\'" toggle=true inline=true key="\'large-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-large_icons\'" title-translate="\'fileManager.largeIcons\'"></button> <button css-class="\'btn-s-icon\'" toggle=true inline=true key="\'small-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-small_icons\'" title-translate="\'fileManager.smallIcons\'"></button> <button css-class="\'btn-t-icon\'" toggle=true inline=true key="\'tiles-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-tiles_icons\'" title-translate="\'fileManager.tilesIcons\'"></button></column></section></step></ribbon><div class="af-navigation-bar af-component clearfix"><progressbar ng-if=vm.uploading model=vm.uploadPercent css-class="\'progress-xxs\'"></progressbar><crumb-nav waiting=vm.waiting on-refresh=vm.onCrumbRefresh on-select=vm.onCrumbFolderPicked model=vm.crumbNav></crumb-nav><div class=search-container><div class="input-group clearfix"><input type=text ng-readonly=vm.waiting ng-model=vm.search placeholder={{::searchTitle|textOrTranslate:searchTitleTranslate}}><div class=prefix><button ng-disabled=vm.waiting ng-click=vm.refresh()><i class="af-icon af-icon-search"></i></button></div></div></div></div></div><div class="af-split-panel af-component {{vm.treeToggle? \'\' :\'no-tree\'}} clearfix"><div ng-if=vm.treeToggle class="panel folder-explorer-panel fixed"><tree on-node-expand=vm.onNodeExpand on-node-select=vm.onNodeSelect items=vm.tree></tree></div><div class=panel-handler><div class=panel-handler-button><button ng-click=vm.toggleExplorer($event)><i class="fa fa-caret-{{vm.treeToggle? \'left\' :\'right\'}}"></i></button></div></div><div class="panel file-explorer-panel"><waiting ng-if=vm.waiting></waiting><file-explorer ng-if=!vm.waiting path=vm.path mode=vm.mode on-rename=vm.onExplorerRename new-folder=vm.newFolder on-new-folder=vm.onExplorerNewFolder multiple-selection=multipleSelection on-parent=vm.onExplorerParent on-double-select=vm.onExplorerDoubleSelect on-select=vm.onExplorerSelect search=vm.search items=vm.fileExplorer></file-explorer></div></div></div>'); | ||
$templateCache.put('/templates/framework/directives/file-picker/template.html', '<div class="af-file-picker af-component">file-picker</div>'); | ||
$templateCache.put('/templates/framework/directives/file-picker/template.html', '<div ng-show=visible class="af-file-picker af-component {{::cssClass}}"><div class=input-group><div class=input-group-btn><div class="btn btn-primary btn-file" ngf-select=vm.onSelect($files) ngf-pattern=pattern ngf-accept=accept ngf-multiple={{::multiple}} ngf-max-size={{::maxSize}} ngf-change="vm.onChange($files, $file, $newFiles, $duplicateFiles, $invalidFiles, $event)" ng-model=vm.model ngf-disabled="disabled || vm.uploading">{{::\'general.browse\'|translate}}…</div></div><input value={{vm.getText()}} type=text class=form-control readonly></div><div class=preview ng-if=::preview ng-repeat="item in model"><img width=200 ngf-thumbnail="item || \'/framework/images/placeholder.png\'"> <i class="delete fa fa-trash" ng-click=vm.remove(item)></i></div><progressbar ng-if=vm.uploading css-class="\'progress-xxs\'" model=vm.uploadPercent></progressbar></div>'); | ||
$templateCache.put('/templates/framework/directives/file-picker-server/template.html', '<div ng-show=visible class="af-file-picker-server af-component {{::cssClass}}"></div>'); | ||
$templateCache.put('/templates/framework/directives/file-picker-server/template.html', '<div ng-show=visible ng-click=vm.prevent($event) class="af-file-picker-server {{disabled?\'disabled\':\'\'}} af-component input-group {{::cssClass}}"><input ng-click=vm.togglePlate() value="{{model||\'\'}}" class=form-control placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}} type=text readonly> <span ng-click=vm.togglePlate() class=input-group-addon><i class="fa fa-globe"></i></span><div class="plate clearfix" ng-if=vm.plate><div class=tree-container><tree on-node-expand=vm.onNodeExpand on-node-select=vm.onNodeSelect items=vm.tree></tree></div><div class=explorer-container><waiting ng-if=vm.waiting></waiting><file-explorer ng-if=!vm.waiting path=vm.path mode="\'medium\'" multiple-selection=false on-parent=vm.onExplorerParent on-double-select=vm.onExplorerDoubleSelect on-select=vm.onExplorerSelect items=vm.fileExplorer></file-explorer></div></div></div>'); | ||
$templateCache.put('/templates/framework/directives/google-map/template.html', '<div class="af-grid-view af-component">grid-view</div>'); | ||
$templateCache.put('/templates/framework/directives/google-map/template.html', '<div class="af-google-map af-component"><waiting ng-if=waiting></waiting><div class=vw-google-map></div></div>'); | ||
@@ -54,3 +54,3 @@ $templateCache.put('/templates/framework/directives/grid-view/template.html', '<div class="af-grid-view af-component">grid-view</div>'); | ||
$templateCache.put('/templates/framework/directives/ribbon/template.html', '<div ng-show=visible class="af-ribbon af-component {{::cssClass}}"><div class=tabs-container><div class=tabs-header><ul><li ng-repeat="step in steps" class="{{step === vm.selectedStep ? \'active\' : \'\'}}"><a href=javascript:void(0) ng-click="vm.onPick(step, $event)"><i ng-if=::step.icon class={{::$eval(step.icon)}}></i> <span>{{::$eval(step.title)|textOrTranslate:$eval(step.titleTranslate)}}</span></a></li></ul></div><div class=tabs-content><div ng-click=vm.scrollRight() class="slide-handler left-slide-handler"><i class="fa fa-chevron-right"></i></div><div ng-click=vm.scrollLeft() class="slide-handler right-slide-handler"><i class="fa fa-chevron-left"></i></div><div class="tab-content clearfix active" ng-if="step === vm.selectedStep" ng-repeat="step in steps"><div ng-repeat="section in ::step.sections" class=section><div class="section-content {{::$eval(section.name)}}"><div class=section-content-column ng-repeat="column in ::section.columns"><div ng-repeat="button in ::column.buttons" class="button {{::button.inline?\'inline\':\'\'}} {{::button.toggle?\'toggle-button\':\'\'}} {{button.toggleState ? \'active\' : \'\'}} {{::$eval(button.cssClass)}}"><button ng-disabled=button.disabled ng-click=vm.onAction(button)><i class={{::$eval(button.icon)}}></i> <span>{{::$eval(button.title)|textOrTranslate:$eval(button.titleTranslate)}}</span></button></div></div><div ng-if=::!section.columns.length><div ng-repeat-start="button in ::section.buttons" ng-if=::!button.buttons.length class={{vm.getButtonClass(button)}}><button ng-disabled=!$eval(button.enabled) ng-click=vm.onAction(button)><i class={{::$eval(button.icon)}}></i> <span>{{::$eval(button.title)|textOrTranslate:$eval(button.titleTranslate)}}</span></button></div><div ng-repeat-end ng-if=::button.buttons.length class="af-drop-menu drop-button af-component {{$eval(button.enabled.toString()) ? \'\' : \'disabled\'}} {{::$eval(button.cssClass)}}"><a ng-click="vm.onExpandButton(button, $event)" class="drop-handler {{button.expand?\'active\': \'\'}}" href=javascript:void(0)><i class={{::$eval(button.icon)}}></i> <span>{{::$eval(button.title)|textOrTranslate:$eval(button.titleTranslate)}}</span> <i class="fa fa-caret-down"></i><ul class=menu-items><li ng-repeat="sub in ::button.buttons" ng-click=vm.onAction(sub)><div><i class={{::$eval(sub.icon)}}></i> <span class=menu-item-title>{{::$eval(sub.title)|textOrTranslate:$eval(sub.titleTranslate)}}</span></div></li></ul></a></div></div><div class=section-label>{{::($eval(section.title)|textOrTranslate:$eval(section.titleTranslate))}}</div></div></div></div></div></div></div>'); | ||
$templateCache.put('/templates/framework/directives/ribbon/template.html', '<div ng-show=visible class="af-ribbon af-component {{::cssClass}}"><div class=tabs-container><div class=tabs-header><ul><li ng-repeat="step in steps" class="{{step === vm.selectedStep ? \'active\' : \'\'}}"><a href=javascript:void(0) ng-click="vm.onPick(step, $event)"><i ng-if=::step.icon class={{::$eval(step.icon)}}></i> <span>{{::$eval(step.title)|textOrTranslate:$eval(step.titleTranslate)}}</span></a></li></ul></div><div class=tabs-content><div ng-click=vm.scrollRight() class="slide-handler left-slide-handler"><i class="fa fa-chevron-right"></i></div><div ng-click=vm.scrollLeft() class="slide-handler right-slide-handler"><i class="fa fa-chevron-left"></i></div><div class="tab-content clearfix active" ng-if="step === vm.selectedStep" ng-repeat="step in steps"><div ng-repeat="section in ::step.sections" class=section><div class="section-content {{::$eval(section.name)}}"><div class=section-content-column ng-repeat="column in ::section.columns"><div ng-repeat="button in ::column.buttons" class="button {{::button.inline?\'inline\':\'\'}} {{::button.toggle?\'toggle-button\':\'\'}} {{button.toggleState ? \'active\' : \'\'}} {{::$eval(button.cssClass)}}"><button ng-disabled=button.disabled ng-click=vm.onAction(button)><i class={{::$eval(button.icon)}}></i> <span>{{::$eval(button.title)|textOrTranslate:$eval(button.titleTranslate)}}</span></button></div></div><div ng-if=::!section.columns.length><div ng-repeat-start="button in ::section.buttons" ng-if=::!button.buttons.length class={{vm.getButtonClass(button)}}><button ng-disabled=!button.enabled ng-click=vm.onAction(button)><i class={{::$eval(button.icon)}}></i> <span>{{::$eval(button.title)|textOrTranslate:$eval(button.titleTranslate)}}</span></button></div><div ng-repeat-end ng-if=::button.buttons.length class="af-drop-menu drop-button af-component {{$eval(button.enabled.toString()) ? \'\' : \'disabled\'}} {{::$eval(button.cssClass)}}"><a ng-click="vm.onExpandButton(button, $event)" class="drop-handler {{button.expand?\'active\': \'\'}}" href=javascript:void(0)><i class={{::$eval(button.icon)}}></i> <span>{{::$eval(button.title)|textOrTranslate:$eval(button.titleTranslate)}}</span> <i class="fa fa-caret-down"></i><ul class=menu-items><li ng-repeat="sub in ::button.buttons" ng-click=vm.onAction(sub)><div><i class={{::$eval(sub.icon)}}></i> <span class=menu-item-title>{{::$eval(sub.title)|textOrTranslate:$eval(sub.titleTranslate)}}</span></div></li></ul></a></div></div><div class=section-label>{{::($eval(section.title)|textOrTranslate:$eval(section.titleTranslate))}}</div></div></div></div></div></div></div>'); | ||
@@ -63,6 +63,6 @@ $templateCache.put('/templates/framework/directives/slider/template.html', '<div class="af-slider af-component range-slider"><input type=text></div>'); | ||
$templateCache.put('/templates/framework/directives/tags/template.html', '<div ng-show=visible class="af-tags af-component bootstrap-tagsinput {{::cssClass}}"><span ng-repeat="item in model" class="tag label label-info">{{item}} <span ng-click=vm.onRemove(item) data-role=remove></span></span> <input type=text placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}} ng-model=vm.query on-enter=vm.onAdd() style="width: 10em !important;"></div>'); | ||
$templateCache.put('/templates/framework/directives/text-area/template.html', '<div ng-show=visible class="af-text-area af-component {{disabled?\'disabled\':\'\'}} form-group {{::cssClass}}"><textarea rows={{::rows}} ng-style="{resize: resize}" class=form-control ng-model=model></textarea></div>'); | ||
$templateCache.put('/templates/framework/directives/tags/template.html', '<div ng-show=visible class="af-tags af-component bootstrap-tagsinput {{::cssClass}}"><span ng-repeat="item in model" class="tag label label-info">{{item}} <span ng-click=vm.onRemove(item) data-role=remove></span></span> <input type=text placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}} ng-model=vm.query on-enter=vm.onAdd() style="width: 10em !important;"></div>'); | ||
$templateCache.put('/templates/framework/directives/textbox/template.html', '<div ng-show=visible class="af-textbox af-component {{disabled?\'disabled\':\'\'}} form-group {{::cssClass}}"><div ng-if=::prependIcon class=prepend-icon><input type=text class="form-control input-lg" ng-model=model ng-disabled=disabled ng-readonly=readonly placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}}> <i class={{::prependIcon}}></i></div><div ng-if=::appendIcon class=append-icon><input type=text class="form-control input-lg" ng-model=model ng-readonly=readonly ng-disabled=disabled placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}}> <i class={{::appendIcon}}></i></div><label ng-if=::label>{{::label}}</label> <label ng-if=::labelTranslate>{{::labelTranslate|translate}}</label> <input ng-if=::!(prependIcon||appendIcon) ng-model=model ng-readonly=readonly ng-disabled=disabled type=text class="form-control input-lg" placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}}></div>'); | ||
@@ -69,0 +69,0 @@ |
@@ -1,1 +0,2 @@ | ||
!function(){"use strict";angular.module("frontend.templates").run(["$templateCache",function(e){e.put("/templates/framework/layout/index.html",""),e.put("/templates/framework/directives/accordion/template.html",'<div ng-show=visible class="af-accordion af-component accordion panel-group {{::cssClass}}" role=tablist><div ng-repeat="step in steps" class="panel panel-default"><div class=panel-heading role=tab><div class=panel-title><a role=button href=javascript:void(0) data-toggle=collapse ng-click=vm.onPick(step) class="{{step !== model?\'collapsed\':\'\'}}"> {{$eval(step.title)|textOrTranslate:$eval(step.titleTranslate)}}</a></div></div><div class="panel-collapse {{step !== model?\'collapse\':\'\'}}" role=tabpanel><div class=panel-body ng-bind-html=step.content|to_trusted_html></div></div></div></div>'),e.put("/templates/framework/directives/calendar/template.html",'<div class="af-calendar af-component">calendar</div>'),e.put("/templates/framework/directives/captcha/template.html",'<div class="af-captcha af-component"><input type=text ng-model=model.value number-only maxlength=4 ng-readonly=vm.waiting> <img width=80 height=30 ng-src={{vm.image}}> <button ng-disabled=vm.waiting ng-click=vm.refresh()><i class="fa fa-refresh"></i></button></div>'),e.put("/templates/framework/directives/checkbox/template.html",'<div ng-show=visible class="af-checkbox af-component checkbox {{::cssClass}}" ng-click=vm.toggle($event)><label><input ng-disabled=disabled type=checkbox ng-model=model ng-checked="model===true"> <span class=text>{{::label|textOrTranslate:labelTranslate}}</span></label></div>'),e.put("/templates/framework/directives/crumb-nav/template.html",'<div ng-show=visible class="af-crumb-nav clearfix {{::cssClass}}"><div ng-click=vm.onRoot() class=parent-button-container><a href=javascript:void(0)><i class="af-icon af-icon-hdd"></i></a><div class=show-sub-folders><i class="af-icon af-icon-chevron_{{::vm.rtl ? \'left\':\'right\'}}"></i></div></div><div class=path-inner-container><div class="slide-handler left-slide-handler" ng-click=vm.scrollRight()><i class="fa fa-chevron-right"></i></div><div class="slide-handler right-slide-handler" ng-click=vm.scrollLeft()><i class="fa fa-chevron-left"></i></div><ul class="root-folders clearfix"><li ng-repeat="item in model" class="root-folder open"><a href=javascript:void(0) ng-click=vm.onAction(item)><i ng-if=::item.icon class={{::$eval(item.icon)}}></i> <span>{{::item.title|textOrTranslate:item.titleTranslate}}</span></a><div ng-if=::!$last class=show-sub-folders ng-click="vm.onExpand(item, $event)"><i class="af-icon af-icon-chevron_{{::vm.rtl ? \'left\':\'right\'}}"></i><ul ng-if=item.items.length&&item.expand class=sub-folders><li ng-repeat="sub in item.items"><a ng-click=vm.onAction(sub) href=javascript:void(0)><i ng-if=::sub.icon class={{::$eval(sub.icon)}}></i> <span>{{::sub.title|textOrTranslate:sub.titleTranslate}}</span></a></li></ul></div></li></ul></div><div class=refresh-button-container><button ng-disabled=waiting ng-click=vm.refresh()><i class="af-icon af-icon-refresh"></i></button></div></div>'),e.put("/templates/framework/directives/date-picker/template.html",'<div class="af-date-picker af-component">date-picker</div>'),e.put("/templates/framework/directives/dropdown/template.html","<div ng-show=visible ng-click=vm.prevent($event) class=\"af-dropdown af-component dropdown {{vm.plate?'open':''}} {{::cssClass}}\"><button class=\"btn btn-default dropdown-toggle\" ng-disabled=disabled||vm.waiting type=button ng-click=vm.toggle()> {{vm.getText()}} <span class=caret></span></button><ul ng-if=vm.plate class=dropdown-menu><li ng-if=::!item.separator class=\"{{item[valueField] === model ? 'active' : ''}}\" ng-repeat-start=\"item in items\" ng-click=vm.onPick(item)><a href=javascript:void(0)>{{::item[textField]}}</a></li><li ng-repeat-end ng-if=::item.separator role=separator class=divider></li></ul></div>"),e.put("/templates/framework/directives/editor/template.html",'<div ng-show=visible class="af-editor af-component {{::cssClass}}"><textarea id={{::vm.uuid}}></textarea></div>'),e.put("/templates/framework/directives/file-explorer/template.html",'<div class="af-file-explorer-preview af-component {{mode}}"><div class="clearfix details-tape"><div class="details name"><span class=details-text>{{:: \'general.name\'|translate}}</span> <i class="af-icon af-icon-chevron_up"></i><div class=show-settings><i ng-click="vm.showSort(\'namePlate\', $event)" class="af-icon af-icon-chevron_down"></i><ul ng-if=vm.namePlate class=details-menu><li ng-click="vm.onSort(\'name\', true, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortAscending\'|translate}}</span></a></li><li ng-click="vm.onSort(\'name\', false, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortDescending\'|translate}}</span></a></li></ul></div></div><div class="details date-modified"><span class=details-text>{{:: \'general.dateModified\'|translate}}</span><div class=show-settings><i class="af-icon af-icon-chevron_down"></i><ul ng-if=vm.datePlate class=details-menu><li ng-click="vm.onSort(\'date\', true, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortAscending\'|translate}}</span></a></li><li ng-click="vm.onSort(\'date\', false, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortDescending\'|translate}}</span></a></li></ul></div></div><div class="details type"><span class=details-text>{{:: \'general.type\'|translate}}</span><div class=show-settings><i class="af-icon af-icon-chevron_down"></i><ul ng-if=vm.typePlate class=details-menu><li ng-click="vm.onSort(\'type\', true, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortAscending\'|translate}}</span></a></li><li ng-click="vm.onSort(\'type\', false, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortDescending\'|translate}}</span></a></li></ul></div></div><div class="details size"><span class=details-text>{{:: \'general.size\'|translate}}</span><div class=show-settings><i class="af-icon af-icon-chevron_down"></i><ul ng-if=vm.sizePlate class=details-menu><li ng-click="vm.onSort(\'size\', true, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortAscending\'|translate}}</span></a></li><li ng-click="vm.onSort(\'size\', false, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortDescending\'|translate}}</span></a></li></ul></div></div></div><ul class=details-mode ng-click=vm.unSelect()><li ng-if="path !== \'/\'" ng-dblclick=vm.onParent() class="clearfix folder"><div class="details name folder-item"><i class="af-icon-50 af-icon-folder"></i> <span>..</span></div><span class="details date-modified"> </span> <span class="details type"> </span> <span class="details size"> </span></li><li ng-repeat="item in items|filter:search" ng-dblclick="vm.onDoubleClick(item, $event)" ng-click="vm.onClick(item, $event)" class="clearfix {{::item.folder?\'folder\':\'file\'}} {{item.selected?\'selected\':\'\'}}"><div class="details name {{::item.folder?\'folder\':\'file\'}}-item"><i class="af-icon-50 {{::vm.getIcon(item)}}"></i> <span>{{::item.name}}</span></div><span class="details date-modified">{{::item.date|cultured_date}}</span> <span class="details type">{{vm.getExtention(item)}}</span> <span class="details size">{{::item.size | human_size}}</span></li></ul></div>'),e.put("/templates/framework/directives/file-manager/template.html",'<div ng-show=visible class="af-file-manager noselect af-component {{::cssClass}}"><div ng-if=::toolbar class="meta-container clearfix"><div class=info><i class="af-icon af-icon-binders_folder"></i> <span>{{::toolbarTitle|textOrTranslate:toolbarTitleTranslate}}</span></div><div class=actions><div class="af-drop-menu af-component"><a class=drop-handler href=javascript:void(0)><i class="af-icon af-icon-settings_3"></i> <span class=menu-title>{{::toolbarActionsTitle|textOrTranslate:toolbarActionsTitleTranslate}}</span> <i class="fa fa-caret-down"></i><ul class=menu-items><li ng-if=::!action.separator ng-repeat-start="action in toolbarActions" ng-click=vm.onAction(action)><div><i class={{::action.icon}}></i> <span class=menu-item-title>{{::action.title|textOrTranslate:action.titleTranslate}}</span></div></li><li ng-if=::action.separator ng-repeat-end class=separator></li></ul></a></div></div></div><div class=inner-container><ribbon buttons=vm.ribbon on-action=vm.onRibbonAction><step icon="\'af-icon af-icon-dossier_folder\'" title-translate="\'fileManager.operations\'"><section title-translate="\'fileManager.clipboard\'" name="\'clipboard\'"><button css-class="\'btn-copy\'" enabled=false key="\'copy\'" icon="\'af-icon af-icon-copy\'" title-translate="\'fileManager.copy\'"></button> <button css-class="\'btn-paste\'" enabled=false key="\'paste\'" icon="\'af-icon af-icon-paste\'" title-translate="\'fileManager.paste\'"></button> <button css-class="\'btn-cut\'" enabled=false key="\'cut\'" icon="\'af-icon af-icon-cut\'" title-translate="\'fileManager.cut\'"></button></section><section title-translate="\'fileManager.organize\'" name="\'organize\'"><button css-class="\'btn-delete\'" enabled=false key="\'delete\'" icon="\'af-icon af-icon-delete\'" title-translate="\'fileManager.delete\'"></button> <button css-class="\'btn-rename\'" enabled=false key="\'rename\'" icon="\'af-icon af-icon-rename\'" title-translate="\'fileManager.rename\'"></button></section><section title-translate="\'fileManager.new\'" name="\'new\'"><button css-class="\'btn-new\'" key="\'new-folder\'" icon="\'af-icon af-icon-new-folder\'" title-translate="\'fileManager.newFolder\'"></button></section><section title-translate="\'fileManager.transfer\'" name="\'transfer\'"><button css-class="\'btn-download\'" enabled=false key="\'download\'" icon="\'af-icon af-icon-download\'" title-translate="\'fileManager.download\'"></button> <button css-class="\'btn-upload\'" key="\'upload\'" icon="\'af-icon af-icon-upload\'" title-translate="\'fileManager.upload\'"></button></section><section title-translate="\'fileManager.open\'" name="\'open\'"><button css-class="\'btn-open\'" enabled=false key="\'open\'" icon="\'af-icon af-icon-open\'" title-translate="\'fileManager.open\'"></button> <button css-class="\'btn-preview\'" enabled=false key="\'preview\'" icon="\'af-icon af-icon-preview\'" title-translate="\'fileManager.preview\'"></button></section><section title-translate="\'fileManager.compression\'" name="\'compression\'"><button css-class="\'btn-add-to-zip\'" enabled=false key="\'zip\'" icon="\'af-icon af-icon-archive\'" title-translate="\'fileManager.addToZip\'"></button> <button css-class="\'btn-extract\'" enabled=false icon="\'af-icon af-icon-open_archive\'" title-translate="\'fileManager.extract\'"><sub-button icon="\'af-icon af-icon-file\'" key="\'extract-all\'" title-translate="\'fileManager.extractAllHere\'"></sub-button><sub-button icon="\'af-icon af-icon-folder\'" key="\'extract-seprate\'" title-translate="\'fileManager.extractSeprate\'"></sub-button></button></section><section title-translate="\'fileManager.selection\'" name="\'select\'"><button css-class="\'btn-select-all\'" inline=true icon="\'af-icon af-icon-select_all\'" key="\'select-all\'" title-translate="\'fileManager.selectAll\'"></button> <button css-class="\'btn-select-none\'" inline=true key="\'select-none\'" icon="\'af-icon af-icon-deselect_all\'" title-translate="\'fileManager.selectNone\'"></button> <button css-class="\'btn-select-invert\'" inline=true key="\'select-invert\'" icon="\'af-icon af-icon-invert_selection\'" title-translate="\'fileManager.invertSelection\'"></button></section></step><step icon="\'af-icon af-icon-columns\'" title-translate="\'fileManager.view\'"><section title-translate="\'fileManager.panes\'" name="\'panes\'"><button css-class="\'btn-navigation\'" toggle=true key="\'navigation-pane\'" icon="\'af-icon af-icon-close_pane_ltr\'" title-translate="\'fileManager.navigationPane\'"></button></section><section title-translate="\'fileManager.layout\'" name="\'layout\'"><column><button css-class="\'btn-ex-icon\'" toggle=true key="\'xlarge-icons\'" inline=true toggle-group="\'selection\'" icon="\'af-icon af-icon-xlarge_icons\'" title-translate="\'fileManager.xLargeIcons\'"></button> <button css-class="\'btn-m-icon\'" toggle=true inline=true key="\'medium-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-medium_icons\'" title-translate="\'fileManager.mediumIcons\'"></button> <button css-class="\'btn-d-icon\'" toggle=true inline=true key="\'details-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-details_icons\'" title-translate="\'fileManager.detailsIcons\'"></button></column><column><button css-class="\'btn-l-icon\'" toggle=true inline=true key="\'large-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-large_icons\'" title-translate="\'fileManager.largeIcons\'"></button> <button css-class="\'btn-s-icon\'" toggle=true inline=true key="\'small-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-small_icons\'" title-translate="\'fileManager.smallIcons\'"></button> <button css-class="\'btn-t-icon\'" toggle=true inline=true key="\'tiles-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-tiles_icons\'" title-translate="\'fileManager.tilesIcons\'"></button></column></section></step></ribbon><div class="af-navigation-bar af-component clearfix"><crumb-nav waiting=vm.waiting on-refresh=vm.onCrumbRefresh on-select=vm.onCrumbFolderPicked model=vm.crumbNav></crumb-nav><div class=search-container><div class="input-group clearfix"><input type=text ng-readonly=vm.waiting ng-model=vm.search placeholder={{::searchTitle|textOrTranslate:searchTitleTranslate}}><div class=prefix><button ng-disabled=vm.waiting ng-click=vm.refresh()><i class="af-icon af-icon-search"></i></button></div></div></div></div></div><div class="af-split-panel af-component {{vm.treeToggle? \'\' :\'no-tree\'}} clearfix"><div ng-if=vm.treeToggle class="panel folder-explorer-panel fixed"><tree on-node-expand=vm.onNodeExpand on-node-select=vm.onNodeSelect items=vm.tree></tree></div><div class=panel-handler><div class=panel-handler-button><button ng-click=vm.toggleExplorer($event)><i class="fa fa-caret-{{vm.treeToggle? \'left\' :\'right\'}}"></i></button></div></div><div class="panel file-explorer-panel"><waiting ng-if=vm.waiting></waiting><file-explorer ng-if=!vm.waiting path=vm.path mode=vm.mode multiple-selection=multipleSelection on-parent=vm.onExplorerParent on-double-select=vm.onExplorerDoubleSelect on-select=vm.onExplorerSelect search=vm.search items=vm.fileExplorer></file-explorer></div></div></div>'),e.put("/templates/framework/directives/file-picker/template.html",'<div class="af-file-picker af-component">file-picker</div>'),e.put("/templates/framework/directives/file-picker-server/template.html",'<div ng-show=visible class="af-file-picker-server af-component {{::cssClass}}"></div>'),e.put("/templates/framework/directives/google-map/template.html",'<div class="af-grid-view af-component">grid-view</div>'),e.put("/templates/framework/directives/grid-view/template.html",'<div class="af-grid-view af-component">grid-view</div>'),e.put("/templates/framework/directives/modal/confirm.html","<div class=confirm-body><h3>{{message|textOrTranslate:messageTranslate}}</h3></div>"),e.put("/templates/framework/directives/modal/template.html",'<div class="af-modal af-component modal fade in {{::cssClass}}" role=dialog style="display: block" id={{::uuid}}><div class="modal-dialog modal-lg"><div class=modal-content><div class=modal-header><button ng-click=vm.dismiss() type=button class=close data-dismiss=modal aria-label=Close><span aria-hidden=true>×</span></button><h4 class=modal-title> {{title|textOrTranslate:titleTranslate}}</h4></div><div class=modal-body></div><div class=modal-footer><button type=button ng-disabled="disabled || vm.waiting" ng-click=vm.accept() class="btn btn-primary" data-dismiss=modal><i ng-if=vm.waiting class="fa fa-spinner fa-spin"></i> {{::\'general.accept\'|translate}}</button> <button type=button ng-click=vm.dismiss() class="btn btn-default" data-dismiss=modal>{{::\'general.close\'|translate}}</button></div></div></div></div>'),e.put("/templates/framework/directives/multi-select/template.html",'<div ng-show=visible class="af-multi-select af-component" dir=ltr ng-click=vm.prevent($event)><div style="width: 100%" class="select2 select2-container select2-container--default select2-container--below {{vm.plate?\'select2-container--open\':\'\'}}"><div ng-click=vm.togglePlate() class=selection><div class="select2-selection select2-selection--multiple" role=combobox aria-autocomplete=list aria-haspopup=true aria-expanded=true tabindex=0 aria-owns=select2-e2-results><ul class=select2-selection__rendered><li ng-repeat="item in model" class=select2-selection__choice title={{::item[textField]}}><span ng-click=vm.onDelete($event,item) class=select2-selection__choice__remove role=presentation>×</span> {{::item[textField]}}</li></ul></div></div><span class=dropdown-wrapper aria-hidden=true></span></div><div ng-if=vm.plate show-panel="{width: width, height: panelHeight}" class="select2-container select2-container--default select2-container--open"><span class="select2-dropdown select2-dropdown--below"><span class=select2-results><ul class=select2-results__options role=tree aria-multiselectable=true id=select2-e2-results aria-expanded=true aria-hidden=false><li ng-repeat="item in items" ng-click="vm.onAdd($event, item)" class=select2-results__option role=treeitem aria-selected="{{model.indexOf(item) !== -1}}">{{::item[textField]}}</li></ul></span></span></div></div>'),e.put("/templates/framework/directives/numbox/template.html",'<div ng-show=visible class="af-numbox af-component spinbox {{::cssClass}}"><input type=text ng-disabled=disabled ng-readonly=readonly number-only ng-model=model class="form-control input-mini spinbox-input"><div class="spinbox-buttons btn-group btn-group-vertical"><button type=button ng-click=vm.increase() ng-disabled=disabled class="btn btn-default spinbox-up btn-xs"><span class=pe-7s-angle-up></span> <span class=sr-only>Increase</span></button> <button type=button ng-click=vm.decrease() ng-disabled=disabled class="btn btn-default spinbox-down btn-xs"><span class=pe-7s-angle-down></span> <span class=sr-only>Decrease</span></button></div></div>'),e.put("/templates/framework/directives/password/template.html",'<div ng-show=visible class="af-password af-component {{disabled?\'disabled\':\'\'}} form-group {{::cssClass}}"><div ng-if=::prependIcon class=prepend-icon><input type=password class="form-control input-lg" ng-model=model ng-disabled=disabled ng-readonly=readonly placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}}> <i class={{::prependIcon}}></i></div><div ng-if=::appendIcon class=append-icon><input type=password class="form-control input-lg" ng-model=model ng-readonly=readonly ng-disabled=disabled placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}}> <i class={{::appendIcon}}></i></div><label ng-if=::label>{{::label}}</label> <label ng-if=::labelTranslate>{{::labelTranslate|translate}}</label> <input ng-if=::!(prependIcon||appendIcon) ng-model=model ng-readonly=readonly ng-disabled=disabled type=password class="form-control input-lg" placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}}></div>'),e.put("/templates/framework/directives/progressbar/template.html","<div ng-show=visible class=\"progress af-component {{::cssClass}} {{::(border?'progress-bordered':'')}}\"><div class=\"progress-bar progress-bar-primary\" role=progressbar ng-style=\"{width: model + '%'}\"><span class=sr-only>{{model}}% Complete (success)</span></div></div>"),e.put("/templates/framework/directives/radio/template.html",'<div ng-show=visible class="af-radio af-component form-group {{::cssClass}}"><div ng-repeat="radio in items" ng-click=vm.onPick(radio) class="radio {{::inline?\'radio-inline\':\'\'}}"><label><input type=radio ng-checked="model === radio[valueField]"> <span class=text>{{::radio[textField]}}</span></label></div></div>'),e.put("/templates/framework/directives/ribbon/template.html",'<div ng-show=visible class="af-ribbon af-component {{::cssClass}}"><div class=tabs-container><div class=tabs-header><ul><li ng-repeat="step in steps" class="{{step === vm.selectedStep ? \'active\' : \'\'}}"><a href=javascript:void(0) ng-click="vm.onPick(step, $event)"><i ng-if=::step.icon class={{::$eval(step.icon)}}></i> <span>{{::$eval(step.title)|textOrTranslate:$eval(step.titleTranslate)}}</span></a></li></ul></div><div class=tabs-content><div ng-click=vm.scrollRight() class="slide-handler left-slide-handler"><i class="fa fa-chevron-right"></i></div><div ng-click=vm.scrollLeft() class="slide-handler right-slide-handler"><i class="fa fa-chevron-left"></i></div><div class="tab-content clearfix active" ng-if="step === vm.selectedStep" ng-repeat="step in steps"><div ng-repeat="section in ::step.sections" class=section><div class="section-content {{::$eval(section.name)}}"><div class=section-content-column ng-repeat="column in ::section.columns"><div ng-repeat="button in ::column.buttons" class="button {{::button.inline?\'inline\':\'\'}} {{::button.toggle?\'toggle-button\':\'\'}} {{button.toggleState ? \'active\' : \'\'}} {{::$eval(button.cssClass)}}"><button ng-disabled=button.disabled ng-click=vm.onAction(button)><i class={{::$eval(button.icon)}}></i> <span>{{::$eval(button.title)|textOrTranslate:$eval(button.titleTranslate)}}</span></button></div></div><div ng-if=::!section.columns.length><div ng-repeat-start="button in ::section.buttons" ng-if=::!button.buttons.length class={{vm.getButtonClass(button)}}><button ng-disabled=!$eval(button.enabled) ng-click=vm.onAction(button)><i class={{::$eval(button.icon)}}></i> <span>{{::$eval(button.title)|textOrTranslate:$eval(button.titleTranslate)}}</span></button></div><div ng-repeat-end ng-if=::button.buttons.length class="af-drop-menu drop-button af-component {{$eval(button.enabled.toString()) ? \'\' : \'disabled\'}} {{::$eval(button.cssClass)}}"><a ng-click="vm.onExpandButton(button, $event)" class="drop-handler {{button.expand?\'active\': \'\'}}" href=javascript:void(0)><i class={{::$eval(button.icon)}}></i> <span>{{::$eval(button.title)|textOrTranslate:$eval(button.titleTranslate)}}</span> <i class="fa fa-caret-down"></i><ul class=menu-items><li ng-repeat="sub in ::button.buttons" ng-click=vm.onAction(sub)><div><i class={{::$eval(sub.icon)}}></i> <span class=menu-item-title>{{::$eval(sub.title)|textOrTranslate:$eval(sub.titleTranslate)}}</span></div></li></ul></a></div></div><div class=section-label>{{::($eval(section.title)|textOrTranslate:$eval(section.titleTranslate))}}</div></div></div></div></div></div></div>'),e.put("/templates/framework/directives/slider/template.html",'<div class="af-slider af-component range-slider"><input type=text></div>'),e.put("/templates/framework/directives/switch/template.html",'<label ng-show=visible class="af-switch af-component {{::cssClass}}" ng-click=vm.toggle($event)><input ng-disabled=disabled class=switch ng-model=model ng-checked="model===true" type=checkbox> <span class=text></span></label>'),e.put("/templates/framework/directives/tabs/template.html","<div ng-show=visible class=\"af-tabs af-component {{::cssClass}} {{:: position === 'right'? 'tabs-right':''}} {{:: position === 'left'? 'tabs-left':''}}\"><ul ng-if=\"position !== 'bottom'\" class=\"nav nav-tabs\" role=tablist><li role=presentation ng-repeat=\"step in steps\" class=\"{{step.disabled ?'disabled':''}} {{::step.cssClass}} {{step === model ? 'active' : ''}}\"><a href=javascript:void(0) ng-click=\"vm.prepareForPick(step, $event)\"><i ng-if=::step.icon class={{::$eval(step.icon)}}></i> <span> {{::$eval(step.title)|textOrTranslate:$eval(step.titleTranslate)}}</span></a></li></ul><div class=tab-content><div role=tabpanel ng-repeat=\"step in steps\" ng-if=\"(keepScope)||(step === model)\" ng-bind-html=step.content|to_trusted_html class=\"tab-pane {{::step.cssClass}} {{step === model ? 'active' : ''}}\"></div></div><ul ng-if=\"position === 'bottom' || position === undefined\" class=\"nav nav-tabs\" role=tablist><li role=presentation ng-repeat=\"step in steps\" class=\"{{step.disabled ?'disabled':''}} {{::step.cssClass}} {{step === model ? 'active' : ''}}\"><a href=javascript:void(0) role=tab ng-click=vm.onPick(step) data-toggle=tab><i ng-if=::step.icon class={{::$eval(step.icon)}}></i> <span> {{::$eval(step.title)|textOrTranslate:$eval(step.titleTranslate)}}</span></a></li></ul></div>"),e.put("/templates/framework/directives/text-area/template.html","<div ng-show=visible class=\"af-text-area af-component {{disabled?'disabled':''}} form-group {{::cssClass}}\"><textarea rows={{::rows}} ng-style=\"{resize: resize}\" class=form-control ng-model=model></textarea></div>"),e.put("/templates/framework/directives/tags/template.html",'<div ng-show=visible class="af-tags af-component bootstrap-tagsinput {{::cssClass}}"><span ng-repeat="item in model" class="tag label label-info">{{item}} <span ng-click=vm.onRemove(item) data-role=remove></span></span> <input type=text placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}} ng-model=vm.query on-enter=vm.onAdd() style="width: 10em !important;"></div>'),e.put("/templates/framework/directives/textbox/template.html",'<div ng-show=visible class="af-textbox af-component {{disabled?\'disabled\':\'\'}} form-group {{::cssClass}}"><div ng-if=::prependIcon class=prepend-icon><input type=text class="form-control input-lg" ng-model=model ng-disabled=disabled ng-readonly=readonly placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}}> <i class={{::prependIcon}}></i></div><div ng-if=::appendIcon class=append-icon><input type=text class="form-control input-lg" ng-model=model ng-readonly=readonly ng-disabled=disabled placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}}> <i class={{::appendIcon}}></i></div><label ng-if=::label>{{::label}}</label> <label ng-if=::labelTranslate>{{::labelTranslate|translate}}</label> <input ng-if=::!(prependIcon||appendIcon) ng-model=model ng-readonly=readonly ng-disabled=disabled type=text class="form-control input-lg" placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}}></div>'),e.put("/templates/framework/directives/tree/template.html",'<div class="af-tree af-component"><tree-container is-root=true uuid=uuid parent=null items=items></tree-container></div>'),e.put("/templates/framework/directives/tree/tree-container.html",'<ul class="{{::isRoot?\'tree-root-container\':\'\'}} tree-container"><li ng-repeat="node in items" class="tree-node {{node.expanded ? \'expanded\' : \'\'}}"><div class="active {{node.selected?\'selected\':\'\'}}"><span ng-click="vm.onExpand(node, $event)" class=child-info><i ng-if=!node.waiting class="af-icon {{vm.getNodeIcon(node)}}"></i></span> <span ng-click="vm.onPick(node, $event)" class=node-info><i ng-if=!node.waiting class="af-icon {{vm.getNodeClass(node)}}"></i> <i ng-if=node.waiting class="fa fa-spinner fa-spin"></i> <span class=node-text>{{::node.title|textOrTranslate:node.titleTranslate}}</span></span></div><tree-container ng-if="node.expanded && node.items && node.items.length" uuid=uuid is-root=false parent=node items=node.items></tree-container></li></ul>'),e.put("/templates/framework/directives/validation-messages/template.html",'<div class="af-validation-messages af-component"><ul ng-if=model.length><li ng-repeat="error in model"><i class="{{::(error.icon?error.icon:\'fa fa-info\')}}"></i> <span>{{::error.message}}</span></li></ul></div>'),e.put("/templates/framework/directives/waiting/template.html",'<div class="af-waiting af-component"><div class=inner-container><div class=binding></div><div class=pad><div class="line line1"></div><div class="line line2"></div><div class="line line3"></div></div></div></div>'),e.put("/templates/framework/directives/wizard/template.html",'<div ng-show=visible class="af-wizard af-component {{::cssClass}}"><tabs disabled=disabled tag=tag keep-scope=keepScope position=position on-changed=onChanged on-enter=onEnter on-exit=onExit prevent-pick=true trigger-pick=vm.triggerPick model=model steps=steps></tabs><ul class="navigation clearfix"><li><button class="btn btn-primary next" ng-disabled=disabled||vm.nextDisabled ng-click=vm.onNext()><i class="fa fa-arrow-left"></i> {{::(nextText|textOrTranslate:nextTextTranslate)}}</button></li><li><button class="btn btn-primary back" ng-disabled=disabled||vm.backDisabled ng-click=vm.onBack()>{{::(backText|textOrTranslate:backTextTranslate)}} <i class="fa fa-arrow-right"></i></button></li></ul></div>')}])}(); | ||
!function(){"use strict";angular.module("frontend.templates").run(["$templateCache",function(e){e.put("/templates/framework/layout/index.html",""),e.put("/templates/framework/directives/accordion/template.html",'<div ng-show=visible class="af-accordion af-component accordion panel-group {{::cssClass}}" role=tablist><div ng-repeat="step in steps" class="panel panel-default"><div class=panel-heading role=tab><div class=panel-title><a role=button href=javascript:void(0) data-toggle=collapse ng-click=vm.onPick(step) class="{{step !== model?\'collapsed\':\'\'}}"> {{$eval(step.title)|textOrTranslate:$eval(step.titleTranslate)}}</a></div></div><div class="panel-collapse {{step !== model?\'collapse\':\'\'}}" role=tabpanel><div class=panel-body ng-bind-html=step.content|to_trusted_html></div></div></div></div>'),e.put("/templates/framework/directives/calendar/template.html","<div ng-show=visible class=\"af-calendar af-component {{::cssClass}} datepicker datepicker-orient-left datepicker-orient-top\"><div ng-if=\"mode ==='days'\" class=datepicker-days><table><thead><tr><th class=\"{{::vm.cultureService.rtl ? 'next' : 'prev'}}\" ng-click=vm.forwardMonth()>«</th><th colspan=5 class=datepicker-switch ng-click=\"vm.switch('months')\">{{vm.getMonthName()}} {{vm.tempYear}}</th><th class=\"{{::vm.cultureService.rtl ? 'prev' : 'next'}}\" ng-click=vm.backwardMonth()>»</th></tr><tr><th ng-repeat=\"title in ::vm.calendar.dayNamesShort\" class=dow>{{::title}}</th></tr></thead><tbody><tr ng-repeat=\"week in vm.days\"><td ng-repeat=\"day in ::week\" ng-click=\"vm.update(day.year, day.month, day.number)\" class=\"{{::day.old?'old':''}} day {{!day.old &&day.number === vm.current.day?'active':''}}\">{{day.number}}</td></tr></tbody><tfoot><tr><th colspan=7 ng-click=vm.setToday() class=today>{{::'general.today'|translate}}</th></tr></tfoot></table></div><div ng-if=\"mode ==='months'\" class=datepicker-months><table class=table-condensed><thead><tr><th class=\"{{::vm.cultureService.rtl ? 'next' : 'prev'}}\" ng-click=vm.forwardYears(1)>«</th><th colspan=5 class=datepicker-switch ng-click=\"vm.switch('years')\">{{vm.tempYear}}</th><th class=\"{{::vm.cultureService.rtl ? 'prev' : 'next'}}\" ng-click=vm.backwardYears(1)>»</th></tr></thead><tbody><tr><td colspan=7><span ng-repeat=\"name in vm.calendar.monthNames\" ng-click=vm.updateMonth($index+1) class=\"month {{$index+1 === vm.current.month?'active':''}}\">{{::name}}</span></td></tr></tbody><tfoot><tr><th colspan=7 ng-click=vm.setToday() class=today>{{::'general.today'|translate}}</th></tr></tfoot></table></div><div ng-if=\"mode ==='years'\" class=datepicker-years><table class=table-condensed><thead><tr><th class=\"{{::vm.cultureService.rtl ? 'next' : 'prev'}}\" ng-click=vm.forwardYears(12)>«</th><th colspan=5 class=datepicker-switch ng-click=\"vm.switch('days')\">{{vm.tempYears[0]}}-{{vm.tempYears[vm.tempYears.length-1]}}</th><th class=\"{{::vm.cultureService.rtl ? 'prev' : 'next'}}\" ng-click=vm.backwardYears(12)>»</th></tr></thead><tbody><tr><td colspan=7><span ng-click=vm.updateYear(year) ng-repeat=\"year in vm.tempYears\" class=\"year {{year === vm.current.year?'active':''}} {{::$first?'old':''}} {{::$last?'new':''}}\">{{::year}}</span></td></tr></tbody><tfoot><tr><th colspan=7 ng-click=vm.setToday() class=today>{{::'general.today'|translate}}</th></tr></tfoot></table></div></div>"),e.put("/templates/framework/directives/captcha/template.html",'<div class="af-captcha af-component"><input type=text ng-model=model.value number-only maxlength=4 ng-readonly=vm.waiting> <img width=80 height=30 ng-src={{vm.image}}> <button ng-disabled=vm.waiting ng-click=vm.refresh()><i class="fa fa-refresh"></i></button></div>'),e.put("/templates/framework/directives/checkbox/template.html",'<div ng-show=visible class="af-checkbox af-component checkbox {{::cssClass}}" ng-click=vm.toggle($event)><label><input ng-disabled=disabled type=checkbox ng-model=model ng-checked="model===true"> <span class=text>{{::label|textOrTranslate:labelTranslate}}</span></label></div>'),e.put("/templates/framework/directives/crumb-nav/template.html",'<div ng-show=visible class="af-crumb-nav clearfix {{::cssClass}}"><div ng-click=vm.onRoot() class=parent-button-container><a href=javascript:void(0)><i class="af-icon af-icon-hdd"></i></a><div class=show-sub-folders><i class="af-icon af-icon-chevron_{{::vm.rtl ? \'left\':\'right\'}}"></i></div></div><div class=path-inner-container><div class="slide-handler left-slide-handler" ng-click=vm.scrollRight()><i class="fa fa-chevron-right"></i></div><div class="slide-handler right-slide-handler" ng-click=vm.scrollLeft()><i class="fa fa-chevron-left"></i></div><ul class="root-folders clearfix"><li ng-repeat="item in model" class="root-folder open"><a href=javascript:void(0) ng-click=vm.onAction(item)><i ng-if=::item.icon class={{::$eval(item.icon)}}></i> <span>{{::item.title|textOrTranslate:item.titleTranslate}}</span></a><div ng-if=::!$last class=show-sub-folders ng-click="vm.onExpand(item, $event)"><i class="af-icon af-icon-chevron_{{::vm.rtl ? \'left\':\'right\'}}"></i><ul ng-if=item.items.length&&item.expand class=sub-folders><li ng-repeat="sub in item.items"><a ng-click=vm.onAction(sub) href=javascript:void(0)><i ng-if=::sub.icon class={{::$eval(sub.icon)}}></i> <span>{{::sub.title|textOrTranslate:sub.titleTranslate}}</span></a></li></ul></div></li></ul></div><div class=refresh-button-container><button ng-disabled=waiting ng-click=vm.refresh()><i class="af-icon af-icon-refresh"></i></button></div></div>'),e.put("/templates/framework/directives/date-picker/template.html","<div ng-show=visible ng-click=vm.prevent($event) class=\"af-date-picker {{disabled?'disabled':''}} af-component input-group {{::cssClass}}\"><input ng-click=vm.toggle() value={{vm.model|cultured_date:culture:format}} class=form-control type=text readonly> <span ng-click=vm.toggle() class=input-group-addon><i class=\"fa fa-calendar\"></i></span><div ng-if=vm.showPlate><calendar css-class=\"'datepicker-dropdown dropdown-menu'\" culture=$parent.culture on-change=$parent.vm.onChange model=$parent.vm.model></calendar></div></div>"),e.put("/templates/framework/directives/dropdown/template.html","<div ng-show=visible ng-click=vm.prevent($event) class=\"af-dropdown af-component dropdown {{vm.plate?'open':''}} {{::cssClass}}\"><button class=\"btn btn-default dropdown-toggle\" ng-disabled=disabled||vm.waiting type=button ng-click=vm.toggle()> {{vm.getText()}} <span class=caret></span></button><ul ng-if=vm.plate class=dropdown-menu><li ng-if=::!item.separator class=\"{{item[valueField] === model ? 'active' : ''}}\" ng-repeat-start=\"item in items\" ng-click=vm.onPick(item)><a href=javascript:void(0)>{{::item[textField]}}</a></li><li ng-repeat-end ng-if=::item.separator role=separator class=divider></li></ul></div>"),e.put("/templates/framework/directives/editor/template.html",'<div ng-show=visible class="af-editor af-component {{::cssClass}}"><textarea id={{::vm.uuid}}></textarea></div>'),e.put("/templates/framework/directives/file-explorer/template.html",'<div class="af-file-explorer-preview af-component {{mode}}"><div class="clearfix details-tape"><div class="details name"><span class=details-text>{{:: \'general.name\'|translate}}</span> <i class="af-icon af-icon-chevron_up"></i><div class=show-settings><i ng-click="vm.showSort(\'namePlate\', $event)" class="af-icon af-icon-chevron_down"></i><ul ng-if=vm.namePlate class=details-menu><li ng-click="vm.onSort(\'name\', true, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortAscending\'|translate}}</span></a></li><li ng-click="vm.onSort(\'name\', false, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortDescending\'|translate}}</span></a></li></ul></div></div><div class="details date-modified"><span class=details-text>{{:: \'general.dateModified\'|translate}}</span><div class=show-settings><i class="af-icon af-icon-chevron_down"></i><ul ng-if=vm.datePlate class=details-menu><li ng-click="vm.onSort(\'date\', true, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortAscending\'|translate}}</span></a></li><li ng-click="vm.onSort(\'date\', false, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortDescending\'|translate}}</span></a></li></ul></div></div><div class="details type"><span class=details-text>{{:: \'general.type\'|translate}}</span><div class=show-settings><i class="af-icon af-icon-chevron_down"></i><ul ng-if=vm.typePlate class=details-menu><li ng-click="vm.onSort(\'type\', true, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortAscending\'|translate}}</span></a></li><li ng-click="vm.onSort(\'type\', false, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortDescending\'|translate}}</span></a></li></ul></div></div><div class="details size"><span class=details-text>{{:: \'general.size\'|translate}}</span><div class=show-settings><i class="af-icon af-icon-chevron_down"></i><ul ng-if=vm.sizePlate class=details-menu><li ng-click="vm.onSort(\'size\', true, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortAscending\'|translate}}</span></a></li><li ng-click="vm.onSort(\'size\', false, $event)"><a href=javascript:void(0)><i></i> <span>{{:: \'general.sortDescending\'|translate}}</span></a></li></ul></div></div></div><ul class=details-mode ng-click=vm.unSelect()><li ng-if="path !== \'/\'" ng-dblclick=vm.onParent() class="clearfix folder"><div class="details name folder-item"><i class="af-icon-50 af-icon-folder"></i> <span>..</span></div><span class="details date-modified"> </span> <span class="details type"> </span> <span class="details size"> </span></li><li ng-if=newFolder ng-dblclick=vm.onNewFolder() class="clearfix folder new-folder"><div class="details name folder-item"><i class="af-icon-50 af-icon-new-folder"></i> <input type=text ng-if=!vm.creating ng-click=vm.prevent($event) ng-dblclick=vm.prevent($event) ng-model=vm.newFolder on-enter=vm.onNewFolder()> <i ng-if=vm.creating class="fa fa-spin fa-spinner"></i></div><span class="details date-modified"> </span> <span class="details type"> </span> <span class="details size"> </span></li><li ng-repeat="item in items|filter:search" ng-dblclick="vm.onDoubleClick(item, $event)" ng-click="vm.onClick(item, $event)" class="clearfix {{::item.folder?\'folder\':\'file\'}} {{item.selected?\'selected\':\'\'}}"><div class="details name {{::item.folder?\'folder\':\'file\'}}-item"><i class="af-icon-50 {{::vm.getIcon(item)}}"></i> <i ng-if=item.updating class="fa fa-spinner fa-spin"></i> <span ng-if=!item.editting>{{::item.name}}</span> <input type=text ng-if=item.editting&&!item.updating ng-click=vm.prevent($event) ng-dblclick=vm.prevent($event) ng-model=item.newName on-enter=vm.onRename(item)></div><span class="details date-modified">{{::item.date|cultured_date}}</span> <span class="details type">{{vm.getExtention(item)}}</span> <span class="details size">{{::item.size | human_size}}</span></li></ul></div>'),e.put("/templates/framework/directives/file-manager/template.html",'<div ng-show=visible class="af-file-manager noselect af-component {{::cssClass}}"><div ng-if=::toolbar class="meta-container clearfix"><div class=info><i class="af-icon af-icon-binders_folder"></i> <span>{{::toolbarTitle|textOrTranslate:toolbarTitleTranslate}}</span></div><div class=actions><div class="af-drop-menu af-component"><a class=drop-handler href=javascript:void(0)><i class="af-icon af-icon-settings_3"></i> <span class=menu-title>{{::toolbarActionsTitle|textOrTranslate:toolbarActionsTitleTranslate}}</span> <i class="fa fa-caret-down"></i><ul class=menu-items><li ng-if=::!action.separator ng-repeat-start="action in toolbarActions" ng-click=vm.onAction(action)><div><i class={{::action.icon}}></i> <span class=menu-item-title>{{::action.title|textOrTranslate:action.titleTranslate}}</span></div></li><li ng-if=::action.separator ng-repeat-end class=separator></li></ul></a></div></div></div><div class=inner-container><ribbon buttons=vm.ribbon on-action=vm.onRibbonAction><step icon="\'af-icon af-icon-dossier_folder\'" title-translate="\'fileManager.operations\'"><section title-translate="\'fileManager.clipboard\'" name="\'clipboard\'"><button css-class="\'btn-copy\'" enabled=false key="\'copy\'" icon="\'af-icon af-icon-copy\'" title-translate="\'fileManager.copy\'"></button> <button css-class="\'btn-paste\'" enabled=false key="\'paste\'" icon="\'af-icon af-icon-paste\'" title-translate="\'fileManager.paste\'"></button> <button css-class="\'btn-cut\'" enabled=false key="\'cut\'" icon="\'af-icon af-icon-cut\'" title-translate="\'fileManager.cut\'"></button></section><section title-translate="\'fileManager.organize\'" name="\'organize\'"><button css-class="\'btn-delete\'" enabled=false key="\'delete\'" icon="\'af-icon af-icon-delete\'" title-translate="\'fileManager.delete\'"></button> <button css-class="\'btn-rename\'" enabled=false key="\'rename\'" icon="\'af-icon af-icon-rename\'" title-translate="\'fileManager.rename\'"></button></section><section title-translate="\'fileManager.new\'" name="\'new\'"><button css-class="\'btn-new\'" key="\'new-folder\'" icon="\'af-icon af-icon-new-folder\'" title-translate="\'fileManager.newFolder\'"></button></section><section title-translate="\'fileManager.transfer\'" name="\'transfer\'"><button css-class="\'btn-download\'" enabled=false key="\'download\'" icon="\'af-icon af-icon-download\'" title-translate="\'fileManager.download\'"></button> <button css-class="\'btn-upload\'" key="\'upload\'" icon="\'af-icon af-icon-upload\'" title-translate="\'fileManager.upload\'"></button></section><section title-translate="\'fileManager.open\'" name="\'open\'"><button css-class="\'btn-open\'" enabled=false key="\'open\'" icon="\'af-icon af-icon-open\'" title-translate="\'fileManager.open\'"></button> <button css-class="\'btn-preview\'" enabled=false key="\'preview\'" icon="\'af-icon af-icon-preview\'" title-translate="\'fileManager.preview\'"></button></section><section title-translate="\'fileManager.compression\'" name="\'compression\'"><button css-class="\'btn-add-to-zip\'" enabled=false key="\'zip\'" icon="\'af-icon af-icon-archive\'" title-translate="\'fileManager.addToZip\'"></button> <button css-class="\'btn-extract\'" enabled=false icon="\'af-icon af-icon-open_archive\'" title-translate="\'fileManager.extract\'"><sub-button icon="\'af-icon af-icon-file\'" key="\'extract-all\'" title-translate="\'fileManager.extractAllHere\'"></sub-button><sub-button icon="\'af-icon af-icon-folder\'" key="\'extract-seprate\'" title-translate="\'fileManager.extractSeprate\'"></sub-button></button></section><section title-translate="\'fileManager.selection\'" name="\'select\'"><button css-class="\'btn-select-all\'" inline=true icon="\'af-icon af-icon-select_all\'" key="\'select-all\'" title-translate="\'fileManager.selectAll\'"></button> <button css-class="\'btn-select-none\'" inline=true key="\'select-none\'" icon="\'af-icon af-icon-deselect_all\'" title-translate="\'fileManager.selectNone\'"></button> <button css-class="\'btn-select-invert\'" inline=true key="\'select-invert\'" icon="\'af-icon af-icon-invert_selection\'" title-translate="\'fileManager.invertSelection\'"></button></section></step><step icon="\'af-icon af-icon-columns\'" title-translate="\'fileManager.view\'"><section title-translate="\'fileManager.panes\'" name="\'panes\'"><button css-class="\'btn-navigation\'" toggle=true key="\'navigation-pane\'" icon="\'af-icon af-icon-close_pane_ltr\'" title-translate="\'fileManager.navigationPane\'"></button></section><section title-translate="\'fileManager.layout\'" name="\'layout\'"><column><button css-class="\'btn-ex-icon\'" toggle=true key="\'xlarge-icons\'" inline=true toggle-group="\'selection\'" icon="\'af-icon af-icon-xlarge_icons\'" title-translate="\'fileManager.xLargeIcons\'"></button> <button css-class="\'btn-m-icon\'" toggle=true inline=true key="\'medium-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-medium_icons\'" title-translate="\'fileManager.mediumIcons\'"></button> <button css-class="\'btn-d-icon\'" toggle=true inline=true key="\'details-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-details_icons\'" title-translate="\'fileManager.detailsIcons\'"></button></column><column><button css-class="\'btn-l-icon\'" toggle=true inline=true key="\'large-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-large_icons\'" title-translate="\'fileManager.largeIcons\'"></button> <button css-class="\'btn-s-icon\'" toggle=true inline=true key="\'small-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-small_icons\'" title-translate="\'fileManager.smallIcons\'"></button> <button css-class="\'btn-t-icon\'" toggle=true inline=true key="\'tiles-icons\'" toggle-group="\'selection\'" icon="\'af-icon af-icon-tiles_icons\'" title-translate="\'fileManager.tilesIcons\'"></button></column></section></step></ribbon><div class="af-navigation-bar af-component clearfix"><progressbar ng-if=vm.uploading model=vm.uploadPercent css-class="\'progress-xxs\'"></progressbar><crumb-nav waiting=vm.waiting on-refresh=vm.onCrumbRefresh on-select=vm.onCrumbFolderPicked model=vm.crumbNav></crumb-nav><div class=search-container><div class="input-group clearfix"><input type=text ng-readonly=vm.waiting ng-model=vm.search placeholder={{::searchTitle|textOrTranslate:searchTitleTranslate}}><div class=prefix><button ng-disabled=vm.waiting ng-click=vm.refresh()><i class="af-icon af-icon-search"></i></button></div></div></div></div></div><div class="af-split-panel af-component {{vm.treeToggle? \'\' :\'no-tree\'}} clearfix"><div ng-if=vm.treeToggle class="panel folder-explorer-panel fixed"><tree on-node-expand=vm.onNodeExpand on-node-select=vm.onNodeSelect items=vm.tree></tree></div><div class=panel-handler><div class=panel-handler-button><button ng-click=vm.toggleExplorer($event)><i class="fa fa-caret-{{vm.treeToggle? \'left\' :\'right\'}}"></i></button></div></div><div class="panel file-explorer-panel"><waiting ng-if=vm.waiting></waiting><file-explorer ng-if=!vm.waiting path=vm.path mode=vm.mode on-rename=vm.onExplorerRename new-folder=vm.newFolder on-new-folder=vm.onExplorerNewFolder multiple-selection=multipleSelection on-parent=vm.onExplorerParent on-double-select=vm.onExplorerDoubleSelect on-select=vm.onExplorerSelect search=vm.search items=vm.fileExplorer></file-explorer></div></div></div>'),e.put("/templates/framework/directives/file-picker/template.html",'<div ng-show=visible class="af-file-picker af-component {{::cssClass}}"><div class=input-group><div class=input-group-btn><div class="btn btn-primary btn-file" ngf-select=vm.onSelect($files) ngf-pattern=pattern ngf-accept=accept ngf-multiple={{::multiple}} ngf-max-size={{::maxSize}} ngf-change="vm.onChange($files, $file, $newFiles, $duplicateFiles, $invalidFiles, $event)" ng-model=vm.model ngf-disabled="disabled || vm.uploading">{{::\'general.browse\'|translate}}…</div></div><input value={{vm.getText()}} type=text class=form-control readonly></div><div class=preview ng-if=::preview ng-repeat="item in model"><img width=200 ngf-thumbnail="item || \'/framework/images/placeholder.png\'"> <i class="delete fa fa-trash" ng-click=vm.remove(item)></i></div><progressbar ng-if=vm.uploading css-class="\'progress-xxs\'" model=vm.uploadPercent></progressbar></div>'),e.put("/templates/framework/directives/file-picker-server/template.html",'<div ng-show=visible ng-click=vm.prevent($event) class="af-file-picker-server {{disabled?\'disabled\':\'\'}} af-component input-group {{::cssClass}}"><input ng-click=vm.togglePlate() value="{{model||\'\'}}" class=form-control placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}} type=text readonly> <span ng-click=vm.togglePlate() class=input-group-addon><i class="fa fa-globe"></i></span><div class="plate clearfix" ng-if=vm.plate><div class=tree-container><tree on-node-expand=vm.onNodeExpand on-node-select=vm.onNodeSelect items=vm.tree></tree></div><div class=explorer-container><waiting ng-if=vm.waiting></waiting><file-explorer ng-if=!vm.waiting path=vm.path mode="\'medium\'" multiple-selection=false on-parent=vm.onExplorerParent on-double-select=vm.onExplorerDoubleSelect on-select=vm.onExplorerSelect items=vm.fileExplorer></file-explorer></div></div></div>'),e.put("/templates/framework/directives/google-map/template.html",'<div class="af-google-map af-component"><waiting ng-if=waiting></waiting><div class=vw-google-map></div></div>'),e.put("/templates/framework/directives/grid-view/template.html",'<div class="af-grid-view af-component">grid-view</div>'),e.put("/templates/framework/directives/modal/confirm.html","<div class=confirm-body><h3>{{message|textOrTranslate:messageTranslate}}</h3></div>"),e.put("/templates/framework/directives/modal/template.html",'<div class="af-modal af-component modal fade in {{::cssClass}}" role=dialog style="display: block" id={{::uuid}}><div class="modal-dialog modal-lg"><div class=modal-content><div class=modal-header><button ng-click=vm.dismiss() type=button class=close data-dismiss=modal aria-label=Close><span aria-hidden=true>×</span></button><h4 class=modal-title> {{title|textOrTranslate:titleTranslate}}</h4></div><div class=modal-body></div><div class=modal-footer><button type=button ng-disabled="disabled || vm.waiting" ng-click=vm.accept() class="btn btn-primary" data-dismiss=modal><i ng-if=vm.waiting class="fa fa-spinner fa-spin"></i> {{::\'general.accept\'|translate}}</button> <button type=button ng-click=vm.dismiss() class="btn btn-default" data-dismiss=modal>{{::\'general.close\'|translate}}</button></div></div></div></div>'),e.put("/templates/framework/directives/multi-select/template.html",'<div ng-show=visible class="af-multi-select af-component" dir=ltr ng-click=vm.prevent($event)><div style="width: 100%" class="select2 select2-container select2-container--default select2-container--below {{vm.plate?\'select2-container--open\':\'\'}}"><div ng-click=vm.togglePlate() class=selection><div class="select2-selection select2-selection--multiple" role=combobox aria-autocomplete=list aria-haspopup=true aria-expanded=true tabindex=0 aria-owns=select2-e2-results><ul class=select2-selection__rendered><li ng-repeat="item in model" class=select2-selection__choice title={{::item[textField]}}><span ng-click=vm.onDelete($event,item) class=select2-selection__choice__remove role=presentation>×</span> {{::item[textField]}}</li></ul></div></div><span class=dropdown-wrapper aria-hidden=true></span></div><div ng-if=vm.plate show-panel="{width: width, height: panelHeight}" class="select2-container select2-container--default select2-container--open"><span class="select2-dropdown select2-dropdown--below"><span class=select2-results><ul class=select2-results__options role=tree aria-multiselectable=true id=select2-e2-results aria-expanded=true aria-hidden=false><li ng-repeat="item in items" ng-click="vm.onAdd($event, item)" class=select2-results__option role=treeitem aria-selected="{{model.indexOf(item) !== -1}}">{{::item[textField]}}</li></ul></span></span></div></div>'),e.put("/templates/framework/directives/numbox/template.html",'<div ng-show=visible class="af-numbox af-component spinbox {{::cssClass}}"><input type=text ng-disabled=disabled ng-readonly=readonly number-only ng-model=model class="form-control input-mini spinbox-input"><div class="spinbox-buttons btn-group btn-group-vertical"><button type=button ng-click=vm.increase() ng-disabled=disabled class="btn btn-default spinbox-up btn-xs"><span class=pe-7s-angle-up></span> <span class=sr-only>Increase</span></button> <button type=button ng-click=vm.decrease() ng-disabled=disabled class="btn btn-default spinbox-down btn-xs"><span class=pe-7s-angle-down></span> <span class=sr-only>Decrease</span></button></div></div>'),e.put("/templates/framework/directives/password/template.html",'<div ng-show=visible class="af-password af-component {{disabled?\'disabled\':\'\'}} form-group {{::cssClass}}"><div ng-if=::prependIcon class=prepend-icon><input type=password class="form-control input-lg" ng-model=model ng-disabled=disabled ng-readonly=readonly placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}}> <i class={{::prependIcon}}></i></div><div ng-if=::appendIcon class=append-icon><input type=password class="form-control input-lg" ng-model=model ng-readonly=readonly ng-disabled=disabled placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}}> <i class={{::appendIcon}}></i></div><label ng-if=::label>{{::label}}</label> <label ng-if=::labelTranslate>{{::labelTranslate|translate}}</label> <input ng-if=::!(prependIcon||appendIcon) ng-model=model ng-readonly=readonly ng-disabled=disabled type=password class="form-control input-lg" placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}}></div>'),e.put("/templates/framework/directives/progressbar/template.html","<div ng-show=visible class=\"progress af-component {{::cssClass}} {{::(border?'progress-bordered':'')}}\"><div class=\"progress-bar progress-bar-primary\" role=progressbar ng-style=\"{width: model + '%'}\"><span class=sr-only>{{model}}% Complete (success)</span></div></div>"),e.put("/templates/framework/directives/radio/template.html",'<div ng-show=visible class="af-radio af-component form-group {{::cssClass}}"><div ng-repeat="radio in items" ng-click=vm.onPick(radio) class="radio {{::inline?\'radio-inline\':\'\'}}"><label><input type=radio ng-checked="model === radio[valueField]"> <span class=text>{{::radio[textField]}}</span></label></div></div>'),e.put("/templates/framework/directives/ribbon/template.html",'<div ng-show=visible class="af-ribbon af-component {{::cssClass}}"><div class=tabs-container><div class=tabs-header><ul><li ng-repeat="step in steps" class="{{step === vm.selectedStep ? \'active\' : \'\'}}"><a href=javascript:void(0) ng-click="vm.onPick(step, $event)"><i ng-if=::step.icon class={{::$eval(step.icon)}}></i> <span>{{::$eval(step.title)|textOrTranslate:$eval(step.titleTranslate)}}</span></a></li></ul></div><div class=tabs-content><div ng-click=vm.scrollRight() class="slide-handler left-slide-handler"><i class="fa fa-chevron-right"></i></div><div ng-click=vm.scrollLeft() class="slide-handler right-slide-handler"><i class="fa fa-chevron-left"></i></div><div class="tab-content clearfix active" ng-if="step === vm.selectedStep" ng-repeat="step in steps"><div ng-repeat="section in ::step.sections" class=section><div class="section-content {{::$eval(section.name)}}"><div class=section-content-column ng-repeat="column in ::section.columns"><div ng-repeat="button in ::column.buttons" class="button {{::button.inline?\'inline\':\'\'}} {{::button.toggle?\'toggle-button\':\'\'}} {{button.toggleState ? \'active\' : \'\'}} {{::$eval(button.cssClass)}}"><button ng-disabled=button.disabled ng-click=vm.onAction(button)><i class={{::$eval(button.icon)}}></i> <span>{{::$eval(button.title)|textOrTranslate:$eval(button.titleTranslate)}}</span></button></div></div><div ng-if=::!section.columns.length><div ng-repeat-start="button in ::section.buttons" ng-if=::!button.buttons.length class={{vm.getButtonClass(button)}}><button ng-disabled=!button.enabled ng-click=vm.onAction(button)><i class={{::$eval(button.icon)}}></i> <span>{{::$eval(button.title)|textOrTranslate:$eval(button.titleTranslate)}}</span></button></div><div ng-repeat-end ng-if=::button.buttons.length class="af-drop-menu drop-button af-component {{$eval(button.enabled.toString()) ? \'\' : \'disabled\'}} {{::$eval(button.cssClass)}}"><a ng-click="vm.onExpandButton(button, $event)" class="drop-handler {{button.expand?\'active\': \'\'}}" href=javascript:void(0)><i class={{::$eval(button.icon)}}></i> <span>{{::$eval(button.title)|textOrTranslate:$eval(button.titleTranslate)}}</span> <i class="fa fa-caret-down"></i><ul class=menu-items><li ng-repeat="sub in ::button.buttons" ng-click=vm.onAction(sub)><div><i class={{::$eval(sub.icon)}}></i> <span class=menu-item-title>{{::$eval(sub.title)|textOrTranslate:$eval(sub.titleTranslate)}}</span></div></li></ul></a></div></div><div class=section-label>{{::($eval(section.title)|textOrTranslate:$eval(section.titleTranslate))}}</div></div></div></div></div></div></div>'),e.put("/templates/framework/directives/slider/template.html",'<div class="af-slider af-component range-slider"><input type=text></div>'),e.put("/templates/framework/directives/switch/template.html",'<label ng-show=visible class="af-switch af-component {{::cssClass}}" ng-click=vm.toggle($event)><input ng-disabled=disabled class=switch ng-model=model ng-checked="model===true" type=checkbox> <span class=text></span></label>'),e.put("/templates/framework/directives/tabs/template.html","<div ng-show=visible class=\"af-tabs af-component {{::cssClass}} {{:: position === 'right'? 'tabs-right':''}} {{:: position === 'left'? 'tabs-left':''}}\"><ul ng-if=\"position !== 'bottom'\" class=\"nav nav-tabs\" role=tablist><li role=presentation ng-repeat=\"step in steps\" class=\"{{step.disabled ?'disabled':''}} {{::step.cssClass}} {{step === model ? 'active' : ''}}\"><a href=javascript:void(0) ng-click=\"vm.prepareForPick(step, $event)\"><i ng-if=::step.icon class={{::$eval(step.icon)}}></i> <span> {{::$eval(step.title)|textOrTranslate:$eval(step.titleTranslate)}}</span></a></li></ul><div class=tab-content><div role=tabpanel ng-repeat=\"step in steps\" ng-if=\"(keepScope)||(step === model)\" ng-bind-html=step.content|to_trusted_html class=\"tab-pane {{::step.cssClass}} {{step === model ? 'active' : ''}}\"></div></div><ul ng-if=\"position === 'bottom' || position === undefined\" class=\"nav nav-tabs\" role=tablist><li role=presentation ng-repeat=\"step in steps\" class=\"{{step.disabled ?'disabled':''}} {{::step.cssClass}} {{step === model ? 'active' : ''}}\"><a href=javascript:void(0) role=tab ng-click=vm.onPick(step) data-toggle=tab><i ng-if=::step.icon class={{::$eval(step.icon)}}></i> <span> {{::$eval(step.title)|textOrTranslate:$eval(step.titleTranslate)}}</span></a></li></ul></div>"),e.put("/templates/framework/directives/tags/template.html",'<div ng-show=visible class="af-tags af-component bootstrap-tagsinput {{::cssClass}}"><span ng-repeat="item in model" class="tag label label-info">{{item}} <span ng-click=vm.onRemove(item) data-role=remove></span></span> <input type=text placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}} ng-model=vm.query on-enter=vm.onAdd() style="width: 10em !important;"></div>'),e.put("/templates/framework/directives/text-area/template.html","<div ng-show=visible class=\"af-text-area af-component {{disabled?'disabled':''}} form-group {{::cssClass}}\"><textarea rows={{::rows}} ng-style=\"{resize: resize}\" class=form-control ng-model=model></textarea></div>"),e.put("/templates/framework/directives/textbox/template.html",'<div ng-show=visible class="af-textbox af-component {{disabled?\'disabled\':\'\'}} form-group {{::cssClass}}"><div ng-if=::prependIcon class=prepend-icon><input type=text class="form-control input-lg" ng-model=model ng-disabled=disabled ng-readonly=readonly placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}}> <i class={{::prependIcon}}></i></div><div ng-if=::appendIcon class=append-icon><input type=text class="form-control input-lg" ng-model=model ng-readonly=readonly ng-disabled=disabled placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}}> <i class={{::appendIcon}}></i></div><label ng-if=::label>{{::label}}</label> <label ng-if=::labelTranslate>{{::labelTranslate|translate}}</label> <input ng-if=::!(prependIcon||appendIcon) ng-model=model ng-readonly=readonly ng-disabled=disabled type=text class="form-control input-lg" placeholder={{::placeHolder|textOrTranslate:placeHolderTranslate}}></div>'), | ||
e.put("/templates/framework/directives/tree/template.html",'<div class="af-tree af-component"><tree-container is-root=true uuid=uuid parent=null items=items></tree-container></div>'),e.put("/templates/framework/directives/tree/tree-container.html",'<ul class="{{::isRoot?\'tree-root-container\':\'\'}} tree-container"><li ng-repeat="node in items" class="tree-node {{node.expanded ? \'expanded\' : \'\'}}"><div class="active {{node.selected?\'selected\':\'\'}}"><span ng-click="vm.onExpand(node, $event)" class=child-info><i ng-if=!node.waiting class="af-icon {{vm.getNodeIcon(node)}}"></i></span> <span ng-click="vm.onPick(node, $event)" class=node-info><i ng-if=!node.waiting class="af-icon {{vm.getNodeClass(node)}}"></i> <i ng-if=node.waiting class="fa fa-spinner fa-spin"></i> <span class=node-text>{{::node.title|textOrTranslate:node.titleTranslate}}</span></span></div><tree-container ng-if="node.expanded && node.items && node.items.length" uuid=uuid is-root=false parent=node items=node.items></tree-container></li></ul>'),e.put("/templates/framework/directives/validation-messages/template.html",'<div class="af-validation-messages af-component"><ul ng-if=model.length><li ng-repeat="error in model"><i class="{{::(error.icon?error.icon:\'fa fa-info\')}}"></i> <span>{{::error.message}}</span></li></ul></div>'),e.put("/templates/framework/directives/waiting/template.html",'<div class="af-waiting af-component"><div class=inner-container><div class=binding></div><div class=pad><div class="line line1"></div><div class="line line2"></div><div class="line line3"></div></div></div></div>'),e.put("/templates/framework/directives/wizard/template.html",'<div ng-show=visible class="af-wizard af-component {{::cssClass}}"><tabs disabled=disabled tag=tag keep-scope=keepScope position=position on-changed=onChanged on-enter=onEnter on-exit=onExit prevent-pick=true trigger-pick=vm.triggerPick model=model steps=steps></tabs><ul class="navigation clearfix"><li><button class="btn btn-primary next" ng-disabled=disabled||vm.nextDisabled ng-click=vm.onNext()><i class="fa fa-arrow-left"></i> {{::(nextText|textOrTranslate:nextTextTranslate)}}</button></li><li><button class="btn btn-primary back" ng-disabled=disabled||vm.backDisabled ng-click=vm.onBack()>{{::(backText|textOrTranslate:backTextTranslate)}} <i class="fa fa-arrow-right"></i></button></li></ul></div>')}])}(); |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
13345770
1.77%443
0.23%65866
7.52%4
-50%36
2.86%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed