Commit 7e5d6322 authored by Sylvain's avatar Sylvain

Mise à jour de l'installation de modulus

parent 63ca4d02
# Modulus
CMS personnel
## Required
- Composer
- PHP >= 7.3
- Laravel >= 7
## Installation
Require this package with composer.
```shell
composer require goldenscarab/modulus
```
Laravel 5.8 uses autoload files, so doesn't require you to manually add the ServiceProvider.
## Publishing
```shell
php artisan vendor:publish --provider="Goldenscarab\Modulus\App\Providers\PublishesServiceProvider" --force
```
## Installing front dependencies
```shell
bash vendor/goldenscarab/modulus/assets_install.sh
```
## Configuration assets
Add in file resources/js/app.js
```javascript
require('./modulus.js')
```
App in file resources/scss/app.js (create file if necessary)
```css
@import "./modulus.scss"
```
Compile assets
```shell
npm run dev
```
## Configuration
Edit `config/modulus.js` file
## Security
If you discover any security related issues, please email contact@goldenscarab.fr instead of using the issue tracker.
## Credits
- [Sylvain CARRE](https://git.goldenscarab.fr/modulus)
## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
# !/bin/bash
# Lancement du script :
# bash vendor/goldenscarab/modulus/assets_install.sh
npm install --save ace-builds@1.4.12
npm install --save admin-lte@3.0.5
npm install --save air-datepicker@2.2.3
npm install --save animate.css@4.1.1
npm install --save bootstrap@4.6.0
npm install --save bootstrap4-toggle@3.6.1
npm install --save clipboard@2.0.6
npm install --save dragula@3.7.3
npm install --save font-awesome@4.7.0
npm install --save highcharts@9.0.0
npm install --save jquery@3.5.1
npm install --save jquery-ui-bundle@1.12.1-migrate
npm install --save select2@4.0.13
npm install --save select2-bootstrap4-theme@1.0.0
npm install --save sweetalert2@10.15.5
npm install --save tinymce@5.7.0
npm install --save numeral@2.0.6
npm install --save vue@2.6.12
npm install --save-dev sass@1.32.7
npm install --save-dev sass-loader@8.0.2
npm install --save-dev vue-jest@3.0.7
npm install --save-dev vue-loader
npm install --save-dev vue-template-compiler@2.6.12
npm install --save-dev resolve-url-loader@4.0.0
npm install --save-dev laravel-vue-pagination@2.3.1
......@@ -2,7 +2,15 @@
"name": "goldenscarab/modulus",
"description": "CMS maison pour développeur",
"require": {
"php": ">=7.2"
"php": ">=7.2",
"goldenscarab/modulus-helpers": "1.x",
"goldenscarab/modulus-service-field": "1.0.x",
"goldenscarab/modulus-service-template": "0.1.x",
"spatie/laravel-permission": "4.x",
"spatie/laravel-cookie-consent": "2.x",
"maatwebsite/excel": "3.x",
"barryvdh/laravel-debugbar": "3.x",
"barryvdh/laravel-elfinder": "0.4.x"
},
"license": "MIT",
"authors": [
......@@ -27,19 +35,10 @@
"laravel": {
"providers": [
"Goldenscarab\\Modulus\\App\\Providers\\RouteServiceProvider",
"Goldenscarab\\Modulus\\App\\Providers\\ModulusServiceProvider"
"Goldenscarab\\Modulus\\App\\Providers\\ModulusServiceProvider",
"Goldenscarab\\Modulus\\App\\Providers\\PublishesServiceProvider",
"Goldenscarab\\Modulus\\App\\Providers\\LoadServiceProvider"
]
}
},
"require-dev": {
"laravel/framework": "8.x",
"goldenscarab/modulus-helpers": "1.x",
"goldenscarab/modulus-service-field": "1.0.x",
"goldenscarab/modulus-service-template": "0.1.x",
"spatie/laravel-permission": "4.x",
"spatie/laravel-cookie-consent": "2.x",
"maatwebsite/excel": "3.x",
"barryvdh/laravel-debugbar": "3.x",
"barryvdh/laravel-elfinder": "0.4.x"
}
}
......@@ -17,7 +17,7 @@ class AuthenticatedSessionController extends Controller
*/
public function create()
{
return view('auth.login');
return view('modulus::auth.login');
}
/**
......
......@@ -18,7 +18,7 @@ class ConfirmablePasswordController extends Controller
*/
public function show(Request $request)
{
return view('auth.confirm-password');
return view('modulus::auth.confirm-password');
}
/**
......
......@@ -18,6 +18,6 @@ class EmailVerificationPromptController extends Controller
{
return $request->user()->hasVerifiedEmail()
? redirect()->intended(RouteServiceProvider::HOME)
: view('auth.verify-email');
: view('modulus::auth.verify-email');
}
}
......@@ -18,7 +18,7 @@ class NewPasswordController extends Controller
*/
public function create(Request $request)
{
return view('auth.reset-password', ['request' => $request]);
return view('modulus::auth.reset-password', ['request' => $request]);
}
/**
......
......@@ -15,7 +15,7 @@ class PasswordResetLinkController extends Controller
*/
public function create()
{
return view('auth.forgot-password');
return view('modulus::auth.forgot-password');
}
/**
......
......@@ -19,7 +19,7 @@ class RegisteredUserController extends Controller
*/
public function create()
{
return view('auth.register');
return view('modulus::auth.register');
}
/**
......
......@@ -49,7 +49,7 @@ class DashboardController extends Controller
return ucfirst($item->created_at->format('m'));
});
return view('back.dashboard.index')->with([
return view('modulus::app.dashboard.index')->with([
'title' => "Tableau de bord",
'subtitle' => "Analyse",
'current_week' => $current_week,
......
......@@ -78,7 +78,7 @@ class ModuleController extends Controller
'Modules' => null
);
return view('back.module.index')->with([
return view('modulus::app.module.index')->with([
'seo_title' => 'Module liste',
'title' => '<i class="fa fa-puzzle-piece mr-2"></i>Modules',
'subtitle' => 'Liste des modules disponibles',
......
......@@ -47,7 +47,7 @@ class PermissionController extends Controller
'Permissions' => null
);
return view('back.user.permission.list')->with([
return view('modulus::app.user.permission.list')->with([
'title' => '<i class="fa fa-unlock-alt mr-1" aria-hidden="true"></i>Permissions',
'breadcrumb' => $breadcrumb,
'permissions' => $permissions,
......@@ -65,7 +65,7 @@ class PermissionController extends Controller
'Ajouter' => null
);
return view('back.user.permission.form')->with([
return view('modulus::app.user.permission.form')->with([
'title' => '<i class="fa fa-unlock-alt mr-1" aria-hidden="true"></i>Permission',
'subtitle' => $permission->display_name,
'action' => '<i class="fa fa-plus mr-2"></i>Ajouter',
......@@ -85,7 +85,7 @@ class PermissionController extends Controller
'Modifier' => null
);
return view('back.user.permission.form')->with([
return view('modulus::app.user.permission.form')->with([
'title' => '<i class="fa fa-unlock-alt mr-1" aria-hidden="true"></i>Permission',
'subtitle' => $permission->display_name,
'action' => '<i class="fa fa-pencil-square-o mr-2"></i>Modifier',
......
......@@ -49,7 +49,7 @@ class RoleController extends Controller
'Rôles' => null
);
return view('back.user.role.list')->with([
return view('modulus::app.user.role.list')->with([
'title' => '<i class="fa fa-tags mr-1" aria-hidden="true"></i>Rôles',
'breadcrumb' => $breadcrumb,
'roles' => $roles,
......@@ -71,7 +71,7 @@ class RoleController extends Controller
'Ajouter' => null
);
return view('back.user.role.form')->with([
return view('modulus::app.user.role.form')->with([
'title' => '<i class="fa fa-tags mr-1" aria-hidden="true"></i>Rôle',
'action' => '<i class="fa fa-plus mr-2"></i>Ajouter',
'breadcrumb' => $breadcrumb,
......@@ -95,7 +95,7 @@ class RoleController extends Controller
'Modifier' => null
);
return view('back.user.role.form')->with([
return view('modulus::app.user.role.form')->with([
'title' => '<i class="fa fa-tags mr-1" aria-hidden="true"></i>Rôle',
'subtitle' => $role->display_name,
'action' => '<i class="fa fa-pencil-square-o mr-2"></i>Modifier',
......
......@@ -58,7 +58,7 @@ class UserController extends Controller
'Utilisateurs' => null,
);
return view('back.user.list')->with([
return view('modulus::app.user.list')->with([
'title' => '<i class="fa fa-users mr-1" aria-hidden="true"></i>Utilisateurs',
'breadcrumb' => $breadcrumb,
'users' => $users,
......@@ -78,7 +78,7 @@ class UserController extends Controller
'Ajouter' => null
);
return view('back.user.form')->with([
return view('modulus::app.user.form')->with([
'title' => '<i class="fa fa-users mr-1" aria-hidden="true"></i>Ajouter un utilisateur',
'action' => '<i class="fa fa-plus mr-2"></i>Ajouter',
'breadcrumb' => $breadcrumb,
......@@ -100,7 +100,7 @@ class UserController extends Controller
'Modifier' => null
);
return view('back.user.form')->with([
return view('modulus::app.user.form')->with([
'title' => '<i class="fa fa-users mr-1" aria-hidden="true"></i>Modifier un utilisateur',
'action' => '<i class="fa fa-pencil-square-o mr-2"></i>Modifier',
'breadcrumb' => $breadcrumb,
......@@ -235,7 +235,7 @@ class UserController extends Controller
Session::flash('success', "Profil enregistré avec succès");
return Redirect::back();
return Redirect::app();
}
public function delete($id)
......
<?php
namespace Goldenscarab\Modulus\App\Providers;
use Illuminate\Support\ServiceProvider;
class LoadServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
$this->loadMigrationsFrom(__DIR__.'/../../database/migrations');
$this->loadTranslationsFrom(__DIR__.'/../../resources/lang', 'modulus');
$this->loadViewsFrom(__DIR__.'/../../resources/views', 'modulus');
}
}
<?php
namespace Goldenscarab\Modulus\App\Providers;
use Carbon\Carbon;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\View;
use Illuminate\Foundation\AliasLoader;
use Illuminate\Support\ServiceProvider;
use Goldenscarab\Modulus\App\Http\Services\Module\Facade\ModuleService;
/**
* Publication :
* php artisan vendor:publish --provider="Goldenscarab\Modulus\App\Providers\PublishesServiceProvider" --force
*/
class PublishesServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
// Config
$this->publishes([
__DIR__.'/../../config' => base_path('config')
]);
// Assets
$this->publishes([
__DIR__.'/../../resources/js/publishes.js' => base_path('resources/js/modulus.js'),
__DIR__.'/../../resources/sass/publishes.scss' => base_path('resources/sass/modulus.scss')
]);
// Views
// $this->publishes([
// __DIR__.'/../views' => base_path('resources/views'),
// __DIR__.'/../views/auth' => base_path('resources/views/auth'),
// __DIR__.'/../views/emails' => base_path('resources/views/emails'),
// ]);
}
}
......@@ -4,11 +4,12 @@ namespace Goldenscarab\Modulus\App\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
//use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Support\ServiceProvider;
class RouteServiceProvider extends ServiceProvider
{
public const HOME = '/backend';
private $base_namespace = 'Goldenscarab\\Modulus\\App\\Http\\Controllers';
......@@ -19,16 +20,31 @@ class RouteServiceProvider extends ServiceProvider
*/
public function boot()
{
dd('ok');
$this->routes(function () {
Route::prefix('api')
->middleware('api')
->namespace($this->base_namespace)
->group(__DIR__ . '../routes/api.php');
Route::middleware(['web', 'compiler'])
->namespace($this->base_namespace)
->group(__DIR__ . '../routes/web.php');
define('HOME', config('modulus.route_prefix'));
$router = $this->app->router;
// API
$router->prefix('api')
->middleware('api')
->namespace($this->base_namespace)
->group(function($router) {
require __DIR__.'/../../routes/api.php';
});
// AUTH
$router->middleware('web')
->namespace($this->base_namespace)
->group(function($router) {
require __DIR__.'/../../routes/auth.php';
});
// Modulus
$router->prefix(config('modulus.route_prefix'))
->middleware(['web'])
->namespace($this->base_namespace)
->group(function($router) {
require __DIR__.'/../../routes/web.php';
});
}
......
......@@ -2,6 +2,11 @@
return [
/**
* Préfixe des routes de Modulus
*/
'route_prefix' => 'backend',
/**
* Chemin vers les vues compilées de pages
*/
......
try {
window.Popper = require('popper.js').default;
window.$ = window.jQuery = require('jquery');
} catch (e) {}
require('jquery-ui-bundle');
require('bootstrap');
require('bootstrap4-toggle');
require('select2/dist/js/select2.full.js');
require('daterangepicker');
window.moment = require('moment');
// Librairies de l'application
window.Clipboard = require('clipboard');
window.Swal = require('sweetalert2');
window.fancybox = require('fancybox')($);
window.numeral = require('numeral');
// Configuration en FR
numeral.register('locale', 'fr', {
delimiters: {
......@@ -52,35 +33,3 @@ $.fn.datepicker.language['fr'] = {
timeFormat: 'hh:ii',
firstDay: 1
};
// Librairie perso
window.Modulus = require('./modulus/modulus.js');
require('./modulus/popupfinder.js');
require('./modulus/codeeditor.js');
require('./modulus/texteditor.js');
require('../libraries/composerBt4/jquery.composerBt4.js');
require('../libraries/gdrop/jquery.gdrop.js');
// Vue JS
window.axios = require('axios');
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
require('./Helpers/helpers');
window.Vue = require('vue').default;
Vue.component('glist', require('./components/glist/Glist').default);
Vue.component('bt4-button', require('./components/bootstrap-4/Button').default);
Vue.component('bt4-input', require('./components/bootstrap-4/Input').default);
// Intégration des modules
require('../../Modules/Campaign/Resources/assets/js/app');
// Lancement de Vue.js
if (document.getElementById('app')) {
window.vm = new Vue({
el: '#app',
});
}
......@@ -17,46 +17,9 @@ window.Clipboard = require('clipboard');
window.Highcharts = require('highcharts');
window.DataTable = require('datatables.net-bs4');
window.Swal = require('sweetalert2');
window.fancybox = require('fancybox')($);
window.dragula = require('dragula');
window.numeral = require('numeral');
// Configuration en FR
numeral.register('locale', 'fr', {
delimiters: {
thousands: ' ',
decimal: ','
},
abbreviations: {
thousand: 'k',
million: 'm',
billion: 'b',
trillion: 't'
},
ordinal : function (number) {
return number === 1 ? 'er' : 'ème';
},
currency: {
symbol: ''
}
});
numeral.locale('fr');
// Date picker
require('air-datepicker');
$.fn.datepicker.language['fr'] = {
days: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
daysShort: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
daysMin: ['Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa'],
months: ['Janvier','Février','Mars','Avril','Mai','Juin', 'Juillet','Août','Septembre','Octobre','Novembre','Decembre'],
monthsShort: ['Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Ju', 'Jui', 'Aut', 'Sep', 'Oct', 'Nov', 'Dec'],
today: 'Aujourd\'hui',
clear: 'Vider',
dateFormat: 'dd/mm/yyyy',
timeFormat: 'hh:ii',
firstDay: 1
};
// Librairie perso
window.Modulus = require('./modulus/modulus.js');
require('./modulus/popupfinder.js');
......@@ -65,26 +28,5 @@ require('./modulus/texteditor.js');
require('../libraries/composerBt4/jquery.composerBt4.js');
require('../libraries/gdropfield/gdropfield.js');
// Vue JS
window.axios = require('axios');
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
require('./Helpers/helpers');
window.Vue = require('vue').default;
Vue.component('glist', require('./components/glist/Glist').default);
Vue.component('bt4-button', require('./components/bootstrap-4/Button').default);
Vue.component('bt4-input', require('./components/bootstrap-4/Input').default);
// Intégration des modules
require('../../Modules/Campaign/Resources/assets/js/app');
// Lancement de Vue.js
if (document.getElementById('app')) {
window.vm = new Vue({
el: '#app',
});
}
require('./config.js');
require('./vue.js');
require('./simply-beautiful.js');
;(function($)
{
$.fn.codeeditor = function(opts) {
/**
* Attributs de l'objet
* @type {Any}
*/
var attr = $.extend({
}, opts);
/**
* Méthodes de l'object
* @type {Object}
*/
var Self = {};
Self.init = function(el) {
Self.setAceJs(el, attr);
};
Self.setAceJs = function(el, attr) {
var editor_id = $(el).attr('id');
var value = $(el).text();
if ($(el).attr('data-beautiful') == 'true' || $(el).attr('data-beautiful') == 1) {
var beautify = SimplyBeautiful();
$(el).text(beautify.html(value));
}
var editor = new ace.edit(editor_id);
editor.setTheme("ace/theme/monokai");
editor.getSession().setMode("ace/mode/" + $(el).attr('data-language'));
editor.setOption("enableEmmet", true);
editor.getSession().setUseWrapMode(true);
editor.setHighlightActiveLine(true);
editor.setShowPrintMargin(false);
editor.setReadOnly($(el).attr('data-readonly'));
// editor.setOptions({
// maxLines: 20
// });
editor.commands.addCommand({
name: 'saveFile',
bindKey: {
win: 'Ctrl-S',
mac: 'Command-S',
sender: 'editor|cli'
},
exec: function(env, args, request) {
$('form.ajax').submit();
}
});
editor.commands.addCommand({
name: 'convertHtml',
bindKey: {
win: 'Ctrl-Alt-C',
mac: 'Ctrl-Alt-C',
sender: 'editor|cli'
},
exec: function(env, args, request) {
console.info("Attention à bien vérifier que un parent entoure bien les éléments en traiter");
var language = env.renderer.container.dataset.language;
if (language == 'html') {
var $html = $($(env.renderer.container.dataset.target).val());
// Parcours des images dans le html
$html.find('img').each(function (i, img) {
// Convertion de l'image en Base64
var xhr = new XMLHttpRequest();
xhr.onload = function() {
var reader = new FileReader();
reader.onloadend = function() {
$(img).attr('src', reader.result);
editor.setValue($html.get(0).outerHTML);
}
reader.readAsDataURL(xhr.response);
};
xhr.open('GET', $(img).attr('src'));
xhr.responseType = 'blob';
xhr.send();
});
}
}
});
// Style des caractères de l'éditeur
document.getElementById(editor_id).style.fontSize='12px';
document.getElementById(editor_id).style.fontFamily='monospace';
editor.getSession().on('change', function(e) {
$($(el).attr('data-target')).val(editor.getValue());
});
}
function encodeImagetoBase64(element) {
var file = element.files[0];
var reader = new FileReader();
reader.onloadend = function() {
$(".link").attr("href",reader.result);
$(".link").text(reader.result);
}
reader.readAsDataURL(file);
}
Self.base64Encode = function(str) {
var CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var out = "", i = 0, len = str.length, c1, c2, c3;
while (i < len) {
c1 = str.charCodeAt(i++) & 0xff;
if (i == len) {
out += CHARS.charAt(c1 >> 2);
out += CHARS.charAt((c1 & 0x3) << 4);
out += "==";
break;
}
c2 = str.charCodeAt(i++);
if (i == len) {
out += CHARS.charAt(c1 >> 2);
out += CHARS.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
out += CHARS.charAt((c2 & 0xF) << 2);
out += "=";
break;
}
c3 = str.charCodeAt(i++);
out += CHARS.charAt(c1 >> 2);
out += CHARS.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
out += CHARS.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));
out += CHARS.charAt(c3 & 0x3F);
}
return out;
}
/**
* Return Retourne le plugin sur tous les élements selectionnés
*/
return this.each(function() {
Self.init(this);
});
}
})(jQuery);
This diff is collapsed.
;(function($)
{
$.fn.popupfinder = function(opts)
{
/**
* Attributs de l'objet
* @type {Any}
*/
var attr = $.extend({
callback: null,
only_mimes: null,
only_mimes_default: ["image", "video", "application/pdf", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"],
folder: null,
instance: null,
}, opts);
/**
* Méthodes de l'object
* @type {Object}
*/
var Self = {};
Self.init = function(el) {
// Init de la popup
$(el).on('click', function() {
// Paramétrage du finder
var mimes = $(this).attr('data-mimes');
var folder = $(this).attr('data-folder');
var thumb = $(this).attr('data-thumb');
var field = $(this).attr('data-field');
if (mimes) {
attr.only_mimes = mimes.split(',');
}
attr.folder = folder;
attr.callback = function(file) {
$(thumb).attr('src', '/' + file);
$(field).val('/' + file);
}
$.fancybox({
content: '<div id="elfinderselect"></div>',
helpers : {
title: {
type: 'outside',
position: 'top'
}
},
beforeLoad: function() {
this.title = '<h3 class="text-center">Gestionnaire de fichiers</h3>';
},
afterShow: function() {
Self.setElFinder(attr);
},
afterClose: function() {
attr.instance.destroy();
},
closeBtn: true,
width: 900,
maxHeight: 700
});
});
};
Self.setElFinder = function(params) {
params.instance = $('#elfinderselect').elfinder({
url: location.origin + '/elfinder/connector',
lang: 'fr',
disabled: ['extract', 'archive', 'search'],
requestType: 'get',
resizable: false,
width: 800,
height: 530,
commands : ['open', 'reload', 'home', 'up', 'back', 'forward', 'getfile', 'quicklook',
'download', 'rm', 'rename', 'mkdir', 'upload', 'info', 'resize', 'sort'],
onlyMimes: params.only_mimes,
uiOptions : {
toolbar : [
['back', 'forward'],
['reload'],
['home', 'up'],
['mkdir', 'mkfile', 'upload'],
['open', 'download', 'getfile'],
['info'],
['quicklook'],
['rm', 'rename', 'resize'],
['search'],
]
},
customData: {
_token: window.Laravel.csrfToken
},
commandsOptions : {
getfile: {
onlyURL: false,
multiple: false,
folders: params.folder,
}
},
getFileCallback: function(url, instance) {
//Récupération du chemin du fichier
var file_full_url = url.url;
var file_uri = url.path;
var file_mime = url.mime;
// Lancement du callback
if (params.callback) params.callback(file_uri);
$.fancybox.close();
}
}).elfinder('instance');
}
/**
* Return Retourne le plugin sur tous les élements selectionnés
*/
return this.each(function()
{
Self.init(this);
});
}
})(jQuery);
\ No newline at end of file
This diff is collapsed.
/*
Nécessite les inclusions suivantes :
<script src="{!! asset('packages/tinymce/tinymce.min.js') !!}" type="text/javascript"></script>
<script src="{!! asset('packages/tinymce/jquery.tinymce.min.js') !!}" type="text/javascript"></script>
Exemple d'utilisation :
texteditor_opts = {
toolbar: 'bold italic underline strikethrough | bullist numlist outdent indent | link | forecolor backcolor | code',
menubar:false,
statusbar: false,
}
$('text-editor-simple').texteditor(texteditor_opts);
*/
;(function($)
{
$.fn.texteditor = function(opts) {
/**
* Attributs de l'objet
* @type {Any}
*/
var attr = $.extend({
menubar:true,
statusbar: true,
toolbar: 'bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | forecolor backcolor | fullscreen'
}, opts);
/**
* Méthodes de l'object
* @type {Object}
*/
var Self = {};
Self.init = function(el) {
/**
* Désactivation de la suppression de tinymce à l'initialisation :
* Cause : Impossible d'avoir plusieurs instance
* Date : 20.01.2020
*/
//tinymce.remove();
$(el).tinymce({
//selector: selector,
branding: false,
language: 'fr_FR',
file_picker_callback : Self.setFilePicker,
plugins: [
'advlist autolink lists link image charmap print preview anchor',
'searchreplace visualblocks code fullscreen',
'insertdatetime table contextmenu paste code textcolor colorpicker'
],
menubar: attr.menubar,
toolbar: attr.toolbar,
statusbar: attr.statusbar,
setup: function (editor) {
editor.on('change', function () {
editor.save();
});
}
});
};
Self.setFilePicker = function(callback, value, meta) {
var myIfm, pStyle;
var filemanager = '/backend/manager/elfinder';
tinymce.activeEditor.windowManager.open({
title: 'Gestionnaire de fichiers',
size: 'large',
body: {
type: 'panel',
items: [{
type: 'htmlpanel',
html: '<iframe class="elfinder-manager" style="width:100%; height:100%;" src="' + filemanager + '"/>'
}]
},
buttons: []
});
tinymce.activeEditor.windowManager._elfinderCallBack = function (file, fm) {
var url, reg, info;
// URL normalization
url = fm.convAbsUrl(file.url);
// Make file info
info = file.name + ' (' + fm.formatSize(file.size) + ')';
// Provide file and text for the link dialog
if (meta.filetype == 'file') {
callback(url, {text: info, title: info});
}
// Provide image and alt text for the image dialog
if (meta.filetype == 'image') {
callback(url, {alt: info});
}
// Provide alternative source and posted for the media dialog
if (meta.filetype == 'media') {
callback(url);
}
};
}
/**
* Return Applique le plugin sur tous les élements selectionnés
*/
return this.each(function() {
Self.init(this);
});
}
})(jQuery);
\ No newline at end of file
require('../../vendor/goldenscarab/modulus/src/resources/js/modulus.js');
// Vue JS
window.axios = require('axios');
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
require('./Helpers/helpers');
window.Vue = require('vue').default;
Vue.component('glist', require('./components/glist/Glist').default);
Vue.component('bt4-button', require('./components/bootstrap-4/Button').default);
Vue.component('bt4-input', require('./components/bootstrap-4/Input').default);
// Lancement de Vue.js
if (document.getElementById('app')) {
window.vm = new Vue({
el: '#app',
});
}
Thanks for downloading this theme!
Theme Name: NewBiz
Theme URL: https://bootstrapmade.com/newbiz-bootstrap-business-template/
Author: BootstrapMade.com
Author URL: https://bootstrapmade.com
Fully working PHP/AJAX contact form is available in the pro version.
You can buy it from: https://bootstrapmade.com/newbiz-bootstrap-business-template/
jQuery(document).ready(function($) {
"use strict";
//Contact
$('form.contactForm').submit(function() {
var f = $(this).find('.form-group'),
ferror = false,
emailExp = /^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i;
f.children('input').each(function() { // run all inputs
var i = $(this); // current input
var rule = i.attr('data-rule');
if (rule !== undefined) {
var ierror = false; // error flag for current input
var pos = rule.indexOf(':', 0);
if (pos >= 0) {
var exp = rule.substr(pos + 1, rule.length);
rule = rule.substr(0, pos);
} else {
rule = rule.substr(pos + 1, rule.length);
}
switch (rule) {
case 'required':
if (i.val() === '') {
ferror = ierror = true;
}
break;
case 'minlen':
if (i.val().length < parseInt(exp)) {
ferror = ierror = true;
}
break;
case 'email':
if (!emailExp.test(i.val())) {
ferror = ierror = true;
}
break;
case 'checked':
if (! i.is(':checked')) {
ferror = ierror = true;
}
break;
case 'regexp':
exp = new RegExp(exp);
if (!exp.test(i.val())) {
ferror = ierror = true;
}
break;
}
i.next('.validation').html((ierror ? (i.attr('data-msg') !== undefined ? i.attr('data-msg') : 'wrong Input') : '')).show('blind');
}
});
f.children('textarea').each(function() { // run all inputs
var i = $(this); // current input
var rule = i.attr('data-rule');
if (rule !== undefined) {
var ierror = false; // error flag for current input
var pos = rule.indexOf(':', 0);
if (pos >= 0) {
var exp = rule.substr(pos + 1, rule.length);
rule = rule.substr(0, pos);
} else {
rule = rule.substr(pos + 1, rule.length);
}
switch (rule) {
case 'required':
if (i.val() === '') {
ferror = ierror = true;
}
break;
case 'minlen':
if (i.val().length < parseInt(exp)) {
ferror = ierror = true;
}
break;
}
i.next('.validation').html((ierror ? (i.attr('data-msg') != undefined ? i.attr('data-msg') : 'wrong Input') : '')).show('blind');
}
});
if (ferror) return false;
else var str = $(this).serialize();
var action = $(this).attr('action');
if( ! action ) {
action = 'contactform/contactform.php';
}
$.ajax({
type: "POST",
url: action,
data: str,
success: function(msg) {
// alert(msg);
if (msg == 'OK') {
$("#sendmessage").addClass("show");
$("#errormessage").removeClass("show");
$('.contactForm').find("input, textarea").val("");
} else {
$("#sendmessage").removeClass("show");
$("#errormessage").addClass("show");
$('#errormessage').html(msg);
}
}
});
return false;
});
});
This source diff could not be displayed because it is too large. You can view the blob instead.
(function ($) {
"use strict";
// Preloader (if the #preloader div exists)
$(window).on('load', function () {
if ($('#preloader').length) {
$('#preloader').delay(100).fadeOut('slow', function () {
$(this).remove();
});
}
});
// Back to top button
$(window).scroll(function() {
if ($(this).scrollTop() > 100) {
$('.back-to-top').fadeIn('slow');
} else {
$('.back-to-top').fadeOut('slow');
}
});
$('.back-to-top').click(function(){
$('html, body').animate({scrollTop : 0},1500, 'easeInOutExpo');
return false;
});
// Initiate the wowjs animation library
new WOW().init();
// Header scroll class
$(window).scroll(function() {
if ($(this).scrollTop() > 100) {
$('#header').addClass('header-scrolled');
} else {
$('#header').removeClass('header-scrolled');
}
});
if ($(window).scrollTop() > 100) {
$('#header').addClass('header-scrolled');
}
// Smooth scroll for the navigation and links with .scrollto classes
$('.main-nav a, .mobile-nav a, .scrollto').on('click', function() {
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
var target = $(this.hash);
if (target.length) {
var top_space = 0;
if ($('#header').length) {
top_space = $('#header').outerHeight();
if (! $('#header').hasClass('header-scrolled')) {
top_space = top_space - 20;
}
}
$('html, body').animate({
scrollTop: target.offset().top - top_space
}, 1500, 'easeInOutExpo');
if ($(this).parents('.main-nav, .mobile-nav').length) {
$('.main-nav .active, .mobile-nav .active').removeClass('active');
$(this).closest('li').addClass('active');
}
if ($('body').hasClass('mobile-nav-active')) {
$('body').removeClass('mobile-nav-active');
$('.mobile-nav-toggle i').toggleClass('fa-times fa-bars');
$('.mobile-nav-overly').fadeOut();
}
return false;
}
}
});
// Navigation active state on scroll
var nav_sections = $('section');
var main_nav = $('.main-nav, .mobile-nav');
var main_nav_height = $('#header').outerHeight();
$(window).on('scroll', function () {
var cur_pos = $(this).scrollTop();
nav_sections.each(function() {
var top = $(this).offset().top - main_nav_height,
bottom = top + $(this).outerHeight();
if (cur_pos >= top && cur_pos <= bottom) {
main_nav.find('li').removeClass('active');
main_nav.find('a[href="#'+$(this).attr('id')+'"]').parent('li').addClass('active');
}
});
});
// jQuery counterUp (used in Whu Us section)
$('[data-toggle="counter-up"]').counterUp({
delay: 10,
time: 1000
});
// Porfolio isotope and filter
$(window).on('load', function () {
var portfolioIsotope = $('.portfolio-container').isotope({
itemSelector: '.portfolio-item'
});
$('#portfolio-flters li').on( 'click', function() {
$("#portfolio-flters li").removeClass('filter-active');
$(this).addClass('filter-active');
portfolioIsotope.isotope({ filter: $(this).data('filter') });
});
});
// Testimonials carousel (uses the Owl Carousel library)
$(".testimonials-carousel").owlCarousel({
autoplay: true,
dots: true,
loop: true,
items: 1
});
})(jQuery);
This source diff could not be displayed because it is too large. You can view the blob instead.
/*!
* jquery.counterup.js 2.1.0
*
* Copyright 2013, Benjamin Intal http://gambit.ph @bfintal
* Released under the GPL v2 License
*
* Amended by Jeremy Paris, Ciro Mattia Gonano and others
*
* Date: Feb 24, 2017
*/
(function($){"use strict";$.fn.counterUp=function(options){var settings=$.extend({time:400,delay:10,offset:100,beginAt:0,formatter:false,context:"window",callback:function(){}},options),s;return this.each(function(){var $this=$(this),counter={time:$(this).data("counterup-time")||settings.time,delay:$(this).data("counterup-delay")||settings.delay,offset:$(this).data("counterup-offset")||settings.offset,beginAt:$(this).data("counterup-beginat")||settings.beginAt,context:$(this).data("counterup-context")||settings.context};var counterUpper=function(){var nums=[];var divisions=counter.time/counter.delay;var num=$(this).attr("data-num")?$(this).attr("data-num"):$this.text();var isComma=/[0-9]+,[0-9]+/.test(num);num=num.replace(/,/g,"");var decimalPlaces=(num.split(".")[1]||[]).length;if(counter.beginAt>num)counter.beginAt=num;var isTime=/[0-9]+:[0-9]+:[0-9]+/.test(num);if(isTime){var times=num.split(":"),m=1;s=0;while(times.length>0){s+=m*parseInt(times.pop(),10);m*=60}}for(var i=divisions;i>=counter.beginAt/num*divisions;i--){var newNum=parseFloat(num/divisions*i).toFixed(decimalPlaces);if(isTime){newNum=parseInt(s/divisions*i);var hours=parseInt(newNum/3600)%24;var minutes=parseInt(newNum/60)%60;var seconds=parseInt(newNum%60,10);newNum=(hours<10?"0"+hours:hours)+":"+(minutes<10?"0"+minutes:minutes)+":"+(seconds<10?"0"+seconds:seconds)}if(isComma){while(/(\d+)(\d{3})/.test(newNum.toString())){newNum=newNum.toString().replace(/(\d+)(\d{3})/,"$1"+","+"$2")}}if(settings.formatter){newNum=settings.formatter.call(this,newNum)}nums.unshift(newNum)}$this.data("counterup-nums",nums);$this.text(counter.beginAt);var f=function(){if(!$this.data("counterup-nums")){settings.callback.call(this);return}$this.html($this.data("counterup-nums").shift());if($this.data("counterup-nums").length){setTimeout($this.data("counterup-func"),counter.delay)}else{$this.data("counterup-nums",null);$this.data("counterup-func",null);settings.callback.call(this)}};$this.data("counterup-func",f);setTimeout($this.data("counterup-func"),counter.delay)};$this.waypoint(function(direction){counterUpper();this.destroy()},{offset:counter.offset+"%",context:counter.context})})}})(jQuery);
/*
* jQuery Easing v1.4.1 - http://gsgd.co.uk/sandbox/jquery/easing/
* Open source under the BSD License.
* Copyright © 2008 George McGinley Smith
* All rights reserved.
* https://raw.github.com/gdsmith/jquery-easing/master/LICENSE
*/
(function (factory) {
if (typeof define === "function" && define.amd) {
define(['jquery'], function ($) {
return factory($);
});
} else if (typeof module === "object" && typeof module.exports === "object") {
exports = factory(require('jquery'));
} else {
factory(jQuery);
}
})(function($){
// Preserve the original jQuery "swing" easing as "jswing"
if (typeof $.easing !== 'undefined') {
$.easing['jswing'] = $.easing['swing'];
}
var pow = Math.pow,
sqrt = Math.sqrt,
sin = Math.sin,
cos = Math.cos,
PI = Math.PI,
c1 = 1.70158,
c2 = c1 * 1.525,
c3 = c1 + 1,
c4 = ( 2 * PI ) / 3,
c5 = ( 2 * PI ) / 4.5;
// x is the fraction of animation progress, in the range 0..1
function bounceOut(x) {
var n1 = 7.5625,
d1 = 2.75;
if ( x < 1/d1 ) {
return n1*x*x;
} else if ( x < 2/d1 ) {
return n1*(x-=(1.5/d1))*x + .75;
} else if ( x < 2.5/d1 ) {
return n1*(x-=(2.25/d1))*x + .9375;
} else {
return n1*(x-=(2.625/d1))*x + .984375;
}
}
$.extend( $.easing,
{
def: 'easeOutQuad',
swing: function (x) {
return $.easing[$.easing.def](x);
},
easeInQuad: function (x) {
return x * x;
},
easeOutQuad: function (x) {
return 1 - ( 1 - x ) * ( 1 - x );
},
easeInOutQuad: function (x) {
return x < 0.5 ?
2 * x * x :
1 - pow( -2 * x + 2, 2 ) / 2;
},
easeInCubic: function (x) {
return x * x * x;
},
easeOutCubic: function (x) {
return 1 - pow( 1 - x, 3 );
},
easeInOutCubic: function (x) {
return x < 0.5 ?
4 * x * x * x :
1 - pow( -2 * x + 2, 3 ) / 2;
},
easeInQuart: function (x) {
return x * x * x * x;
},
easeOutQuart: function (x) {
return 1 - pow( 1 - x, 4 );
},
easeInOutQuart: function (x) {
return x < 0.5 ?
8 * x * x * x * x :
1 - pow( -2 * x + 2, 4 ) / 2;
},
easeInQuint: function (x) {
return x * x * x * x * x;
},
easeOutQuint: function (x) {
return 1 - pow( 1 - x, 5 );
},
easeInOutQuint: function (x) {
return x < 0.5 ?
16 * x * x * x * x * x :
1 - pow( -2 * x + 2, 5 ) / 2;
},
easeInSine: function (x) {
return 1 - cos( x * PI/2 );
},
easeOutSine: function (x) {
return sin( x * PI/2 );
},
easeInOutSine: function (x) {
return -( cos( PI * x ) - 1 ) / 2;
},
easeInExpo: function (x) {
return x === 0 ? 0 : pow( 2, 10 * x - 10 );
},
easeOutExpo: function (x) {
return x === 1 ? 1 : 1 - pow( 2, -10 * x );
},
easeInOutExpo: function (x) {
return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ?
pow( 2, 20 * x - 10 ) / 2 :
( 2 - pow( 2, -20 * x + 10 ) ) / 2;
},
easeInCirc: function (x) {
return 1 - sqrt( 1 - pow( x, 2 ) );
},
easeOutCirc: function (x) {
return sqrt( 1 - pow( x - 1, 2 ) );
},
easeInOutCirc: function (x) {
return x < 0.5 ?
( 1 - sqrt( 1 - pow( 2 * x, 2 ) ) ) / 2 :
( sqrt( 1 - pow( -2 * x + 2, 2 ) ) + 1 ) / 2;
},
easeInElastic: function (x) {
return x === 0 ? 0 : x === 1 ? 1 :
-pow( 2, 10 * x - 10 ) * sin( ( x * 10 - 10.75 ) * c4 );
},
easeOutElastic: function (x) {
return x === 0 ? 0 : x === 1 ? 1 :
pow( 2, -10 * x ) * sin( ( x * 10 - 0.75 ) * c4 ) + 1;
},
easeInOutElastic: function (x) {
return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ?
-( pow( 2, 20 * x - 10 ) * sin( ( 20 * x - 11.125 ) * c5 )) / 2 :
pow( 2, -20 * x + 10 ) * sin( ( 20 * x - 11.125 ) * c5 ) / 2 + 1;
},
easeInBack: function (x) {
return c3 * x * x * x - c1 * x * x;
},
easeOutBack: function (x) {
return 1 + c3 * pow( x - 1, 3 ) + c1 * pow( x - 1, 2 );
},
easeInOutBack: function (x) {
return x < 0.5 ?
( pow( 2 * x, 2 ) * ( ( c2 + 1 ) * 2 * x - c2 ) ) / 2 :
( pow( 2 * x - 2, 2 ) *( ( c2 + 1 ) * ( x * 2 - 2 ) + c2 ) + 2 ) / 2;
},
easeInBounce: function (x) {
return 1 - bounceOut( 1 - x );
},
easeOutBounce: bounceOut,
easeInOutBounce: function (x) {
return x < 0.5 ?
( 1 - bounceOut( 1 - 2 * x ) ) / 2 :
( 1 + bounceOut( 2 * x - 1 ) ) / 2;
}
});
});
!function(n){"function"==typeof define&&define.amd?define(["jquery"],function(e){return n(e)}):"object"==typeof module&&"object"==typeof module.exports?exports=n(require("jquery")):n(jQuery)}(function(n){function e(n){var e=7.5625,t=2.75;return n<1/t?e*n*n:n<2/t?e*(n-=1.5/t)*n+.75:n<2.5/t?e*(n-=2.25/t)*n+.9375:e*(n-=2.625/t)*n+.984375}void 0!==n.easing&&(n.easing.jswing=n.easing.swing);var t=Math.pow,u=Math.sqrt,r=Math.sin,i=Math.cos,a=Math.PI,c=1.70158,o=1.525*c,s=2*a/3,f=2*a/4.5;n.extend(n.easing,{def:"easeOutQuad",swing:function(e){return n.easing[n.easing.def](e)},easeInQuad:function(n){return n*n},easeOutQuad:function(n){return 1-(1-n)*(1-n)},easeInOutQuad:function(n){return n<.5?2*n*n:1-t(-2*n+2,2)/2},easeInCubic:function(n){return n*n*n},easeOutCubic:function(n){return 1-t(1-n,3)},easeInOutCubic:function(n){return n<.5?4*n*n*n:1-t(-2*n+2,3)/2},easeInQuart:function(n){return n*n*n*n},easeOutQuart:function(n){return 1-t(1-n,4)},easeInOutQuart:function(n){return n<.5?8*n*n*n*n:1-t(-2*n+2,4)/2},easeInQuint:function(n){return n*n*n*n*n},easeOutQuint:function(n){return 1-t(1-n,5)},easeInOutQuint:function(n){return n<.5?16*n*n*n*n*n:1-t(-2*n+2,5)/2},easeInSine:function(n){return 1-i(n*a/2)},easeOutSine:function(n){return r(n*a/2)},easeInOutSine:function(n){return-(i(a*n)-1)/2},easeInExpo:function(n){return 0===n?0:t(2,10*n-10)},easeOutExpo:function(n){return 1===n?1:1-t(2,-10*n)},easeInOutExpo:function(n){return 0===n?0:1===n?1:n<.5?t(2,20*n-10)/2:(2-t(2,-20*n+10))/2},easeInCirc:function(n){return 1-u(1-t(n,2))},easeOutCirc:function(n){return u(1-t(n-1,2))},easeInOutCirc:function(n){return n<.5?(1-u(1-t(2*n,2)))/2:(u(1-t(-2*n+2,2))+1)/2},easeInElastic:function(n){return 0===n?0:1===n?1:-t(2,10*n-10)*r((10*n-10.75)*s)},easeOutElastic:function(n){return 0===n?0:1===n?1:t(2,-10*n)*r((10*n-.75)*s)+1},easeInOutElastic:function(n){return 0===n?0:1===n?1:n<.5?-(t(2,20*n-10)*r((20*n-11.125)*f))/2:t(2,-20*n+10)*r((20*n-11.125)*f)/2+1},easeInBack:function(n){return(c+1)*n*n*n-c*n*n},easeOutBack:function(n){return 1+(c+1)*t(n-1,3)+c*t(n-1,2)},easeInOutBack:function(n){return n<.5?t(2*n,2)*(7.189819*n-o)/2:(t(2*n-2,2)*((o+1)*(2*n-2)+o)+2)/2},easeInBounce:function(n){return 1-e(1-n)},easeOutBounce:e,easeInOutBounce:function(n){return n<.5?(1-e(1-2*n))/2:(1+e(2*n-1))/2}})});
/*! jQuery Migrate v3.0.0 | (c) jQuery Foundation and other contributors | jquery.org/license */
"undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(a,b){"use strict";function c(c){var d=b.console;e[c]||(e[c]=!0,a.migrateWarnings.push(c),d&&d.warn&&!a.migrateMute&&(d.warn("JQMIGRATE: "+c),a.migrateTrace&&d.trace&&d.trace()))}function d(a,b,d,e){Object.defineProperty(a,b,{configurable:!0,enumerable:!0,get:function(){return c(e),d}})}a.migrateVersion="3.0.0",function(){var c=b.console&&b.console.log&&function(){b.console.log.apply(b.console,arguments)},d=/^[12]\./;c&&(a&&!d.test(a.fn.jquery)||c("JQMIGRATE: jQuery 3.0.0+ REQUIRED"),a.migrateWarnings&&c("JQMIGRATE: Migrate plugin loaded multiple times"),c("JQMIGRATE: Migrate is installed"+(a.migrateMute?"":" with logging active")+", version "+a.migrateVersion))}();var e={};a.migrateWarnings=[],void 0===a.migrateTrace&&(a.migrateTrace=!0),a.migrateReset=function(){e={},a.migrateWarnings.length=0},"BackCompat"===document.compatMode&&c("jQuery is not compatible with Quirks Mode");var f=a.fn.init,g=a.isNumeric,h=a.find,i=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,j=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g;a.fn.init=function(a){var b=Array.prototype.slice.call(arguments);return"string"==typeof a&&"#"===a&&(c("jQuery( '#' ) is not a valid selector"),b[0]=[]),f.apply(this,b)},a.fn.init.prototype=a.fn,a.find=function(a){var b=Array.prototype.slice.call(arguments);if("string"==typeof a&&i.test(a))try{document.querySelector(a)}catch(d){a=a.replace(j,function(a,b,c,d){return"["+b+c+'"'+d+'"]'});try{document.querySelector(a),c("Attribute selector with '#' must be quoted: "+b[0]),b[0]=a}catch(e){c("Attribute selector with '#' was not fixed: "+b[0])}}return h.apply(this,b)};var k;for(k in h)Object.prototype.hasOwnProperty.call(h,k)&&(a.find[k]=h[k]);a.fn.size=function(){return c("jQuery.fn.size() is deprecated; use the .length property"),this.length},a.parseJSON=function(){return c("jQuery.parseJSON is deprecated; use JSON.parse"),JSON.parse.apply(null,arguments)},a.isNumeric=function(b){function d(b){var c=b&&b.toString();return!a.isArray(b)&&c-parseFloat(c)+1>=0}var e=g(b),f=d(b);return e!==f&&c("jQuery.isNumeric() should not be called on constructed objects"),f},d(a,"unique",a.uniqueSort,"jQuery.unique is deprecated, use jQuery.uniqueSort"),d(a.expr,"filters",a.expr.pseudos,"jQuery.expr.filters is now jQuery.expr.pseudos"),d(a.expr,":",a.expr.pseudos,'jQuery.expr[":"] is now jQuery.expr.pseudos');var l=a.ajax;a.ajax=function(){var a=l.apply(this,arguments);return a.promise&&(d(a,"success",a.done,"jQXHR.success is deprecated and removed"),d(a,"error",a.fail,"jQXHR.error is deprecated and removed"),d(a,"complete",a.always,"jQXHR.complete is deprecated and removed")),a};var m=a.fn.removeAttr,n=a.fn.toggleClass,o=/\S+/g;a.fn.removeAttr=function(b){var d=this;return a.each(b.match(o),function(b,e){a.expr.match.bool.test(e)&&(c("jQuery.fn.removeAttr no longer sets boolean properties: "+e),d.prop(e,!1))}),m.apply(this,arguments)},a.fn.toggleClass=function(b){return void 0!==b&&"boolean"!=typeof b?n.apply(this,arguments):(c("jQuery.fn.toggleClass( boolean ) is deprecated"),this.each(function(){var c=this.getAttribute&&this.getAttribute("class")||"";c&&a.data(this,"__className__",c),this.setAttribute&&this.setAttribute("class",c||b===!1?"":a.data(this,"__className__")||"")}))};var p=!1;a.swap&&a.each(["height","width","reliableMarginRight"],function(b,c){var d=a.cssHooks[c]&&a.cssHooks[c].get;d&&(a.cssHooks[c].get=function(){var a;return p=!0,a=d.apply(this,arguments),p=!1,a})}),a.swap=function(a,b,d,e){var f,g,h={};p||c("jQuery.swap() is undocumented and deprecated");for(g in b)h[g]=a.style[g],a.style[g]=b[g];f=d.apply(a,e||[]);for(g in b)a.style[g]=h[g];return f};var q=a.data;a.data=function(b,d,e){var f;return d&&d!==a.camelCase(d)&&(f=a.hasData(b)&&q.call(this,b),f&&d in f)?(c("jQuery.data() always sets/gets camelCased names: "+d),arguments.length>2&&(f[d]=e),f[d]):q.apply(this,arguments)};var r=a.Tween.prototype.run;a.Tween.prototype.run=function(b){a.easing[this.easing].length>1&&(c('easing function "jQuery.easing.'+this.easing.toString()+'" should use only first argument'),a.easing[this.easing]=a.easing[this.easing].bind(a.easing,b,this.options.duration*b,0,1,this.options.duration)),r.apply(this,arguments)};var s=a.fn.load,t=a.event.fix;a.event.props=[],a.event.fixHooks={},a.event.fix=function(b){var d,e=b.type,f=this.fixHooks[e],g=a.event.props;if(g.length)for(c("jQuery.event.props are deprecated and removed: "+g.join());g.length;)a.event.addProp(g.pop());if(f&&!f._migrated_&&(f._migrated_=!0,c("jQuery.event.fixHooks are deprecated and removed: "+e),(g=f.props)&&g.length))for(;g.length;)a.event.addProp(g.pop());return d=t.call(this,b),f&&f.filter?f.filter(d,b):d},a.each(["load","unload","error"],function(b,d){a.fn[d]=function(){var a=Array.prototype.slice.call(arguments,0);return"load"===d&&"string"==typeof a[0]?s.apply(this,a):(c("jQuery.fn."+d+"() is deprecated"),a.splice(0,0,d),arguments.length?this.on.apply(this,a):(this.triggerHandler.apply(this,a),this))}}),a(function(){a(document).triggerHandler("ready")}),a.event.special.ready={setup:function(){this===document&&c("'ready' event is deprecated")}},a.fn.extend({bind:function(a,b,d){return c("jQuery.fn.bind() is deprecated"),this.on(a,null,b,d)},unbind:function(a,b){return c("jQuery.fn.unbind() is deprecated"),this.off(a,null,b)},delegate:function(a,b,d,e){return c("jQuery.fn.delegate() is deprecated"),this.on(b,a,d,e)},undelegate:function(a,b,d){return c("jQuery.fn.undelegate() is deprecated"),1===arguments.length?this.off(a,"**"):this.off(b,a||"**",d)}});var u=a.fn.offset;a.fn.offset=function(){var b,d=this[0],e={top:0,left:0};return d&&d.nodeType?(b=(d.ownerDocument||document).documentElement,a.contains(b,d)?u.apply(this,arguments):(c("jQuery.fn.offset() requires an element connected to a document"),e)):(c("jQuery.fn.offset() requires a valid DOM element"),e)};var v=a.param;a.param=function(b,d){var e=a.ajaxSettings&&a.ajaxSettings.traditional;return void 0===d&&e&&(c("jQuery.param() no longer uses jQuery.ajaxSettings.traditional"),d=e),v.call(this,b,d)};var w=a.fn.andSelf||a.fn.addBack;a.fn.andSelf=function(){return c("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),w.apply(this,arguments)};var x=a.Deferred,y=[["resolve","done",a.Callbacks("once memory"),a.Callbacks("once memory"),"resolved"],["reject","fail",a.Callbacks("once memory"),a.Callbacks("once memory"),"rejected"],["notify","progress",a.Callbacks("memory"),a.Callbacks("memory")]];a.Deferred=function(b){var d=x(),e=d.promise();return d.pipe=e.pipe=function(){var b=arguments;return c("deferred.pipe() is deprecated"),a.Deferred(function(c){a.each(y,function(f,g){var h=a.isFunction(b[f])&&b[f];d[g[1]](function(){var b=h&&h.apply(this,arguments);b&&a.isFunction(b.promise)?b.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[g[0]+"With"](this===e?c.promise():this,h?[b]:arguments)})}),b=null}).promise()},b&&b.call(d,d),d}}(jQuery,window);
\ No newline at end of file
html.lb-disable-scrolling {
overflow: hidden;
/* Position fixed required for iOS. Just putting overflow: hidden; on the body is not enough. */
position: fixed;
height: 100vh;
width: 100vw;
}
.lightboxOverlay {
position: absolute;
top: 0;
left: 0;
z-index: 9999;
background-color: black;
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
opacity: 0.8;
display: none;
}
.lightbox {
position: absolute;
left: 0;
width: 100%;
z-index: 10000;
text-align: center;
line-height: 0;
font-weight: normal;
}
.lightbox .lb-image {
display: block;
height: auto;
max-width: inherit;
max-height: none;
border-radius: 3px;
/* Image border */
border: 4px solid white;
}
.lightbox a img {
border: none;
}
.lb-outerContainer {
position: relative;
*zoom: 1;
width: 250px;
height: 250px;
margin: 0 auto;
border-radius: 4px;
/* Background color behind image.
This is visible during transitions. */
background-color: white;
}
.lb-outerContainer:after {
content: "";
display: table;
clear: both;
}
.lb-loader {
position: absolute;
top: 43%;
left: 0;
height: 25%;
width: 100%;
text-align: center;
line-height: 0;
}
.lb-cancel {
display: block;
width: 32px;
height: 32px;
margin: 0 auto;
background: url(../images/loading.gif) no-repeat;
}
.lb-nav {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
z-index: 10;
}
.lb-container > .nav {
left: 0;
}
.lb-nav a {
outline: none;
background-image: url('data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');
}
.lb-prev, .lb-next {
height: 100%;
cursor: pointer;
display: block;
}
.lb-nav a.lb-prev {
width: 34%;
left: 0;
float: left;
background: url(../images/prev.png) left 48% no-repeat;
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
opacity: 0;
-webkit-transition: opacity 0.6s;
-moz-transition: opacity 0.6s;
-o-transition: opacity 0.6s;
transition: opacity 0.6s;
}
.lb-nav a.lb-prev:hover {
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
opacity: 1;
}
.lb-nav a.lb-next {
width: 64%;
right: 0;
float: right;
background: url(../images/next.png) right 48% no-repeat;
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
opacity: 0;
-webkit-transition: opacity 0.6s;
-moz-transition: opacity 0.6s;
-o-transition: opacity 0.6s;
transition: opacity 0.6s;
}
.lb-nav a.lb-next:hover {
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
opacity: 1;
}
.lb-dataContainer {
margin: 0 auto;
padding-top: 5px;
*zoom: 1;
width: 100%;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
}
.lb-dataContainer:after {
content: "";
display: table;
clear: both;
}
.lb-data {
padding: 0 4px;
color: #ccc;
}
.lb-data .lb-details {
width: 85%;
float: left;
text-align: left;
line-height: 1.1em;
}
.lb-data .lb-caption {
font-size: 13px;
font-weight: bold;
line-height: 1em;
}
.lb-data .lb-caption a {
color: #4ae;
}
.lb-data .lb-number {
display: block;
clear: left;
padding-bottom: 1em;
font-size: 12px;
color: #999999;
}
.lb-data .lb-close {
display: block;
float: right;
width: 30px;
height: 30px;
background: url(../images/close.png) top right no-repeat;
text-align: right;
outline: none;
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
opacity: 0.7;
-webkit-transition: opacity 0.2s;
-moz-transition: opacity 0.2s;
-o-transition: opacity 0.2s;
transition: opacity 0.2s;
}
.lb-data .lb-close:hover {
cursor: pointer;
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
opacity: 1;
}
.lb-loader,.lightbox{text-align:center;line-height:0}.lb-dataContainer:after,.lb-outerContainer:after{content:"";clear:both}html.lb-disable-scrolling{overflow:hidden;position:fixed;height:100vh;width:100vw}.lightboxOverlay{position:absolute;top:0;left:0;z-index:9999;background-color:#000;filter:alpha(Opacity=80);opacity:.8;display:none}.lightbox{position:absolute;left:0;width:100%;z-index:10000;font-weight:400}.lightbox .lb-image{display:block;height:auto;max-width:inherit;max-height:none;border-radius:3px;border:4px solid #fff}.lightbox a img{border:none}.lb-outerContainer{position:relative;width:250px;height:250px;margin:0 auto;border-radius:4px;background-color:#fff}.lb-loader,.lb-nav{position:absolute;left:0}.lb-outerContainer:after{display:table}.lb-loader{top:43%;height:25%;width:100%}.lb-cancel{display:block;width:32px;height:32px;margin:0 auto;background:url(../images/loading.gif) no-repeat}.lb-nav{top:0;height:100%;width:100%;z-index:10}.lb-container>.nav{left:0}.lb-nav a{outline:0;background-image:url(data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==)}.lb-next,.lb-prev{height:100%;cursor:pointer;display:block}.lb-nav a.lb-prev{width:34%;left:0;float:left;background:url(../images/prev.png) left 48% no-repeat;filter:alpha(Opacity=0);opacity:0;-webkit-transition:opacity .6s;-moz-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s}.lb-nav a.lb-prev:hover{filter:alpha(Opacity=100);opacity:1}.lb-nav a.lb-next{width:64%;right:0;float:right;background:url(../images/next.png) right 48% no-repeat;filter:alpha(Opacity=0);opacity:0;-webkit-transition:opacity .6s;-moz-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s}.lb-nav a.lb-next:hover{filter:alpha(Opacity=100);opacity:1}.lb-dataContainer{margin:0 auto;padding-top:5px;width:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.lb-dataContainer:after{display:table}.lb-data{padding:0 4px;color:#ccc}.lb-data .lb-details{width:85%;float:left;text-align:left;line-height:1.1em}.lb-data .lb-caption{font-size:13px;font-weight:700;line-height:1em}.lb-data .lb-caption a{color:#4ae}.lb-data .lb-number{display:block;clear:left;padding-bottom:1em;font-size:12px;color:#999}.lb-data .lb-close{display:block;float:right;width:30px;height:30px;background:url(../images/close.png) top right no-repeat;text-align:right;outline:0;filter:alpha(Opacity=70);opacity:.7;-webkit-transition:opacity .2s;-moz-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.lb-data .lb-close:hover{cursor:pointer;filter:alpha(Opacity=100);opacity:1}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment