commit ad0dd6a6e14c88a7b52a92d2af683c1af9312c85 Author: Kwesi Banson Date: Wed Feb 22 07:48:50 2023 +0000 first commit, after modifying client section diff --git a/.gitattributes b/.gitattributes new file mode 100755 index 0000000..967315d --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +* text=auto +*.css linguist-vendored +*.scss linguist-vendored +*.js linguist-vendored +CHANGELOG.md export-ignore diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..b6a4b86 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +/node_modules +/public/hot +/public/storage +/storage/*.key +/vendor +/.idea +/.vagrant +Homestead.json +Homestead.yaml +npm-debug.log +yarn-error.log +.env diff --git a/.htaccess b/.htaccess new file mode 100755 index 0000000..e2c7e46 --- /dev/null +++ b/.htaccess @@ -0,0 +1,26 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Handle Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + + + order allow,deny + deny from all + satisfy all + diff --git a/accounts.md b/accounts.md new file mode 100755 index 0000000..0e148bf --- /dev/null +++ b/accounts.md @@ -0,0 +1,32 @@ +# URL +- http://206.225.84.201/general/team_tracker +## Accounts +- charity +- char5009 + +- david +- king3009 + +- martha +- zambezi7009 + +- sam +- samuel4009 + +- kopano +- victorydance + +- hilary +- nairobi3005 + +- fanny +- windfall2009 + +- mphatso +- orchid1009 + +- diana@click-mobile.com +- flowers500 + +- effie@click-mobile.com +- fridays@800 \ No newline at end of file diff --git a/aliases b/aliases new file mode 100755 index 0000000..80894c1 --- /dev/null +++ b/aliases @@ -0,0 +1,283 @@ +alias ..="cd .." +alias ...="cd ../.." + +alias h='cd ~' +alias c='clear' +alias art=artisan + +alias codecept='vendor/bin/codecept' +alias phpspec='vendor/bin/phpspec' +alias phpunit='vendor/bin/phpunit' +alias serve=serve-laravel + +alias xoff='sudo phpdismod -s cli xdebug' +alias xon='sudo phpenmod -s cli xdebug' + +function artisan() { + php artisan "$@" +} + +function dusk() { + pids=$(pidof /usr/bin/Xvfb) + + if [ ! -n "$pids" ]; then + Xvfb :0 -screen 0 1280x960x24 & + fi + + php artisan dusk --filter "$@" +} + +function php56() { + sudo update-alternatives --set php /usr/bin/php5.6 + sudo update-alternatives --set php-config /usr/bin/php-config5.6 + sudo update-alternatives --set phpize /usr/bin/phpize5.6 +} + +function php70() { + sudo update-alternatives --set php /usr/bin/php7.0 + sudo update-alternatives --set php-config /usr/bin/php-config7.0 + sudo update-alternatives --set phpize /usr/bin/phpize7.0 +} + +function php71() { + sudo update-alternatives --set php /usr/bin/php7.1 + sudo update-alternatives --set php-config /usr/bin/php-config7.1 + sudo update-alternatives --set phpize /usr/bin/phpize7.1 +} + +function php72() { + sudo update-alternatives --set php /usr/bin/php7.2 + sudo update-alternatives --set php-config /usr/bin/php-config7.2 + sudo update-alternatives --set phpize /usr/bin/phpize7.2 +} + +function php73() { + sudo update-alternatives --set php /usr/bin/php7.3 + sudo update-alternatives --set php-config /usr/bin/php-config7.3 + sudo update-alternatives --set phpize /usr/bin/phpize7.3 +} + +function php74() { + sudo update-alternatives --set php /usr/bin/php7.4 + sudo update-alternatives --set php-config /usr/bin/php-config7.4 + sudo update-alternatives --set phpize /usr/bin/phpize7.4 +} + +function serve-apache() { + if [[ "$1" && "$2" ]] + then + sudo bash /vagrant/vendor/laravel/homestead/scripts/create-certificate.sh "$1" + sudo dos2unix /vagrant/vendor/laravel/homestead/scripts/site-types/apache.sh + sudo bash /vagrant/vendor/laravel/homestead/scripts/site-types/apache.sh "$1" "$2" 80 443 "${3:-7.4}" + else + echo "Error: missing required parameters." + echo "Usage: " + echo " serve-apache domain path" + fi +} + +function serve-laravel() { + if [[ "$1" && "$2" ]] + then + sudo bash /vagrant/vendor/laravel/homestead/scripts/create-certificate.sh "$1" + sudo dos2unix /vagrant/vendor/laravel/homestead/scripts/site-types/laravel.sh + sudo bash /vagrant/vendor/laravel/homestead/scripts/site-types/laravel.sh "$1" "$2" 80 443 "${3:-7.4}" + else + echo "Error: missing required parameters." + echo "Usage: " + echo " serve domain path" + fi +} + +function serve-proxy() { + if [[ "$1" && "$2" ]] + then + sudo dos2unix /vagrant/vendor/laravel/homestead/scripts/site-types/proxy.sh + sudo bash /vagrant/vendor/laravel/homestead/scripts/site-types/proxy.sh "$1" "$2" 80 443 "${3:-7.4}" + else + echo "Error: missing required parameters." + echo "Usage: " + echo " serve-proxy domain port" + fi +} + +function serve-silverstripe() { + if [[ "$1" && "$2" ]] + then + sudo bash /vagrant/vendor/laravel/homestead/scripts/create-certificate.sh "$1" + sudo dos2unix /vagrant/vendor/laravel/homestead/scripts/site-types/silverstripe.sh + sudo bash /vagrant/vendor/laravel/homestead/scripts/site-types/silverstripe.sh "$1" "$2" 80 443 "${3:-7.4}" + else + echo "Error: missing required parameters." + echo "Usage: " + echo " serve-silverstripe domain path" + fi +} + +function serve-spa() { + if [[ "$1" && "$2" ]] + then + sudo bash /vagrant/vendor/laravel/homestead/scripts/create-certificate.sh "$1" + sudo dos2unix /vagrant/vendor/laravel/homestead/scripts/site-types/spa.sh + sudo bash /vagrant/vendor/laravel/homestead/scripts/site-types/spa.sh "$1" "$2" 80 443 "${3:-7.4}" + else + echo "Error: missing required parameters." + echo "Usage: " + echo " serve-spa domain path" + fi +} + +function serve-statamic() { + if [[ "$1" && "$2" ]] + then + sudo bash /vagrant/vendor/laravel/homestead/scripts/create-certificate.sh "$1" + sudo dos2unix /vagrant/vendor/laravel/homestead/scripts/site-types/statamic.sh + sudo bash /vagrant/vendor/laravel/homestead/scripts/site-types/statamic.sh "$1" "$2" 80 443 "${3:-7.4}" + else + echo "Error: missing required parameters." + echo "Usage: " + echo " serve-statamic domain path" + fi +} + +function serve-symfony2() { + if [[ "$1" && "$2" ]] + then + sudo bash /vagrant/vendor/laravel/homestead/scripts/create-certificate.sh "$1" + sudo dos2unix /vagrant/vendor/laravel/homestead/scripts/site-types/symfony2.sh + sudo bash /vagrant/vendor/laravel/homestead/scripts/site-types/symfony2.sh "$1" "$2" 80 443 "${3:-7.4}" + else + echo "Error: missing required parameters." + echo "Usage: " + echo " serve-symfony2 domain path" + fi +} + +function serve-symfony4() { + if [[ "$1" && "$2" ]] + then + sudo bash /vagrant/vendor/laravel/homestead/scripts/create-certificate.sh "$1" + sudo dos2unix /vagrant/vendor/laravel/homestead/scripts/site-types/symfony4.sh + sudo bash /vagrant/vendor/laravel/homestead/scripts/site-types/symfony4.sh "$1" "$2" 80 443 "${3:-7.4}" + else + echo "Error: missing required parameters." + echo "Usage: " + echo " serve-symfony4 domain path" + fi +} + +function serve-pimcore() { + if [[ "$1" && "$2" ]] + then + sudo bash /vagrant/vendor/laravel/homestead/scripts/create-certificate.sh "$1" + sudo dos2unix /vagrant/vendor/laravel/homestead/scripts/site-types/pimcore.sh + sudo bash /vagrant/vendor/laravel/homestead/scripts/site-types/pimcore.sh "$1" "$2" 80 443 "${3:-7.4}" + else + echo "Error: missing required parameters." + echo "Usage: " + echo " serve-pimcore domain path" + fi +} + +function share() { + if [[ "$1" ]] + then + ngrok http ${@:2} -host-header="$1" 80 + else + echo "Error: missing required parameters." + echo "Usage: " + echo " share domain" + echo "Invocation with extra params passed directly to ngrok" + echo " share domain -region=eu -subdomain=test1234" + fi +} + +function flip() { + sudo bash /vagrant/vendor/laravel/homestead/scripts/flip-webserver.sh +} + +function __has_pv() { + $(hash pv 2>/dev/null); + + return $? +} + +function __pv_install_message() { + if ! __has_pv; then + echo $1 + echo "Install pv with \`sudo apt-get install -y pv\` then run this command again." + echo "" + fi +} + +function dbexport() { + FILE=${1:-/vagrant/mysqldump.sql.gz} + + # This gives an estimate of the size of the SQL file + # It appears that 80% is a good approximation of + # the ratio of estimated size to actual size + SIZE_QUERY="select ceil(sum(data_length) * 0.8) as size from information_schema.TABLES" + + __pv_install_message "Want to see export progress?" + + echo "Exporting databases to '$FILE'" + + if __has_pv; then + ADJUSTED_SIZE=$(mysql --vertical -uhomestead -psecret -e "$SIZE_QUERY" 2>/dev/null | grep 'size' | awk '{print $2}') + HUMAN_READABLE_SIZE=$(numfmt --to=iec-i --suffix=B --format="%.3f" $ADJUSTED_SIZE) + + echo "Estimated uncompressed size: $HUMAN_READABLE_SIZE" + mysqldump -uhomestead -psecret --all-databases --skip-lock-tables --routines 2>/dev/null | pv --size=$ADJUSTED_SIZE | gzip > "$FILE" + else + mysqldump -uhomestead -psecret --all-databases --skip-lock-tables --routines 2>/dev/null | gzip > "$FILE" + fi + + echo "Done." +} + +function dbimport() { + FILE=${1:-/vagrant/mysqldump.sql.gz} + + __pv_install_message "Want to see import progress?" + + echo "Importing databases from '$FILE'" + + if __has_pv; then + pv "$FILE" --progress --eta | zcat | mysql -uhomestead -psecret 2>/dev/null + else + cat "$FILE" | zcat | mysql -uhomestead -psecret 2>/dev/null + fi + + echo "Done." +} + +function xphp() { + (php -m | grep -q xdebug) + if [[ $? -eq 0 ]] + then + XDEBUG_ENABLED=true + else + XDEBUG_ENABLED=false + fi + + if ! $XDEBUG_ENABLED; then xon; fi + + php \ + -dxdebug.remote_host=192.168.10.1 \ + -dxdebug.remote_autostart=1 \ + "$@" + + if ! $XDEBUG_ENABLED; then xoff; fi +} + +function update-socket-wrench() { + cd /var/www/socket-wrench + git pull origin release + composer install + php artisan migrate --force +} + +function seed-socket-wrench() { + cd /var/www/socket-wrench + php artisan db:seed +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php new file mode 100755 index 0000000..a8c5158 --- /dev/null +++ b/app/Console/Kernel.php @@ -0,0 +1,42 @@ +command('inspire') + // ->hourly(); + } + + /** + * Register the commands for the application. + * + * @return void + */ + protected function commands() + { + $this->load(__DIR__.'/Commands'); + + require base_path('routes/console.php'); + } +} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php new file mode 100755 index 0000000..7e2563a --- /dev/null +++ b/app/Exceptions/Handler.php @@ -0,0 +1,53 @@ +middleware('guest'); + } +} diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php new file mode 100755 index 0000000..b2ea669 --- /dev/null +++ b/app/Http/Controllers/Auth/LoginController.php @@ -0,0 +1,39 @@ +middleware('guest')->except('logout'); + } +} diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php new file mode 100755 index 0000000..f77265a --- /dev/null +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -0,0 +1,71 @@ +middleware('guest'); + } + + /** + * Get a validator for an incoming registration request. + * + * @param array $data + * @return \Illuminate\Contracts\Validation\Validator + */ + protected function validator(array $data) + { + return Validator::make($data, [ + 'name' => 'required|string|max:255', + 'email' => 'required|string|email|max:255|unique:users', + 'password' => 'required|string|min:6|confirmed', + ]); + } + + /** + * Create a new user instance after a valid registration. + * + * @param array $data + * @return \App\User + */ + protected function create(array $data) + { + return User::create([ + 'name' => $data['name'], + 'email' => $data['email'], + 'password' => bcrypt($data['password']), + ]); + } +} diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php new file mode 100755 index 0000000..cf726ee --- /dev/null +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -0,0 +1,39 @@ +middleware('guest'); + } +} diff --git a/app/Http/Controllers/ClickAppsController.php b/app/Http/Controllers/ClickAppsController.php new file mode 100755 index 0000000..b43ee3d --- /dev/null +++ b/app/Http/Controllers/ClickAppsController.php @@ -0,0 +1,166 @@ + 'App Name', + 'operator' => 'Operator', + 'country' => 'Counry', + 'status' => 'Status' + ]; + if (!empty($request->filter) && !empty($request->keyword)) { + $click_apps = $this->resolveAppQuery($click_apps, $request); + } + + $click_apps = $click_apps->orderBy('apps.created_at', 'DESC')->paginate(20); + + $data = [ + 'page_title' => 'Click Apps', + 'click_apps' => $click_apps, + 'columns' => $columns + ]; + + return view('click_apps.index', $data); + } + + public function create() + { + $data = $this->crudData(); + return view('click_apps.create', $data); + } + + public function store(Request $request) + { + $request->validate($this->valdtePrams()); + DB::transaction(function () use ($request) { + Models\ClickApps::create($request->only($this->whiteListCrudParams())); + }); + Session::flash('success_message', 'App record created successfully'); + return redirect(url('clickapps/create')); + } + + public function edit($id) + { + $clickapp = Models\ClickApps::find($id); + if (!$clickapp) { + Session::flash('error_message', "Record with ID: {$id} not found"); + return redirect(url('clickapps')); + } + $data = $this->crudData(); + return view('click_apps.edit', array_merge($data, [ + 'clickapp' => $clickapp + ])); + } + + public function update(Request $request, $id) + { + $clickapp = Models\ClickApps::find($id); + if (!$clickapp) { + Session::flash('error_message', "Record with ID: {$id} not found"); + return redirect(url('clickapps')); + } + $request->validate($this->valdtePrams()); + DB::transaction(function () use ($request, $clickapp) { + $clickapp->update($request->only($this->whiteListCrudParams())); + }); + Session::flash('success_message', 'App record updated successfully'); + return redirect(url('clickapps')); + } + + public function destroy($id) + { + Models\ClickApps::destroy($id); + if (request()->ajax()) { + $res = ['code' => 1]; + return response()->json($res); + } + Session::flash('success_message', 'App successfully deleted!'); + return redirect(url('clickapps')); + } + + private function crudData() + { + $click_apps = Models\ClickApps::get(); + $countries = Models\Country::pluck('en_short_name', 'alpha_2_code'); + $net_ops = Models\NetworkOps::pluck('name', 'name'); + $toll_types = ['YES' => 'YES', 'NO' => 'NO']; + $status_types = ['ACTIVE' => 'ACTIVE', 'PENDING' => 'PENDING', 'CANCELLED' => 'CANCELLED', 'FINISHED' => 'FINISHED']; + return [ + 'page_title' => 'Click Apps', + 'click_apps' => $click_apps, + 'countries' => $countries, + 'net_ops' => $net_ops, + 'toll_types' => $toll_types, + 'status_types' => $status_types + ]; + } + + private function valdtePrams() + { + return [ + 'app_name' => 'required', + 'app_type' => 'required', + 'client' => 'required', + 'code' => 'required', + 'country' => 'required', + 'operator' => 'required', + 'tollfree' => 'required', + 'app_path' => 'required', + 'launch_date' => 'required', + 'status' => 'required', + 'other_info' => 'required', + ]; + } + private function whiteListCrudParams() + { + return [ + 'app_name', + 'app_type', + 'client', + 'code', + 'country', + 'operator', + 'tollfree', + 'app_path', + 'launch_date', + 'status', + 'other_info', + ]; + } + + function resolveAppQuery($clients, $request) + { + switch ($request->filter) { + case 'app_name': + return $clients + ->where('app_name', 'like', "%$request->keyword%"); + break; + case 'operator': + return $clients + ->where('operator', 'like', "%$request->keyword%"); + break; + case 'country': + return $clients + ->where('country', 'like', "%$request->keyword%"); + break; + case 'status': + return $clients + ->where('status', 'like', "%$request->keyword%"); + break; + default: + # code... + break; + } + } +} diff --git a/app/Http/Controllers/ClickInfrastructureController.php b/app/Http/Controllers/ClickInfrastructureController.php new file mode 100755 index 0000000..46097ee --- /dev/null +++ b/app/Http/Controllers/ClickInfrastructureController.php @@ -0,0 +1,200 @@ +get(); + $data = [ + 'page_title' => 'Servers', + 'servers' => $servers + ]; + return view('infrastructure.index', $data); + + } + public function domains(){ + + } + public function create_direct($id) + { + + $server = Models\ClickServer::find($id); + $data = [ + 'page_title' => 'Servers', + 'server' => $server, + 'connection_types' => ['vpn' => 'VPN', 'fqdn' => 'FQDN' ] + ]; + return view('infrastructure.create_direct_connection', $data); + } + public function store_direct(Request $request){ + // dd($request->all()); + + $request->validate([ + 'direct_partner' => 'required', + 'server_id' => 'required', + 'connection_type' => 'required', + 'port' => 'required_with:main_ip_address,domain_name', + 'main_ip_address' => 'sometimes|nullable|ip', + 'private_ip_address' => 'sometimes|nullable|ip', + 'domain_name' => 'required_if:connection_type,fqdn|nullable|regex:/^([a-zA-Z0-9][a-zA-Z0-9-_]*\.)*[a-zA-Z0-9]*[a-zA-Z0-9-_]*[[a-zA-Z0-9]+$/', + 'vpn_peer_ip' => 'required_if:connection_type,vpn|nullable|ip', + 'connection_form' => 'sometimes|nullable|max:2000|mimes:doc,docx,xlx,xlsx,png,jpg,jpeg,bmp,pdf', + ]); + // dd($request->all()); + if ($request->main_ip_address == null && $request->domain_name == null ) { + return redirect()->back()->withInput()->withErrors(['You need either an IP address or a Domain name']); + } + $direct_arr = $request->except('_token'); + $direct_arr['last_modified_by'] = session('current_user.id'); + + if ($request->hasFile('connection_form')) { + if ($request->file('connection_form')->isValid()) { + $filename = "connection_document_" . time() . "." . $request->connection_form->extension(); + $request->connection_form->storeAs('connection_files', $filename, 'public'); + $direct_arr['connection_document'] = $filename; + } + } + // dd($direct_arr); + + $result = Models\DirectConnection::create($direct_arr); + Session::flash('success_message', 'Direct connection successfully added'); + return redirect(url('infrastructure/servers')); + } + + public function edit_direct($id) + { + + $direct_connection = Models\DirectConnection::find($id); + // dump($direct_connection); + // TNM_CLICKB_NOSIR_NEW_SMSC + $server = Models\ClickServer::find($direct_connection->server_id); + // dd($server); + $data = [ + 'page_title' => 'Servers', + 'server' => $server, + 'direct_connection' => $direct_connection, + 'connection_types' => ['vpn' => 'VPN', 'fqdn' => 'FQDN' ] + ]; + return view('infrastructure.edit_direct_connection', $data); + } + public function update_direct(Request $request){ + + $request->validate([ + 'direct_partner' => 'required', + 'server_id' => 'required', + 'connection_type' => 'required', + 'port' => 'required_with:main_ip_address,domain_name', + 'main_ip_address' => 'sometimes|nullable|ip', + 'private_ip_address' => 'sometimes|nullable|ip', + 'domain_name' => 'sometimes|nullable|regex:/^([a-zA-Z0-9][a-zA-Z0-9-_]*\.)*[a-zA-Z0-9]*[a-zA-Z0-9-_]*[[a-zA-Z0-9]+$/', + 'vpn_peer_ip' => 'required_if:connection_type,vpn|nullable|ip', + 'connection_form' => 'sometimes|nullable|max:2000|mimes:doc,docx,xlx,xlsx,png,jpg,jpeg,bmp', + ]); + if ($request->direct_id == null) { + return redirect()->back()->withInput()->withErrors(['Your request could not be handled at this time. Try again!']); + } + $direct_connection = Models\DirectConnection::find($request->direct_id); + + if ($request->main_ip_address == null && $request->domain_name == null ) { + return redirect()->back()->withInput()->withErrors(['You need either an IP address or a Domain name']); + } + $direct_arr = $request->except('_token'); + $direct_arr['last_modified_by'] = session('current_user.id'); + // dd($direct_arr); + + if ($request->hasFile('connection_form')) { + if ($request->file('connection_form')->isValid()) { + $filename = "connection_document_" . time() . "." . $request->connection_form->extension(); + $request->connection_form->storeAs('connection_files', $filename, 'public'); + $direct_arr['connection_document'] = $filename; + } + } + + $result = $direct_connection->update($direct_arr); + Session::flash('success_message', 'Direct connection successfully updated'); + return redirect(url('infrastructure/servers')); + } + public function server_list(){ + + $servers = Models\ClickServer::with('credentials_info')->get(); + // dd($servers[0]->credentials_info->where('username', 'root')->first()); + $data = [ + 'page_title' => 'Servers', + 'servers' => $servers + ]; + return view('infrastructure.server_list', $data); + + } + public function edit_server($id) + { + $server = Models\ClickServer::find($id); + $credentials = Models\ServerCredential::where('username', 'root')->where('server_id', $server->id) ->first(); + + $data = [ + 'page_title' => 'Servers', + 'server' => $server, + 'credentials' => $credentials + ]; + return view('infrastructure.edit_server', $data); + } + public function updateserver(Request $request){ + $request->validate([ + 'friendly_name' => 'required', + 'server_id' => 'required', + 'public_ip_address' => 'sometimes|ip', + 'private_ip_address' => 'sometimes|nullable|ip', + 'main_use' => 'required', + 'remarks' => 'nullable', + 'password' => 'nullable', + ]); + $server = Models\ClickServer::findOrFail($request->server_id); + $server_arr = $request->except('_token', 'password', 'server_id'); + $server_arr['last_modified_by'] = session('current_user.id'); + if ($request->password !== null) { + // dd('foo bar'); + $credentials_arr = [ + 'server_id' => $request->server_id, + 'username' => 'root', + 'password' => encrypt($request->password), + 'last_modified_by' => session('current_user.id') + ]; + $retval = Models\ServerCredential::find($request->server_id); + if ($retval) { + $retval->update($credentials_arr); + } + else{ + $result = Models\ServerCredential::create($credentials_arr); + } + } + $result = $server->update($server_arr); + Session::flash('success_message', 'Server Details successfully updated'); + return redirect(url('infrastructure/server-list')); + } + public function reveal_password($id){ + $server = Models\ClickServer::find($id); + if ($server) { + $response_arr = [ + 'code' => 1, + 'password' => decrypt($server->root_password) + ]; + } + else{ + $response_arr = [ + 'code' => 3, + 'msg' => 'not found' + ]; + } + return response()->json($response_arr); + } +} +//LJ School Location +//5.637192,-0.158916 +//5.637093,-0.159269 diff --git a/app/Http/Controllers/ClientsController.php b/app/Http/Controllers/ClientsController.php new file mode 100755 index 0000000..4c89f0e --- /dev/null +++ b/app/Http/Controllers/ClientsController.php @@ -0,0 +1,515 @@ +with('auth_user_info','country_info', 'created_by_info')->orderBy('name', 'ASC')->paginate(10); + + $data = [ + 'page_title' => 'Clients', + 'client_arr' => $client_arr, + 'current_user' => session('current_user') + ]; + return view('client.index-tabulator', $data); + } + public function indexBak(){ + $client_arr = new Models\Client; + $client_arr = $client_arr->with('auth_user_info','country_info', 'created_by_info')->orderBy('name', 'ASC')->paginate(10); + $data = [ + 'page_title' => 'Clients', + 'current_user' => session('current_user') + ]; + return view('client.index-rawjs', $data); + } + public function getClientJson(Request $request) + { + /* + $client_arr = new Models\Client; + $client_arr = $client_arr->with('auth_user_info','country_info', 'created_by_info', 'modified_by_info')->orderBy('name', 'ASC')->paginate(20); + + dump($request->all()); + $client_arr = $client_arr->with('auth_user_info','country_info', 'created_by_info', 'modified_by_info') + ->orderBy('name', 'ASC')->paginate(20); + } + */ + $client_arr = \DB::table('clients') + ->join('auth_users AS aumngr', 'aumngr.id', '=', 'clients.auth_user_id') + ->join('auth_users AS aumodify', 'aumodify.id', '=', 'clients.last_modified_by') + ->select('clients.id', 'clients.name', 'clients.status', 'clients.country', 'aumngr.name As accountMgr', 'aumodify.name AS modifiedBy') + ->paginate(15); + + if($request->has('keyword')){ // != '' + $keyword = $request->keyword; + $client_arr = \DB::table('clients') + ->join('auth_users AS aumngr', 'aumngr.id', '=', 'clients.auth_user_id') + ->join('auth_users AS aumodify', 'aumodify.id', '=', 'clients.last_modified_by') + ->select('clients.id','clients.name', 'clients.status', 'clients.country', 'aumngr.name As accountMgr', 'aumodify.name AS modifiedBy') + ->whereRaw("clients.name like '%$keyword%' or clients.status like '%$keyword%' OR clients.country like '%$keyword%' OR aumngr.name like '%$keyword%' OR aumodify.name like '%$keyword%'") + ->paginate(15); + } + + return response()->json($client_arr); + } + public function getClientJsonRawJs(Request $request){ + #$client_arr = new Models\Client; + #$client_arr = $client_arr->with('auth_user_info','country_info', 'created_by_info', 'modified_by_info')->orderBy('name', 'ASC')->paginate(20); + + $client_arr = \DB::table('clients') + ->join('auth_users AS aumngr', 'aumngr.id', '=', 'clients.auth_user_id') + ->join('auth_users AS aumodify', 'aumodify.id', '=', 'clients.last_modified_by') + ->select('clients.id', 'clients.name', 'clients.status', 'clients.country', 'aumngr.name As accountMgr', 'aumodify.name AS modifiedBy') + ->paginate(10); + + if($request->has('keyword')){ // != '' + $keyword = $request->keyword; + $client_arr = \DB::table('clients') + ->join('auth_users AS aumngr', 'aumngr.id', '=', 'clients.auth_user_id') + ->join('auth_users AS aumodify', 'aumodify.id', '=', 'clients.last_modified_by') + ->select('clients.id','clients.name', 'clients.status', 'clients.country', 'aumngr.name As accountMgr', 'aumodify.name AS modifiedBy') + ->whereRaw("clients.name like '%$keyword%' or clients.status like '%$keyword%' OR clients.country like '%$keyword%' OR aumngr.name like '%$keyword%' OR aumodify.name like '%$keyword%'") + ->paginate(10); + } + return response()->json($client_arr); + } + public function indexOriginal() + { + + $client_arr = new Models\Client; + $table_columns = \DB::select(\DB::raw("show full columns from clients")); + $exclude_arr = [ + 'updated_at', 'id', 'auth_user_id', 'pay_mode', 'type', 'created_at', 'currency' + ]; + $columns = []; + $queries = []; + foreach ($table_columns as $key) { + $columns[$key->Field] = $key->Field; + } + foreach ($columns as $col) { + if (request('filter') == $col) { + $filter = request('filter'); + $keyword = request('keyword'); + $table_arr = ['staff_id', 'pay_mode']; + // dump($col); + // dump(in_array($col, $table_arr)); + if (in_array($col, $table_arr)) { + $key = $this->get_filter_ids($filter, $keyword); + if (!empty($key)) { + $keyword = $key; + } + } + $client_arr = $client_arr->where($col, 'like', '%'.$keyword.'%'); + $queries[$col] = request('keyword'); + } + } + + $client_arr = $client_arr->with('payment_type_info', 'service_info', 'auth_user_info', 'created_by_info')->orderBy('name', 'ASC')->paginate(10)->appends($queries); + $columns = Arr::except($columns, $exclude_arr); + $columns['pay_mode'] = 'Payment Mode'; + $data = [ + 'page_title' => 'Clients', + 'columns' => $columns, + 'client_arr' => $client_arr, + 'current_user' => session('current_user') + ]; + return view('client.index', $data); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + $countries = Models\Country::pluck('en_short_name','alpha_2_code'); + $service_type = Models\Service::pluck('name', 'id'); + $payment_type = Models\PaymentType::pluck('name', 'id'); + $auth_users = Models\Account::pluck('name', 'id'); + $status = ['Live' => 'Live', 'inactive' => 'Inactive', 'Prospective' => 'Prospective']; + $currency = Models\Currency::pluck('name','name'); + + $data = [ + 'page_title' => 'Create Client', + 'countries' => $countries, + 'service_type' => $service_type, + 'status' => $status, + 'currency' => $currency, + 'auth_users' => $auth_users, + 'payment_type' => $payment_type + ]; + + return view('client.create', $data); + } + + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + $request->validate([ + 'name' => 'required|unique:clients,name', + 'email' => 'required|email', + 'services' => 'required', + 'country' => 'required', + 'status' => 'required', + 'payment_mode' => 'required', + 'currency' => 'required', + 'auth_user_id' => 'required', // account manager + ]); + + + // dd($request->all()); + //'email' => 'unique:users,email_address' + $client_arr = [ + 'name' => $request->name, + 'email' => $request->email, + 'country' => $request->country, + 'status' => $request->status, + 'pay_mode' => $request->payment_mode, + 'currency' => $request->currency, + 'auth_user_id' => $request->auth_user_id, // account manager + 'created_by' => session('current_user.id'), + 'last_modified_by' => session('current_user.id') + ]; + if ($request->notes) { + $client_arr['notes'] = $request->notes; + } + if ($request->skype_name) { + $client_arr['skype_name'] = $request->skype_name; + } + if ($request->linkedin_name) { + $client_arr['linkedin_name'] = $request->linkedin_name; + } + + $result = Models\Client::create($client_arr); + + if (in_array('3', $request->services)) { + \Log::info('ussd client detected'); + $ussd_client_payment_arr = [ + 'client_id' => $result->id, + 'last_modified_by_id' => session('current_user.id') + ]; + $retval = Models\UssdClientPayment::create($ussd_client_payment_arr); + //TODO send an email to jim/priscilla about new USSD client, + #dispatch(new SendNewUssdClientEmail($result)); + } + $retval = $this->store_services($request->services, $result->id); + + Session::flash('success_message', 'Client successfully added'); + return redirect(url('clients')); + } + public function notesStore(Request $request) + { + $request->validate([ + 'client_id' => 'required', + 'notes_body' => 'required' + ]); + $auth_user = session('current_user'); + + // dd($request->all()); + //'email' => 'unique:users,email_address' + $notes_arr = [ + 'notes_body' => $request->notes_body, + 'services' => implode(',', $request->services), + 'auth_user_id' => $auth_user['id'], + 'client_id' => $request->client_id + ]; + + //todo : send emails + //dd($notes_arr); + $result = Models\ClientNote::create($notes_arr); + if ($result) { + $data = ['code' => 1, 'msg' => 'Notes successfully added']; + } + else{ + $data = ['code' => 3, 'msg' => 'Your request could not be handled at this time']; + } + return response()->json($data, 200); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + + $showclient = Models\Client::with('service_info', 'country_info', 'auth_user_info')->find($id); + $service_type = Models\Service::pluck('name', 'id'); + $service_type_names = Models\Service::pluck('name', 'name'); + $show_services = Models\ClientCategory::where('client_id', $id)->get(); + $show_notes = Models\ClientNote::with('created_by_info', 'client_info')->where('client_id', $id)->orderBy('id', 'DESC')->get()->take(20); + + + $data = [ + 'page_title' => 'Show Client', + 'showclient' => $showclient, + 'show_services' => $show_services, + 'service_type' => $service_type, + 'service_type_names' => $service_type_names, + 'show_notes' => $show_notes + ]; + + return view('client.show', $data); + } + public function showservices($id) + { + $show_services = Models\ClientCategory::where('client_id', $id)->get(); + dd($show_services); + $data = [ + 'page_title' => 'Show Services', + 'show_services' => $show_services + ]; + + return view('client.services', $data); + } + public function editservice($id) + { + $service = Models\ClientCategory::find($id); + dd($service); + $data = [ + 'page_title' => 'Show Services', + 'service' => $service + ]; + return view('client.service-edit', $data); + } + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + $client = Models\Client::find($id); + + + $service_type = Models\Service::pluck('name', 'id'); + // $payment_type = Models\PaymentType::pluck('name', 'id'); + + $countries = Models\Country::pluck('en_short_name','alpha_2_code'); + + $payment_type = [1 => 'Prepaid', 2 => 'Postpaid']; // Models\PaymentType::pluck('name', 'id')->toArray(); + $status = ['Live' => 'Live', 'inactive' => 'Inactive', 'Prospective' => 'Prospective']; + $currency = Models\Currency::pluck('name', 'name'); // + // dd($currency); + $auth_users = Models\Account::pluck('name', 'id'); + + // dump(array_flatten($client->client_services)); + $data = [ + 'client' => $client, + 'countries' => $countries, + 'service_type' => $service_type->toArray(), + 'payment_type' => $payment_type, + 'status' => $status, + 'auth_users' => $auth_users, + 'currency' => $currency + ]; + // dd($service_type->toArray()); + return view('client.edit', $data); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + + $request->validate([ + 'name' => 'required', + // 'email' => 'required|email', + // 'services' => 'required', + 'country' => 'required', + 'status' => 'required', + // 'payment_mode' => 'required', + 'currency' => 'required', + ]); + $client_update = Models\Client::find($id); + + //dd($request->all()); + $client_update->name = $request->name; + $client_update->email = $request->email; + $client_update->contact_person = $request->contact_person; + $client_update->status = $request->status; + $client_update->pay_mode = $request->payment_mode; + $client_update->country = $request->country; + $client_update->currency = $request->currency; + $client_update->notes = $request->notes; + $client_update->skype_name = $request->skype_name; + $client_update->linkedin_name = $request->linkedin_name; + $client_update->created_by = session('current_user.id'); + $client_update->last_modified_by = session('current_user.id'); + + $result = $client_update->save(); + + $client = Models\Client::find($id); + /* + if (in_array('3', $request->services)) { + if ($request->status == 'active' && $client_update->status !== 'active') { + \log::info('ussd client active detected'); + #dispatch(new SendUssdClientActiveEmail($client)); + } + } + + if (in_array('3', $request->services)) { + \Log::info('ussd client detected'); + $ussd_client_payment_arr = [ + 'client_id' => $client_update->id, + 'last_modified_by_id' => session('current_user.id') + ]; + $retval = Models\UssdClientPayment::create($ussd_client_payment_arr); + //TODO send an email to jim/priscilla about new USSD client, + #dispatch(new SendNewUssdClientEmail($client_update)); + } + $retval = $this->update_services($request->services, $client_update->id); + */ + + + + Session::flash('success_message', 'Client successfully Updated'); + return redirect(url('clients')); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $result = Models\Client::destroy($id); + if (request()->ajax()) { + $result_arr = ['code' => 1]; + return response()->json($result_arr); + } + Session::flash('success_message', 'Client successfully deleted!'); + return redirect(route('client.index')); + } + + public function store_services($services_arr, $client_id){ + foreach ($services_arr as $id) { + $client_arr = [ + 'client_id' => $client_id, + 'category_id' => $id + ]; + $result = Models\ClientCategory::create($client_arr); + } + return true; + } + public function update_services($services_arr, $client_id){ + // remove and add will think of a better approach later + $result = Models\ClientCategory::where('client_id', $client_id)->delete(); + + foreach ($services_arr as $id) { + $client_arr = [ + 'client_id' => $client_id, + 'category_id' => $id + ]; + $result = Models\ClientCategory::create($client_arr); + } + return true; + } + + public function get_filter_ids($filter, $keyword) + { + switch ($filter) { + case 'status': + $id = Models\Client::where('status', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'type': + $id = Models\Client::where('type', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'country': + $id = Models\Country::where('alpha_2_code', 'like', "%$keyword%")->orWhere('alpha_3_code', 'like', "%$keyword%")->orWhere('en_short_name', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'currency': + $id = Models\Client::where('currency', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'auth_user_id': + $id = Models\SystemUser::where('name', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'name': + // $this->log_query(); + $id = Models\Client::where('name', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'pay_mode': + // $this->log_query(); + $id = Models\PaymentType::where('name', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + default: + return ''; + break; + } + } + + +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100755 index 0000000..0375f82 --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,19 @@ + $sql)); + } + ); + } +} diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php new file mode 100755 index 0000000..d93c4c7 --- /dev/null +++ b/app/Http/Controllers/DashboardController.php @@ -0,0 +1,15 @@ + 'Dashboard' + ]; + return view('dashboard.index', $data); + } +} diff --git a/app/Http/Controllers/FilesController.php b/app/Http/Controllers/FilesController.php new file mode 100755 index 0000000..d1d98d4 --- /dev/null +++ b/app/Http/Controllers/FilesController.php @@ -0,0 +1,20 @@ + 'Files', + 'servers' => $files + ]; + return view('infrastructure.index', $data); + //sudo chown vagrant.vagrant ~/.npm/ -R + } +} diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php new file mode 100755 index 0000000..7cbc2c3 --- /dev/null +++ b/app/Http/Controllers/HomeController.php @@ -0,0 +1,28 @@ +middleware('auth'); + } + + /** + * Show the application dashboard. + * + * @return \Illuminate\Contracts\Support\Renderable + */ + public function index() + { + return view('home'); + } +} diff --git a/app/Http/Controllers/LoginController.php b/app/Http/Controllers/LoginController.php new file mode 100755 index 0000000..5ab02a9 --- /dev/null +++ b/app/Http/Controllers/LoginController.php @@ -0,0 +1,70 @@ + $designation + ]; + + return view('login.index', $data); + } + + public function handleLogin(Request $request){ + $this->validate($request, ['email' => 'required', 'password' => 'required']); + + $logged_in = Models\SystemUser::with('designation_info')->where('email', $request->email)->where('password', md5($request->password))->first(); + + if(empty($logged_in)){ + return redirect("/")->withErrors(array("Incorrect Email/Password. Check and try again!"))->withInput(); + } + + $request->session()->regenerate(true); + $request->session()->put('current_user.id', $logged_in->id); + $request->session()->put('current_user.name', $logged_in->name); + $request->session()->put('current_user.email', $logged_in->email); + $request->session()->put('current_user.phone', $logged_in->phone); + $request->session()->put('current_user.designation', $logged_in->designation_info->name); + + // return redirect(url('dashboard')); + return redirect(url('clients')); + } + + public function handle_logout(Request $request) { + + $request->session()->forget('current_user'); + $request->session()->flush(); + $request->session()->regenerate(true); + return redirect("/"); + } + + public function registerAccount(Request $request){ + dd($request->all()); + $request->validate([ + 'name' => 'required', + 'designation' => 'required', + 'email' => 'required', + 'phone' => 'required', + 'password' => 'required', + 'confirm_password' => 'same:password', + ]); + + $make_account = [ + 'name' => $request->name, + 'designation' => $request->designation, + 'email' => $request->email, + 'phone' => $request->phone, + 'password' => md5($request->password) + ]; + + $inserted = Models\Account::create($make_account); + Session::flash('success_message', 'Account successfully added'); + return redirect(url('/')); + } +} diff --git a/app/Http/Controllers/MarketerReportController.php b/app/Http/Controllers/MarketerReportController.php new file mode 100755 index 0000000..8377389 --- /dev/null +++ b/app/Http/Controllers/MarketerReportController.php @@ -0,0 +1,270 @@ +', 0); + $payment_type = [1 => 'Prepaid', 2 => 'Postpaid']; + + $columns = [ + 'service' => 'Service', + 'email' => 'Email', + 'discussion' => 'Discussion', + 'contact_person' => 'Contact Person', + 'payment_status' => 'Payment Status', + 'sam_comment' => 'Sam Comment', + 'status' => 'status', + 'client' => 'Client', + 'auth_user_id' => 'User', + 'payment_type' => 'Payment Type', + ]; + + if (!empty($request->filter) && !empty($request->keyword)) { + $market_reports = $this->resolveAppQuery($market_reports, $request); + } + + $market_reports = $market_reports->orderBy('market_reports.created_at', 'DESC')->paginate(20); + + $data = [ + 'page_title' => 'Click Apps', + 'market_reports' => $market_reports, + 'columns' => $columns, + 'payment_type' => $payment_type + ]; + + return view('marketer_report.index', $data); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + $clients = Models\Client::pluck('name', 'id'); + $service = Models\Service::pluck('name', 'name'); + $payment_type = Models\PaymentType::pluck('name', 'id'); + $payment_status = ['paid' => 'Paid', 'unpaid' => 'Unpaid']; + + $data = [ + 'page_title' => 'Marketing Report', + 'service' => $service, + 'clients' => $clients, + 'payment_type' => $payment_type, + 'payment_status' => $payment_status + ]; + + return view('marketer_report.create', $data); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + $request->validate($this->mkrtRrptValidations()); + $reportData = $request->only($this->mkrtRrptWhiteListParms()); + $reportData['auth_user_id'] = session('current_user.id'); + + DB::transaction(function () use ($reportData) { + Models\MarketReport::create($reportData); + }); + + Session::flash('success_message', 'Report successfully added'); + return redirect(url('marketreport')); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + $market_report = Models\MarketReport::with('client_info', 'auth_user_info')->where('id', $id)->first(); + $data = [ + 'page_title' => 'Report Details', + 'market_report' => $market_report + ]; + return view('marketer_report.show', $data); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + $market_report = Models\MarketReport::find($id); + if (!$market_report) { + Session::flash('error_message', "Record with ID: {$id} not found"); + return redirect(url('marketreport')); + } + $clients = Models\Client::pluck('name', 'id'); + $service = Models\Service::pluck('name', 'name'); + $payment_type = Models\PaymentType::pluck('name', 'id'); + $payment_status = ['paid' => 'Paid', 'unpaid' => 'Unpaid']; + + $data = [ + 'page_title' => 'Edit Meeting Report', + 'market_report' => $market_report, + 'service' => $service, + 'clients' => $clients, + 'payment_type' => $payment_type, + 'payment_status' => $payment_status + ]; + + return view('marketer_report.edit', $data); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + $market_report = Models\MarketReport::find($id); + if (!$market_report) { + Session::flash('error_message', "Record with ID: {$id} not found"); + return redirect(url('marketreport')); + } + $request->validate($this->mkrtRrptValidations()); + $reportData = $request->only($this->mkrtRrptWhiteListParms()); + $reportData['auth_user_id'] = session('current_user.id'); + + DB::transaction(function () use ($reportData, $market_report) { + $market_report->update($reportData); + }); + + Session::flash('success_message', 'Market report updated successfully'); + return redirect(url('marketreport')); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + Models\MarketReport::destroy($id); + if (request()->ajax()) { + $res = ['code' => 1]; + return response()->json($res); + } + Session::flash('success_message', 'Market report successfully deleted!'); + return redirect(url('clickapps')); + } + + public function mkrtRrptValidations() + { + return [ + 'client' => 'required', + 'service' => 'required', + 'contact_person' => 'required', + 'email' => 'required', + 'discussion' => 'required', + 'payment_type' => 'required', + 'current_balance' => 'required|numeric', + 'payment_status' => 'required', + 'next_follow_up_date' => 'required', + 'last_follow_up_date' => 'required' + ]; + } + + public function mkrtRrptWhiteListParms() + { + return [ + 'client', + 'service', + 'contact_person', + 'email', + 'discussion', + 'payment_type', + 'current_balance', + 'payment_status', + 'next_follow_up_date', + 'last_follow_up_date', + ]; + } + + function resolveAppQuery($clients, $request) + { + switch ($request->filter) { + case 'service': + return $clients + ->where('service', 'like', "%$request->keyword%"); + break; + case 'email': + return $clients + ->where('email', 'like', "%$request->keyword%"); + break; + case 'discussion': + return $clients + ->where('discussion', 'like', "%$request->keyword%"); + break; + case 'contact_person': + return $clients + ->where('contact_person', 'like', "%$request->keyword%"); + break; + case 'payment_status': + return $clients + ->where('payment_status', 'like', "%$request->keyword%"); + break; + case 'sam_comment': + return $clients + ->where('sam_comment', 'like', "%$request->keyword%"); + break; + case 'status': + return $clients + ->where('status', 'like', "%$request->keyword%"); + break; + case 'client': + return $clients + ->join('clients', 'clients.id', '=', 'market_reports.client') + ->where('clients.name', 'like', "%$request->keyword%"); + break; + case 'auth_user_id': + return $clients + ->join('auth_users', 'auth_users.id', '=', 'market_reports.auth_user_id') + ->where('auth_users.name', 'like', "%$request->keyword%"); + break; + case 'payment_type': + return $clients + ->join('payment_type', 'payment_type.id', '=', 'market_reports.payment_type') + ->where('payment_type.name', 'like', "%$request->keyword%"); + break; + default: + # code... + break; + } + } +} + + +// payment_type \ No newline at end of file diff --git a/app/Http/Controllers/MeetingReportsController.php b/app/Http/Controllers/MeetingReportsController.php new file mode 100755 index 0000000..6ded428 --- /dev/null +++ b/app/Http/Controllers/MeetingReportsController.php @@ -0,0 +1,461 @@ +has('filter', 'keyword')){ // == true && request()->keyword = ) { + // dd('foo detected'); + $keyword = request()->keyword; + $filter = request()->filter; + if ($filter == 'Location') { + $keyword = Models\Country::where('en_short_name', 'LIKE', $keyword)->get(); + } + $clients = Models\Client::with('report_info')->where($filter, $keyword) + ->orderBy('name', 'ASC')->paginate(1); + } + $clients = Models\Client::with('report_info')->orderBy('name', 'ASC')->paginate(1); + + $data = [ + 'page_title' => 'Meeting Report', + 'columns' => ['Name' => 'Client Name', 'Location' => 'Client Location'], + 'clients' => $clients + ]; + // dd($clients[0]); + return view('report.dashboardreport', $data); + } + public function search() + { + dd(request()->has('filter', 'keyword')); + dd(request()->all()); + + $clients = Models\Client::with('report_info')->orderBy('name', 'ASC')->paginate(1); + + $data = [ + 'page_title' => 'Meeting Report', + 'columns' => ['Name' => 'Client Name', 'Location' => 'Client Location'], + 'clients' => $clients + ]; + // dd($clients[0]); + return view('report.dashboardreport', $data); + } + public function indexBKTwo() + { + $clients = Models\Client::with('report_info')->get(); + dd($clients); + $meeting_report_arr = new Models\MeetingReport; + $table_columns = \DB::select(\DB::raw("show full columns from meeting_reports")); + $exclude_arr = [ + 'updated_at', 'id','created_at' + ]; + $columns = []; + $queries = []; + foreach ($table_columns as $key) { + if ($key->Field == 'auth_user_id') { + $columns[$key->Field] = 'Account Manager'; + } + else{ + $columns[$key->Field] = ucwords(str_replace('_', ' ', $key->Field)); + } + } + foreach ($columns as $col) { + if (request('filter') == $col) { + $filter = request('filter'); + $keyword = request('keyword'); + $table_arr = ['staff_id', 'payment_type']; + if (in_array($col, $table_arr)) { + $key = $this->get_filter_ids($filter, $keyword); + if (!empty($key)) { + $keyword = $key; + } + } + $meeting_report_arr = $meeting_report_arr->where($col, 'like', '%'.$keyword.'%'); + $queries[$col] = request('keyword'); + } + } + /* + if (session('current_user.designation') == 'administrator') { + $meeting_report_arr = $meeting_report_arr->with('client_info', 'auth_user_info', 'sam_comment_info')->orderBy('created_at', 'DESC')->paginate(40)->appends($queries); + } + else{ + $meeting_report_arr = $meeting_report_arr->with('client_info', 'auth_user_info', 'sam_comment_info') + ->where('auth_user_id', session('current_user.id')) + ->orderBy('created_at', 'DESC')->paginate(40)->appends($queries); + } + */ + $meeting_report_arr = $meeting_report_arr->with('client_info', 'auth_user_info', 'sam_comment_info')->orderBy('created_at', 'DESC')->paginate(40)->appends($queries); + + $payment_type = [ 1 => 'Prepaid', 2 => 'Postpaid']; + $data = [ + 'page_title' => 'Meeting Report', + 'columns' => Arr::except($columns, $exclude_arr), + 'meeting_report_arr' => $meeting_report_arr, + 'payment_type' => $payment_type + ]; + return view('report.index', $data); + } + + public function indexBK() + { + $meeting_report_arr = new Models\MeetingReport; + $table_columns = \DB::select(\DB::raw("show full columns from meeting_reports")); + $exclude_arr = [ + 'updated_at', 'id','created_at' + ]; + $columns = []; + $queries = []; + foreach ($table_columns as $key) { + if ($key->Field == 'auth_user_id') { + $columns[$key->Field] = 'Account Manager'; + } + else{ + $columns[$key->Field] = ucwords(str_replace('_', ' ', $key->Field)); + } + } + foreach ($columns as $col) { + if (request('filter') == $col) { + $filter = request('filter'); + $keyword = request('keyword'); + $table_arr = ['staff_id', 'payment_type']; + if (in_array($col, $table_arr)) { + $key = $this->get_filter_ids($filter, $keyword); + if (!empty($key)) { + $keyword = $key; + } + } + $meeting_report_arr = $meeting_report_arr->where($col, 'like', '%'.$keyword.'%'); + $queries[$col] = request('keyword'); + } + } + if (session('current_user.designation') == 'administrator') { + $meeting_report_arr = $meeting_report_arr->with('client_info', 'auth_user_info', 'sam_comment_info')->orderBy('created_at', 'DESC')->paginate(40)->appends($queries); + } + else{ + $meeting_report_arr = $meeting_report_arr->with('client_info', 'auth_user_info', 'sam_comment_info') + ->where('auth_user_id', session('current_user.id')) + ->orderBy('created_at', 'DESC')->paginate(40)->appends($queries); + } + + $payment_type = [ 1 => 'Prepaid', 2 => 'Postpaid']; + $data = [ + 'page_title' => 'Meeting Report', + 'columns' => Arr::except($columns, $exclude_arr), + 'meeting_report_arr' => $meeting_report_arr, + 'payment_type' => $payment_type + ]; + return view('report.index', $data); + } + public function showDetails($id = '') + { + // dump(session('current_user')); + $selected_user = ''; + $meeting_report_arr = new Models\MeetingReport; + $current_user = session('current_user.id'); + + if (session('current_user.designation') == 'administrator') { + $meeting_report_arr = $meeting_report_arr->with('client_info', 'auth_user_info', 'sam_comment_info')->orderBy('created_at', 'DESC')->paginate(20); + } + else{ + $meeting_report_arr = $meeting_report_arr->with('client_info', 'auth_user_info', 'sam_comment_info')->where('auth_user_id', $current_user)->orderBy('created_at', 'DESC')->paginate(20); + } + + if ($id !== '') { + //->where('auth_user_id', $current_user) + $main_discussion = Models\MeetingReport::with('client_info', 'auth_user_info')->where('id', $id)->first(); + } + else{ + if (session('current_user.designation') == 'administrator') { + $main_discussion = Models\MeetingReport::with('client_info', 'auth_user_info')->get()->last(); + } + else{ + $main_discussion = Models\MeetingReport::with('client_info', 'auth_user_info')->where('auth_user_id', $current_user)->get()->last(); + } + + } + // dump($current_user); + //$main_discussion = Models\MeetingReport::with('client_info', 'auth_user_info')->where('auth_user_id', $current_user)->get()->last(); + // dd($main_discussion); + // \Log::info('foo bar in the app'); + if (!$main_discussion) { + return redirect(url('reports')); + } + $payment_type = [ 1 => 'Prepaid', 2 => 'Postpaid']; + $data = [ + 'page_title' => 'Meeting Report', + 'main_discussion' => $main_discussion, + 'meeting_report_arr' => $meeting_report_arr, + 'payment_type' => $payment_type + ]; + + return view('report.details', $data); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + $clients = Models\Client::pluck('name','id'); + $service = Models\Service::pluck('name','name'); + $payment_type = Models\PaymentType::pluck('name', 'id'); + $payment_status = ['paid' => 'Paid', 'unpaid' => 'Unpaid']; + + $data = [ + 'page_title' => 'Create Meeting Report', + 'service' => $service, + 'clients' => $clients, + 'payment_type' => $payment_type, + 'payment_status' => $payment_status + ]; + + return view('report.create', $data); + } + + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + $request->validate([ + 'client' => 'required', + 'service' => 'required', + 'contact_person' => 'required', + 'email' => 'required', + 'discussion' => 'required', + 'payment_type' => 'required', + 'current_balance' => 'required|numeric', + 'payment_status' => 'required', + 'next_follow_up_date' => 'required', + 'last_follow_up_date' => 'required' + ]); + // dd($request->all()); + + $the_report = $request->except('_token'); + $the_report['auth_user_id'] = session('current_user.id'); + + $savereport = Models\MeetingReport::create($the_report); + + Session::flash('success_message', 'Report successfully added'); + return redirect(url('dashboard')); + + } + + public function store_sam_comment(Request $request){ + + $comment = Models\SamComment::create( + [ + 'report_id' => $request->report_id, + 'created_by_id' => $request->created_by_id, + 'message' => $request->message + ] + ); + + return response()->json(['code' => 1, 'msg' => $comment]); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + //return redirect()->back()->withErrors(array("This section is under development. Kindly use the dashboard to view details of the reports"))->withInput(); + $meetingreport = Models\MeetingReport::with('client_info', 'auth_user_info')->where('id', $id)->first(); + $data = [ + 'page_title' => 'Report Details', + 'showreport' => $meetingreport + ]; + return view('report.show', $data); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + $report_arr = Models\MeetingReport::find($id); + $clients = Models\Client::pluck('name','id'); + $service = Models\Service::pluck('name','type'); + $payment_type = Models\PaymentType::pluck('name', 'id'); + $payment_status = ['paid' => 'Paid', 'unpaid' => 'Unpaid']; + + $data = [ + 'page_title' => 'Edit Meeting Report', + 'report_arr' => $report_arr, + 'service' => $service, + 'clients' => $clients, + 'payment_type' => $payment_type, + 'payment_status' => $payment_status + ]; + + return view('report.edit', $data); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + $request->validate([ + 'client' => 'required', + 'service' => 'required', + 'contact_person' => 'required', + 'email' => 'required', + 'discussion' => 'required', + 'payment_type' => 'required', + 'current_balance' => 'required', + 'payment_status' => 'required', + ]); + $report_update = Models\MeetingReport::find($id); + $report_update->client = $request->client; + $report_update->service = $request->service; + $report_update->contact_person = $request->contact_person; + $report_update->email = $request->email; + $report_update->discussion = $request->discussion; + $report_update->payment_type = $request->payment_type; + $report_update->current_balance = $request->current_balance; + $report_update->payment_status = $request->payment_status; + + $report_update->auth_user_id = session('current_user.id'); + + $result = $report_update->save(); + + Session::flash('success_message', 'Report successfully Updated'); + return redirect(url('reports')); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $result = Models\MeetingReport::destroy($id); + if (request()->ajax()) { + $result_arr = ['code' => 1]; + return response()->json($result_arr); + } + Session::flash('success_message', 'Report successfully deleted!'); + return redirect(route('reports.index')); + } + + + public function get_filter_ids($filter, $keyword) + { + switch ($filter) { + case 'client': + $id = Models\Client::where('name', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'service': + $id = Models\MeetingReport::where('service', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'contact_person': + $id = Models\MeetingReport::where('contact_person', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'email': + $id = Models\MeetingReport::where('email', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'discussion': + $id = Models\MeetingReport::where('discussion', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'payment_type': + $id = Models\PaymentType::where('name', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'current_balance': + $id = Models\MeetingReport::where('current_balance', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'payment_status': + $id = Models\MeetingReport::where('payment_status', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'sam_comment': + $id = Models\MeetingReport::where('sam_comment', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + default: + return ''; + break; + } + } +} diff --git a/app/Http/Controllers/NetworkOperatorsController.php b/app/Http/Controllers/NetworkOperatorsController.php new file mode 100755 index 0000000..28061e1 --- /dev/null +++ b/app/Http/Controllers/NetworkOperatorsController.php @@ -0,0 +1,215 @@ +Field] = $key->Field; + } + foreach ($columns as $col) { + if (request('filter') == $col) { + $filter = request('filter'); + $keyword = request('keyword'); + $table_arr = ['staff_id']; + if (in_array($col, $table_arr)) { + $key = $this->get_filter_ids($filter, $keyword); + if (!empty($key)) { + $keyword = $key; + } + } + $network_operators = $network_operators->where($col, 'like', '%'.$keyword.'%'); + $queries[$col] = request('keyword'); + } + } + + $network_operators = $network_operators->with('account_manager_info', 'country_info')->orderBy('created_at', 'DESC')->paginate(40)->appends($queries); + $data = [ + 'page_title' => 'Network Operators', + 'columns' => Arr::except($columns, $exclude_arr), + 'network_operators' => $network_operators + ]; + + return view('network_ops.index', $data); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + $countries = Models\Country::pluck('en_short_name','alpha_2_code'); + $account_manager = Models\SystemUser::pluck('name', 'id'); + $data = [ + 'page_title' => 'Create Network Operator', + 'countries'=> $countries, + 'account_manager' => $account_manager + ]; + + return view('network_ops.create', $data); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + $request->validate([ + 'name' => 'required', + 'country' => 'required', + 'account_manager_id' => 'required', + ]); + + $operator_arr = [ + 'name' => $request->name, + 'country' => $request->country, + 'account_manager_id' => $request->account_manager_id + ]; + $saved = Models\NetworkOps::create($operator_arr); + Session::flash('success_message', 'Network Operator successfully added'); + return redirect(url('network_ops')); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + $operator_arr = Models\NetworkOps::find($id); + $data = [ + 'page_title' => 'Network Operator Show', + 'operator_arr' => $operator_arr + ]; + + return view('network_ops.show', $data); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + $network_arr = Models\NetworkOps::findOrFail($id); + $countries = Models\Country::pluck('en_short_name','alpha_2_code'); + $account_manager = Models\SystemUser::pluck('name', 'id'); + + $data = [ + 'page_title' => 'Edit Network Operator', + 'network_arr' => $network_arr, + 'countries'=> $countries, + 'account_manager' => $account_manager + ]; + + return view('network_ops.edit', $data); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + $request->validate([ + 'name' => 'required', + 'country' => 'required', + 'account_manager_id' => 'required', + ]); + + $operator_update = Models\NetworkOps::find($id); + $operator_update->name = $request->name; + $operator_update->country = $request->country; + $operator_update->account_manager_id = $request->account_manager_id; + $result = $operator_update->save(); + + Session::flash('success_message', 'Network Operator successfully Updated'); + return redirect(url('network_ops')); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $result = Models\NetworkOps::destroy($id); + if (request()->ajax()) { + $result_arr = ['code' => 1]; + return response()->json($result_arr); + } + Session::flash('success_message', 'Network Operator successfully deleted!'); + return redirect(route('network_ops.index')); + } + + + + public function get_filter_ids($filter, $keyword){ + switch ($filter) { + case 'name': + $id = Models\NetworkOps::where('name', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'country': + $id = Models\Country::where('alpha_2_code', 'like', "%$keyword%")->orWhere('alpha_3_code', 'like', "%$keyword%")->orWhere('en_short_name', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'account_manager_id': + $id = Models\SyatemUser::where('name', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + default: + return ''; + break; + } + } +} diff --git a/app/Http/Controllers/ServicesController.php b/app/Http/Controllers/ServicesController.php new file mode 100755 index 0000000..3b639ef --- /dev/null +++ b/app/Http/Controllers/ServicesController.php @@ -0,0 +1,201 @@ +Field] = $key->Field; + } + foreach ($columns as $col) { + if (request('filter') == $col) { + $filter = request('filter'); + $keyword = request('keyword'); + $table_arr = ['staff_id']; + if (in_array($col, $table_arr)) { + $key = $this->get_filter_ids($filter, $keyword); + if (!empty($key)) { + $keyword = $key; + } + } + $service_arr = $service_arr->where($col, 'like', '%'.$keyword.'%'); + $queries[$col] = request('keyword'); + } + } + + $service_arr = $service_arr->orderBy('created_at', 'DESC')->paginate(40)->appends($queries); + + $data = [ + 'page_title' => 'Services', + 'columns' => Arr::except($columns, $exclude_arr), + 'service_arr' => $service_arr + ]; + + return view('service.index', $data); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + $service_type = ['regular' => 'Regular', 'advanced' => 'Advanced']; + $data = [ + 'page_title' => 'Create Service', + 'service_type' => $service_type + ]; + + return view('service.create', $data); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + $request->validate([ + 'name' => 'required', + 'type' => 'required', + ]); + + $service_arr = [ + 'name' => $request->name, + 'type' => $request->type + ]; + $saved = Models\Service::create($service_arr); + Session::flash('success_message', 'Service successfully added'); + return redirect(url('services')); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + + $showservice = Models\Service::find($id); + $data = [ + 'page_title' => 'Show Service', + 'showservice' => $showservice + ]; + + return view('service.show', $data); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + $service_arr = Models\Service::findOrFail($id); + $service_type = ['regular' => 'Regular', 'advanced' => 'Advanced']; + + $data = [ + 'page_title' => 'Edit Service', + 'service_arr' => $service_arr, + 'service_type' => $service_type + ]; + + return view('service.edit', $data); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + $request->validate([ + 'name' => 'required', + 'type' => 'required', + ]); + + $service_update = Models\Service::find($id); + $service_update->name = $request->name; + $operator_update->type = $request->type; + $result = $service_update->save(); + + Session::flash('success_message', 'Service successfully Updated'); + return redirect(url('services')); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $result = Models\Service::destroy($id); + if (request()->ajax()) { + $result_arr = ['code' => 1]; + return response()->json($result_arr); + } + Session::flash('success_message', 'Service successfully deleted!'); + return redirect(route('services.index')); + } + + + public function get_filter_ids($filter, $keyword) + { + switch ($filter) { + case 'name': + $id = Models\Service::where('name', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'type': + $id = Models\Service::where('type', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + + default: + return ''; + break; + } + } +} diff --git a/app/Http/Controllers/SystemUsersController.php b/app/Http/Controllers/SystemUsersController.php new file mode 100755 index 0000000..0663bd3 --- /dev/null +++ b/app/Http/Controllers/SystemUsersController.php @@ -0,0 +1,237 @@ +Field] = $key->Field; + } + foreach ($columns as $col) { + if (request('filter') == $col) { + $filter = request('filter'); + $keyword = request('keyword'); + $table_arr = ['staff_id']; + if (in_array($col, $table_arr)) { + $key = $this->get_filter_ids($filter, $keyword); + if (!empty($key)) { + $keyword = $key; + } + } + $allusers = $allusers->where($col, 'like', '%'.$keyword.'%'); + $queries[$col] = request('keyword'); + } + } + + $allusers = $allusers->orderBy('created_at', 'DESC')->paginate(40)->appends($queries); + + $data = [ + 'page_title' => 'Users', + 'columns' => Arr::except($columns, $exclude_arr), + 'allusers' => $allusers + ]; + + return view('account.index', $data); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + $designation = Models\Designation::pluck('name', 'id'); + $data = [ + 'page_title' => 'Create Users', + 'designation' => $designation + ]; + + return view('account.create', $data); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + $request->validate([ + 'name' => 'required', + 'designation' => 'required', + 'email' => 'required', + // 'phone' => 'required', + 'password' => 'required', + 'confirm_password' => 'same:password', + + ]); + + $make_account = [ + 'name' => $request->name, + 'designation' => $request->designation, + 'email' => $request->email, + // 'phone' => $request->phone, + 'password' => md5($request->password) + ]; + + $inserted = Models\Account::create($make_account); + Session::flash('success_message', 'Account successfully added'); + return redirect(url('accountmanagers')); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + $account_arr = Models\Account::find($id); + $data = [ + 'page_title' => 'Show Service', + 'account_arr' => $account_arr + ]; + + return view('account.show', $data); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + $designation = Models\Designation::pluck('name', 'id'); + $account_arr = Models\SystemUser::find($id); + $data = [ + 'page_title' => 'Edit Users', + 'designation' => $designation, + 'account_arr' => $account_arr + ]; + + return view('account.edit', $data); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + $account_arr = Models\Account::find($id); + $account_arr->name = $request->name; + $account_arr->designation = $request->designation; + $account_arr->email = $request->email; + // $account_arr->phone = $request->phone; + $account_arr->password = md5($request->password); + $account_arr->save(); + Session::flash('success_message', 'Account successfully Updated'); + return redirect(url('accountmanagers')); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $result = Models\Account::destroy($id); + if (request()->ajax()) { + $result_arr = ['code' => 1]; + return response()->json($result_arr); + } + Session::flash('success_message', 'Account successfully deleted!'); + return redirect(route('accounts.index')); + } + + // public function showRegisterPage() + // { + // $designation = Models\Designation::pluck('name', 'id'); + // $data = [ + // 'page_title' => 'Register User', + // 'designation' => $designation + // ]; + // // dd($data); + + // return view('account.register', $data); + // } + + + + public function get_filter_ids($filter, $keyword) + { + switch ($filter) { + case 'name': + $id = Models\SystemUser::where('name', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'designation': + $id = Models\SystemUser::where('designation', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'email': + $id = Models\SystemUser::where('email', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + case 'phone': + $id = Models\SystemUser::where('phone', 'like', "%$keyword%")->get(['id']); + if ($id->isEmpty()) { + return ''; + } + $step = json_decode($id); + $the_id = $step[0]->id; + return (count($step) > 0 ) ? $step[0]->id : ""; + break; + default: + return ''; + break; + } + } + + +} diff --git a/app/Http/Controllers/UssdClientsPaymentsController.php b/app/Http/Controllers/UssdClientsPaymentsController.php new file mode 100755 index 0000000..adf0f82 --- /dev/null +++ b/app/Http/Controllers/UssdClientsPaymentsController.php @@ -0,0 +1,108 @@ + 'Payment Type', + 'name' => 'Client Name', + 'client_email' => 'Client Email', + 'account_mgr' => 'Account Manager', + ]; + + $clients = Models\UssdClientPayment::with('client_info'); + $account_managers = Models\SystemUser::pluck('name', 'id'); + + if (!empty($request->filter) && !empty($request->keyword)) { + $clients = $this->resolveClientQuery($clients, $request); + } + + $clients = $clients->orderBy('ussd_client_payments.created_at', 'DESC')->paginate(20); + + $data = [ + 'page_title' => 'Ussd Clients Payments', + 'client_arr' => $clients, + 'account_managers' => $account_managers, + 'columns' => $columns + ]; + return view('ussdclients.index', $data); + } + + + public function edit($id) + { + $client = Models\UssdClientPayment::find($id); + + $data = [ + 'client' => $client, + ]; + return view('ussdclients.edit', $data); + } + + + public function show($id) + { + $client = Models\UssdClientPayment::find($id); + $data = [ + 'client' => $client, + ]; + return view('ussdclients.edit', $data); + } + + + public function update(Request $request, $id) + { + + $request->validate([ + 'amount_paid' => 'required|numeric', + 'payment_type' => 'required', + 'remarks' => 'sometimes', + ]); + $ussd_client = Models\UssdClientPayment::find($id); + + + $ussd_client->payment_type = $request->payment_type; + $ussd_client->amount_paid = $request->amount_paid; + $ussd_client->remarks = $request->remarks; + $ussd_client->last_modified_by_id = session('current_user.id'); + + $result = $ussd_client->save(); + + Session::flash('success_message', 'Client successfully Updated'); + return redirect(url('ussdclients')); + } + + + public function resolveClientQuery($clients, $request) + { + switch ($request->filter) { + case 'name': + return $clients + ->join('clients', 'clients.id', '=', 'ussd_client_payments.client_id') + ->where('clients.name', 'like', "%$request->keyword%"); + break; + case 'client_email': + return $clients + ->join('clients', 'clients.id', '=', 'ussd_client_payments.client_id') + ->where('clients.email', 'like', "%$request->keyword%"); + break; + case 'account_mgr': + return $clients + ->join('clients', 'clients.id', '=', 'ussd_client_payments.client_id') + ->join('auth_users', 'auth_users.id', '=', 'clients.auth_user_id') + ->where('auth_users.name', 'like', "%$request->keyword%"); + break; + default: + # code... + break; + } + } +} diff --git a/app/Http/Controllers/UssdDashboardController.php b/app/Http/Controllers/UssdDashboardController.php new file mode 100755 index 0000000..0b33326 --- /dev/null +++ b/app/Http/Controllers/UssdDashboardController.php @@ -0,0 +1,15 @@ + 'Dashboard' + ]; + return view('ussddashboard.index', $data); + } +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php new file mode 100755 index 0000000..a323929 --- /dev/null +++ b/app/Http/Kernel.php @@ -0,0 +1,62 @@ + [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + // \Illuminate\Session\Middleware\AuthenticateSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + 'throttle:60,1', + 'bindings', + ], + ]; + + /** + * The application's route middleware. + * + * These middleware may be assigned to groups or used individually. + * + * @var array + */ + protected $routeMiddleware = [ + 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'checklogin' => \App\Http\Middleware\CheckLogin::class, + ]; +} diff --git a/app/Http/Middleware/CheckLogin.php b/app/Http/Middleware/CheckLogin.php new file mode 100755 index 0000000..c613779 --- /dev/null +++ b/app/Http/Middleware/CheckLogin.php @@ -0,0 +1,23 @@ +session()->has('current_user')){ + return redirect(url('login'))->withErrors("You need to be logged in"); + } + return $next($request); + } +} diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php new file mode 100755 index 0000000..033136a --- /dev/null +++ b/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ +check()) { + return redirect('/home'); + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php new file mode 100755 index 0000000..5a50e7b --- /dev/null +++ b/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,18 @@ + 'FORWARDED', + Request::HEADER_X_FORWARDED_FOR => 'X_FORWARDED_FOR', + Request::HEADER_X_FORWARDED_HOST => 'X_FORWARDED_HOST', + Request::HEADER_X_FORWARDED_PORT => 'X_FORWARDED_PORT', + Request::HEADER_X_FORWARDED_PROTO => 'X_FORWARDED_PROTO', + ]; +} diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php new file mode 100755 index 0000000..0c13b85 --- /dev/null +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -0,0 +1,17 @@ +ussd_client = $client; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle(Mailer $mailer) + { + $client = $this->ussd_client; + $emails = ['jim@click-mobile.com', 'priscilla@click-mobile.com','samuel@click-mobile.com']; + $name = ucwords($client->name); + $status = $client->status; + $data = [ + 'email' => strtolower($client->email), + 'name' => $name, + 'status' => $status + ]; + $mailer->send('emails.new_ussd_client', $data, function ($message) use ($data, $emails) { + $message->from('support@click-mobile.com', 'Click Mobile Account Manager Tracker'); + $message->to($emails)->subject('New USSD Client Details'); + }); + + /* + $emails = ['myoneemail@esomething.com', 'myother@esomething.com','myother2@esomething.com']; + + Mail::send('emails.welcome', [], function($message) use ($emails) + { + $message->to($emails)->subject('This is test e-mail'); + }); + */ + + } +} diff --git a/app/Jobs/SendUssdClientActiveEmail.php b/app/Jobs/SendUssdClientActiveEmail.php new file mode 100755 index 0000000..20dd147 --- /dev/null +++ b/app/Jobs/SendUssdClientActiveEmail.php @@ -0,0 +1,49 @@ +ussd_client = $client; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle(Mailer $mailer) + { + $client = $this->ussd_client; + $emails = ['jim@click-mobile.com', 'priscilla@click-mobile.com','samuel@click-mobile.com']; + $name = ucwords($client->name); + $status = $client->status; + $data = [ + 'email' => strtolower($client->email), + 'name' => $name, + 'status' => $status + ]; + $mailer->send('emails.active_ussd_client', $data, function ($message) use ($data, $emails) { + $message->from('support@click-mobile.com', 'Click Mobile Account Manager Tracker'); + $message->to($emails)->subject('New USSD Client Details'); + }); + + } +} diff --git a/app/Models/Account.php b/app/Models/Account.php new file mode 100755 index 0000000..54f5c52 --- /dev/null +++ b/app/Models/Account.php @@ -0,0 +1,13 @@ +hasMany('App\Models\DirectConnection', 'server_id', 'id'); + } + public function credentials_info(){ + return $this->hasMany('App\Models\ServerCredential', 'server_id', 'id'); + } + public function modified_by_info(){ + return $this->hasOne('App\Models\Account', 'id', 'last_modified_by_id'); + } + + + public function getRootPasswordAttribute(){ + $credentials = $this->credentials_info; + foreach ($credentials as $value) { + if ($value->username == 'root') { + return $value->password; + } + } + } +} diff --git a/app/Models/Client.php b/app/Models/Client.php new file mode 100755 index 0000000..500f839 --- /dev/null +++ b/app/Models/Client.php @@ -0,0 +1,48 @@ +hasOne('App\Models\Country', 'alpha_2_code', 'country'); + } + public function payment_type_info(){ + return $this->hasOne('App\Models\PaymentType', 'id', 'pay_mode'); + } + + public function service_info(){ + #return $this->hasMany('App\Comment', 'foreign_key', 'local_key'); + return $this->hasMany('App\Models\ClientCategory', 'client_id', 'id'); + } + public function report_info(){ + return $this->hasMany('App\Models\MeetingReport', 'client', 'id'); + } + public function auth_user_info(){ + return $this->hasOne('App\Models\Account', 'id', 'auth_user_id'); + } + public function created_by_info(){ + return $this->hasOne('App\Models\Account', 'id', 'created_by'); + } + public function modified_by_info(){ + return $this->hasOne('App\Models\Account', 'id', 'last_modified_by'); + } + + + public function getClientServicesAttribute(){ + $services = $this->service_info; + $service_name_arr = []; + foreach ($services as $value) { + $service_name = Models\Service::find($value['category_id']); + $service_name_arr[] = $service_name->name; + } + return $service_name_arr; + } + +} diff --git a/app/Models/ClientCategory.php b/app/Models/ClientCategory.php new file mode 100755 index 0000000..a3fd8b0 --- /dev/null +++ b/app/Models/ClientCategory.php @@ -0,0 +1,16 @@ +hasOne('App\Models\Client', 'id', 'client_id'); + } + +} diff --git a/app/Models/ClientNote.php b/app/Models/ClientNote.php new file mode 100644 index 0000000..581afb7 --- /dev/null +++ b/app/Models/ClientNote.php @@ -0,0 +1,18 @@ +hasOne('App\Models\Client', 'id', 'client_id'); + } + public function created_by_info(){ + return $this->hasOne('App\Models\Account', 'id', 'auth_user_id'); + } + +} diff --git a/app/Models/Country.php b/app/Models/Country.php new file mode 100755 index 0000000..a48d2bd --- /dev/null +++ b/app/Models/Country.php @@ -0,0 +1,11 @@ +hasOne('App\Models\Client', 'id', 'client'); + } + public function payment_info(){ + return $this->hasOne('App\Models\PaymentType', 'id', 'payment_type'); + } + public function auth_user_info(){ + return $this->hasOne('App\Models\Account', 'id', 'auth_user_id'); + } + public function sam_comment_info(){ + return $this->hasMany('App\Models\SamComment', 'report_id', 'id'); + } +} diff --git a/app/Models/MeetingReport.php b/app/Models/MeetingReport.php new file mode 100755 index 0000000..eaa30a0 --- /dev/null +++ b/app/Models/MeetingReport.php @@ -0,0 +1,21 @@ +hasOne('App\Models\Client', 'id', 'client'); + } + public function auth_user_info(){ + return $this->hasOne('App\Models\Account', 'id', 'auth_user_id'); + } + public function sam_comment_info(){ + return $this->hasMany('App\Models\SamComment', 'report_id', 'id'); + } +} diff --git a/app/Models/NetworkOps.php b/app/Models/NetworkOps.php new file mode 100755 index 0000000..4446042 --- /dev/null +++ b/app/Models/NetworkOps.php @@ -0,0 +1,19 @@ +hasOne('App\Models\Country', 'alpha_2_code', 'country'); + } + + public function account_manager_info(){ + return $this->hasOne('App\Models\SystemUser', 'id', 'account_manager_id'); + } +} diff --git a/app/Models/Networkstatus.php b/app/Models/Networkstatus.php new file mode 100755 index 0000000..1e101a6 --- /dev/null +++ b/app/Models/Networkstatus.php @@ -0,0 +1,11 @@ +hasOne('App\Models\ClickServer', 'id', 'server_id'); + } +} diff --git a/app/Models/Service.php b/app/Models/Service.php new file mode 100755 index 0000000..9122a13 --- /dev/null +++ b/app/Models/Service.php @@ -0,0 +1,11 @@ +hasOne('App\Models\Designation', 'id', 'designation'); + } +} diff --git a/app/Models/UssdClientPayment.php b/app/Models/UssdClientPayment.php new file mode 100755 index 0000000..b7308e3 --- /dev/null +++ b/app/Models/UssdClientPayment.php @@ -0,0 +1,15 @@ +hasOne('App\Models\Client', 'id', 'client_id'); + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100755 index 0000000..3581bab --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,34 @@ + xoxp-677819906294-675678554016-693747277911-5166bcbb9a5fc3d5434b42a10c4d358a + //old ---> xoxp-677819906294-675678554016-720956680656-4a6b5d0fcb00e9e0512c14341d3a7563 + $slackHandler = new \Monolog\Handler\SlackHandler('xoxp-677819906294-675678554016-720956680656-4a6b5d0fcb00e9e0512c14341d3a7563', '#click_tracker', 'Monolog', true, null, \Monolog\Logger::ERROR); + $slackHandler = new \Monolog\Handler\SlackHandler('xoxp-677819906294-675678554016-720956680656-4a6b5d0fcb00e9e0512c14341d3a7563', '#click_tracker', 'Monolog', true, null, \Monolog\Logger::INFO); + $slackHandler = new \Monolog\Handler\SlackHandler('xoxp-677819906294-675678554016-720956680656-4a6b5d0fcb00e9e0512c14341d3a7563', '#click_tracker', 'Monolog', true, null, \Monolog\Logger::DEBUG); + $monolog->pushHandler($slackHandler); + } + + /** + * Register any application services. + * + * @return void + */ + public function register() + { + // + } +} diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php new file mode 100755 index 0000000..9784b1a --- /dev/null +++ b/app/Providers/AuthServiceProvider.php @@ -0,0 +1,30 @@ + 'App\Policies\ModelPolicy', + ]; + + /** + * Register any authentication / authorization services. + * + * @return void + */ + public function boot() + { + $this->registerPolicies(); + + // + } +} diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php new file mode 100755 index 0000000..352cce4 --- /dev/null +++ b/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,21 @@ + [ + 'App\Listeners\EventListener', + ], + ]; + + /** + * Register any events for your application. + * + * @return void + */ + public function boot() + { + parent::boot(); + + // + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php new file mode 100755 index 0000000..5ea48d3 --- /dev/null +++ b/app/Providers/RouteServiceProvider.php @@ -0,0 +1,73 @@ +mapApiRoutes(); + + $this->mapWebRoutes(); + + // + } + + /** + * Define the "web" routes for the application. + * + * These routes all receive session state, CSRF protection, etc. + * + * @return void + */ + protected function mapWebRoutes() + { + Route::middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/web.php')); + } + + /** + * Define the "api" routes for the application. + * + * These routes are typically stateless. + * + * @return void + */ + protected function mapApiRoutes() + { + Route::prefix('api') + ->middleware('api') + ->namespace($this->namespace) + ->group(base_path('routes/api.php')); + } +} diff --git a/app/User.php b/app/User.php new file mode 100755 index 0000000..bfd96a6 --- /dev/null +++ b/app/User.php @@ -0,0 +1,29 @@ +make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running, we will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100755 index 0000000..f2801ad --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,55 @@ +singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore new file mode 100755 index 0000000..d6b7ef3 --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/click_team_tracker2021090910-34 AM.sql b/click_team_tracker2021090910-34 AM.sql new file mode 100755 index 0000000..cb2f55b --- /dev/null +++ b/click_team_tracker2021090910-34 AM.sql @@ -0,0 +1,983 @@ +# ************************************************************ +# Sequel Pro SQL dump +# Version 5446 +# +# https://www.sequelpro.com/ +# https://github.com/sequelpro/sequelpro +# +# Host: 127.0.0.1 (MySQL 5.7.21-0ubuntu0.17.10.1) +# Database: click_team_tracker +# Generation Time: 2021-09-09 10:34:33 +0000 +# ************************************************************ + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +SET NAMES utf8mb4; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + + +# Dump of table accounts +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `accounts`; + +CREATE TABLE `accounts` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(200) NOT NULL DEFAULT '', + `account_manager_id` int(11) NOT NULL, + `type` varchar(200) NOT NULL DEFAULT '', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + + + +# Dump of table apps +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `apps`; + +CREATE TABLE `apps` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `app_name` varchar(50) NOT NULL, + `app_type` varchar(4) NOT NULL, + `code` varchar(10) NOT NULL, + `country` varchar(20) NOT NULL, + `operator` varchar(20) NOT NULL, + `tollfree` varchar(5) NOT NULL, + `app_path` varchar(200) NOT NULL, + `client` varchar(50) NOT NULL, + `launch_date` varchar(30) NOT NULL, + `status` varchar(12) NOT NULL, + `other_info` text NOT NULL, + `documents` text, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +LOCK TABLES `apps` WRITE; +/*!40000 ALTER TABLE `apps` DISABLE KEYS */; + +INSERT INTO `apps` (`id`, `app_name`, `app_type`, `code`, `country`, `operator`, `tollfree`, `app_path`, `client`, `launch_date`, `status`, `other_info`, `documents`, `created_at`, `updated_at`) +VALUES + (1,'Infobox TNM','USSD','*288#','Malawi','TNM','NO','/var/www/html/ussd_click_tnm_info','Click Mobile','N/A','Active','N/A',NULL,NULL,NULL), + (2,'Sapota ','USSD','*1515#','Malawi','TNM','NO','/var/www/html/sapota_ussd','Click Mobile','N/A','Cancelled','#Subscription is free\r\n#Subscribers billed when they receive and SMS\r\n#Promotion changed code to *2020#',NULL,NULL,NULL), + (3,'UNDP Survey','SMS','3011','Malawi','TNM','YES','/var/www/html/routes/undp_survey','UNDP','2020-11-25','Finished','Contact: Wasili +265999640867',NULL,NULL,NULL), + (4,'UNDP Survey','SMS','3011','Malawi','Airtel','YES','/var/www/html/routes/undp_survey','UNDP','2020-11-25','Finished','Contact: Wasili +265999640867',NULL,NULL,NULL), + (5,'Zampira','USSD','*2020#','Malawi','TNM','NO','/var/www/html/ussd_click_tnm_zampira_mw','Click Mobile','N/A','Pending','#Subscription is free\r\n#Subscribers billed when they receive and SMS\r\n#Promotion changed code to *2020# from *1515#',NULL,NULL,NULL), + (6,'mHealth','USSD','*321#','Malawi','TNM','YES','/var/www/html/ussd_click_tnm_mhealth','GSMA/TNM','N/A','Active','#Subscription and content both free',NULL,NULL,NULL), + (7,'Drug Side Effects Reporting App','USSD','*360#','Malawi','TNM','YES','/var/www/html/ussd_click_tnm_poisonsb_mw','Pharmacy and Medicines Poison Board of Malawi','N/A','Testing','#MT sent after each reporting',NULL,NULL,NULL), + (8,'Old mutual SULOM Predict & Win','SMS','371','Malawi','TNM','NO','','Old Mutual-SULOM','N/A','Testing','#charge 50 kwacha/SMS',NULL,NULL,NULL); + +/*!40000 ALTER TABLE `apps` ENABLE KEYS */; +UNLOCK TABLES; + + +# Dump of table auth_users +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `auth_users`; + +CREATE TABLE `auth_users` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(200) NOT NULL DEFAULT '', + `designation` int(11) NOT NULL, + `email` varchar(200) NOT NULL DEFAULT '', + `phone` varchar(200) NOT NULL DEFAULT '', + `password` varchar(200) NOT NULL DEFAULT '', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +LOCK TABLES `auth_users` WRITE; +/*!40000 ALTER TABLE `auth_users` DISABLE KEYS */; + +INSERT INTO `auth_users` (`id`, `name`, `designation`, `email`, `phone`, `password`, `created_at`, `updated_at`) +VALUES + (1,'Kwesi Banson',3,'kwesi@gmail.com','0509076800','5f4dcc3b5aa765d61d8327deb882cf99','2021-01-26 10:49:51',NULL), + (2,'Nicole Hughes',4,'qurysapel@mailinator.com','0283851774','4bcafd8180b0b79be2f70effc5b1ef40','2021-01-26 10:47:07','2021-01-26 10:47:07'), + (3,'Ariel Villarreal',4,'zicomybabe@mailinator.com','0277171014','d751d6f50de17d526e5ca9ab62bea364','2021-01-26 10:48:42','2021-01-26 10:48:42'), + (4,'Graiden Lynch',3,'rocivejed@mailinator.com','0226672936','5f4dcc3b5aa765d61d8327deb882cf99','2021-01-27 09:41:28','2021-01-27 09:41:28'), + (5,'Hedwig Hess',4,'howone@mailinator.com','0257839588','5f4dcc3b5aa765d61d8327deb882cf99','2021-01-27 09:42:49','2021-01-27 09:42:49'), + (6,'Hedwig Hess',4,'howone@mailinator.com','0257839588','5f4dcc3b5aa765d61d8327deb882cf99','2021-01-27 09:43:19','2021-01-27 09:43:19'), + (7,'ew',4,'howone@mailinator.com','0257839588','d41d8cd98f00b204e9800998ecf8427e','2021-02-08 17:01:35','2021-02-08 17:01:35'), + (8,'Griffin Greene',3,'nakyqiza@mailinator.com','+1 (172) 799-8752','5f4dcc3b5aa765d61d8327deb882cf99','2021-02-08 09:36:53','2021-02-08 09:36:53'), + (9,'Uriah Bush',4,'nocikuc@mailinator.com','','5f4dcc3b5aa765d61d8327deb882cf99','2021-02-14 06:02:21','2021-02-14 05:47:56'); + +/*!40000 ALTER TABLE `auth_users` ENABLE KEYS */; +UNLOCK TABLES; + + +# Dump of table click_files +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `click_files`; + +CREATE TABLE `click_files` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(250) DEFAULT NULL, + `path` varchar(199) DEFAULT NULL, + `description` varchar(199) DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + + + +# Dump of table click_servers +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `click_servers`; + +CREATE TABLE `click_servers` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `friendly_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `public_ip_address` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL, + `private_ip_address` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL, + `main_use` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `remarks` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `last_modified_by_id` int(11) DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +LOCK TABLES `click_servers` WRITE; +/*!40000 ALTER TABLE `click_servers` DISABLE KEYS */; + +INSERT INTO `click_servers` (`id`, `friendly_name`, `public_ip_address`, `private_ip_address`, `main_use`, `remarks`, `last_modified_by_id`, `created_at`, `updated_at`) +VALUES + (1,'SMS Gateway','206.225.87.174','10.199.0.1','SMS, Airtime, Electricity','Eligendi sunt recusa',1,NULL,'2021-04-19 19:22:37'), + (2,'UCM','206.225.81.36','10.199.0.10','SMSC','Ea quasi aut delectu',1,NULL,'2021-04-19 19:23:11'), + (3,'Billing Server','206.225.95.171','10.199.0.3','Airtime Billing','',1,NULL,NULL), + (4,'PACO','206.225.84.29','10.199.0.30','Bulk SMS Platform','',1,NULL,NULL), + (5,'Apps Server','206.225.84.201','10.199.0.11','Applications, Database','',1,NULL,NULL), + (6,'Reporting','216.55.186.230','10.199.0.13','Reporting for UCM','',1,NULL,NULL), + (7,'Mobile Money','206.225.95.109','10.199.0.16','Mobile Money Services','',1,NULL,NULL), + (8,'UCM 2','206.225.94.150','','SMSC for Airtel MW & ZA','',1,NULL,NULL), + (9,'IVR','206.225.82.37','','IVR Services','',1,NULL,NULL); + +/*!40000 ALTER TABLE `click_servers` ENABLE KEYS */; +UNLOCK TABLES; + + +# Dump of table clients +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `clients`; + +CREATE TABLE `clients` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(200) DEFAULT NULL, + `email` varchar(191) DEFAULT NULL, + `type` varchar(200) DEFAULT NULL, + `country` varchar(200) DEFAULT NULL, + `auth_user_id` int(11) NOT NULL DEFAULT '1', + `status` varchar(200) DEFAULT NULL, + `pay_mode` varchar(200) DEFAULT NULL, + `currency` varchar(200) DEFAULT NULL, + `created_by` int(11) DEFAULT '1', + `last_modified_by` int(11) DEFAULT '1', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +LOCK TABLES `clients` WRITE; +/*!40000 ALTER TABLE `clients` DISABLE KEYS */; + +INSERT INTO `clients` (`id`, `name`, `email`, `type`, `country`, `auth_user_id`, `status`, `pay_mode`, `currency`, `created_by`, `last_modified_by`, `created_at`, `updated_at`) +VALUES + (1,'Panacea',NULL,'1','KR',1,'active','1','Lek',1,1,'2021-02-12 16:48:12','2021-02-12 16:48:12'), + (2,'INFOBIP',NULL,'1','PA',1,'active','1','Lek',9,9,'2021-02-14 05:48:51','2021-02-14 05:48:51'), + (4,'Southern Region Water Board',NULL,'1','LS',1,'active','1','Afghani',1,1,'2021-02-12 18:52:03','2021-02-12 18:52:03'), + (5,'World Star Betting',NULL,'2','CK',3,'active','1','Afghani',1,1,'2021-02-14 05:47:20','2021-02-14 05:47:20'), + (6,'TEWAYS',NULL,'1','NP',6,'active','1','Afghani',1,1,'2021-02-04 10:23:11','2021-01-28 17:55:59'), + (7,'Edan Pena',NULL,'2','GB',8,'active','1','Danish Krone',1,1,'2021-02-08 17:49:52','2021-02-08 17:49:52'), + (8,'Jasmine Rasmussen',NULL,'2','PS',8,'active','2','Azerbaijan Manat',1,1,'2021-02-14 05:44:37','2021-02-14 05:44:37'), + (9,'Tad Cook',NULL,'1','AF',5,'active','1','Colombian Peso',1,1,'2021-03-09 15:01:42','2021-03-09 15:01:42'), + (10,'Mary Faulkner',NULL,'3','CA',4,'active','2','Bitcoin',1,1,'2021-03-09 15:12:20','2021-03-09 15:12:20'), + (11,'Martena Langley',NULL,'3','LC',9,'inactive','2','Australian Dollar',1,1,'2021-03-16 17:31:13','2021-03-16 17:31:13'), + (12,'Kenneth Flynn','bojanegog@mailinator.com','2','FI',9,'active','1','South Korean won (inv.)',1,1,'2021-03-16 18:26:06','2021-03-16 18:26:06'), + (13,'Zahir Marquez','horilyji@mailinator.com','3','VG',9,'active','1','New Israeli Sheqel',1,1,'2021-03-16 18:26:34','2021-03-16 18:26:34'), + (14,'Kato Stout','xegehuta@mailinator.com','3','JP',9,'active','2','Czech koruna (pl. koruny)',1,1,'2021-03-16 18:28:15','2021-03-16 18:28:15'), + (15,'Kai Pratt','cofon@mailinator.com','3','TT',9,'inactive','1','Tenge',1,1,'2021-03-16 18:29:09','2021-03-16 18:29:09'), + (16,'Hamish Watson','juwademu@mailinator.com','3','GD',1,'active','1','Colombian Peso',1,1,'2021-03-16 18:29:47','2021-03-16 18:29:47'), + (17,'Armando Gonzalez','dysenyfaje@mailinator.com','3','DM',9,'active','1','Jamaican Dollar',1,1,'2021-04-19 18:43:13','2021-04-19 18:43:13'), + (18,'Colin Berry','lexaqa@mailinator.com','3','SB',3,'inactive','2','Australian Dollar',1,1,'2021-03-16 18:33:22','2021-03-16 18:33:22'), + (19,'Fredericka Le','zokemiw@mailinator.com','3','ME',8,'active','1','Riel',1,1,'2021-03-16 18:49:11','2021-03-16 18:49:11'), + (20,'Joseph Beard','cetokop@mailinator.com','3','TN',5,'active','1','Quetzal',1,1,'2021-03-16 18:49:31','2021-03-16 18:49:31'), + (21,'Mariko Eaton','vymeqajehy@mailinator.com','3','GH',8,'active','1','Mexican Peso',1,1,'2021-03-16 18:50:44','2021-03-16 18:50:44'), + (22,'Wendy Jennings','sydomoc@mailinator.com','3','SZ',8,'active','1','Hong Kong Dollar',1,1,'2021-03-16 18:51:03','2021-03-16 18:51:03'), + (23,'Trevor Pittman','foturun@mailinator.com','3','BW',6,'inactive','1','Guyana Dollar',1,1,'2021-04-19 12:22:50','2021-04-19 12:22:50'), + (24,'Mohammad Donovan','webyc@mailinator.com','3','YT',2,'active','2','Bulgarian Lev',1,1,'2021-04-19 12:31:22','2021-04-19 12:31:22'), + (25,'Cooper Meadows','cewoqeteh@mailinator.com','3','LU',1,'active','1','Colombian Peso',1,1,'2021-05-12 09:49:50','2021-05-12 09:49:50'), + (26,'Maia Erickson','cyny@mailinator.com','3','SL',9,'inactive','1','Namibia Dollar',1,1,'2021-05-12 09:55:54','2021-05-12 09:55:54'); + +/*!40000 ALTER TABLE `clients` ENABLE KEYS */; +UNLOCK TABLES; + + +# Dump of table countries +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `countries`; + +CREATE TABLE `countries` ( + `num_code` int(3) NOT NULL DEFAULT '0', + `alpha_2_code` varchar(2) DEFAULT NULL, + `alpha_3_code` varchar(3) DEFAULT NULL, + `en_short_name` varchar(52) DEFAULT NULL, + `nationality` varchar(39) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +LOCK TABLES `countries` WRITE; +/*!40000 ALTER TABLE `countries` DISABLE KEYS */; + +INSERT INTO `countries` (`num_code`, `alpha_2_code`, `alpha_3_code`, `en_short_name`, `nationality`) +VALUES + (4,'AF','AFG','Afghanistan','Afghan'), + (8,'AL','ALB','Albania','Albanian'), + (10,'AQ','ATA','Antarctica','Antarctic'), + (12,'DZ','DZA','Algeria','Algerian'), + (16,'AS','ASM','American Samoa','American Samoan'), + (20,'AD','AND','Andorra','Andorran'), + (24,'AO','AGO','Angola','Angolan'), + (28,'AG','ATG','Antigua and Barbuda','Antiguan or Barbudan'), + (31,'AZ','AZE','Azerbaijan','Azerbaijani, Azeri'), + (32,'AR','ARG','Argentina','Argentine'), + (36,'AU','AUS','Australia','Australian'), + (40,'AT','AUT','Austria','Austrian'), + (44,'BS','BHS','Bahamas','Bahamian'), + (48,'BH','BHR','Bahrain','Bahraini'), + (50,'BD','BGD','Bangladesh','Bangladeshi'), + (51,'AM','ARM','Armenia','Armenian'), + (52,'BB','BRB','Barbados','Barbadian'), + (56,'BE','BEL','Belgium','Belgian'), + (60,'BM','BMU','Bermuda','Bermudian, Bermudan'), + (64,'BT','BTN','Bhutan','Bhutanese'), + (68,'BO','BOL','Bolivia (Plurinational State of)','Bolivian'), + (70,'BA','BIH','Bosnia and Herzegovina','Bosnian or Herzegovinian'), + (72,'BW','BWA','Botswana','Motswana, Botswanan'), + (74,'BV','BVT','Bouvet Island','Bouvet Island'), + (76,'BR','BRA','Brazil','Brazilian'), + (84,'BZ','BLZ','Belize','Belizean'), + (86,'IO','IOT','British Indian Ocean Territory','BIOT'), + (90,'SB','SLB','Solomon Islands','Solomon Island'), + (92,'VG','VGB','Virgin Islands (British)','British Virgin Island'), + (96,'BN','BRN','Brunei Darussalam','Bruneian'), + (100,'BG','BGR','Bulgaria','Bulgarian'), + (104,'MM','MMR','Myanmar','Burmese'), + (108,'BI','BDI','Burundi','Burundian'), + (112,'BY','BLR','Belarus','Belarusian'), + (116,'KH','KHM','Cambodia','Cambodian'), + (120,'CM','CMR','Cameroon','Cameroonian'), + (124,'CA','CAN','Canada','Canadian'), + (132,'CV','CPV','Cabo Verde','Cabo Verdean'), + (136,'KY','CYM','Cayman Islands','Caymanian'), + (140,'CF','CAF','Central African Republic','Central African'), + (144,'LK','LKA','Sri Lanka','Sri Lankan'), + (148,'TD','TCD','Chad','Chadian'), + (152,'CL','CHL','Chile','Chilean'), + (156,'CN','CHN','China','Chinese'), + (158,'TW','TWN','Taiwan, Province of China','Chinese, Taiwanese'), + (162,'CX','CXR','Christmas Island','Christmas Island'), + (166,'CC','CCK','Cocos (Keeling) Islands','Cocos Island'), + (170,'CO','COL','Colombia','Colombian'), + (174,'KM','COM','Comoros','Comoran, Comorian'), + (175,'YT','MYT','Mayotte','Mahoran'), + (178,'CG','COG','Congo (Republic of the)','Congolese'), + (180,'CD','COD','Congo (Democratic Republic of the)','Congolese'), + (184,'CK','COK','Cook Islands','Cook Island'), + (188,'CR','CRI','Costa Rica','Costa Rican'), + (191,'HR','HRV','Croatia','Croatian'), + (192,'CU','CUB','Cuba','Cuban'), + (196,'CY','CYP','Cyprus','Cypriot'), + (203,'CZ','CZE','Czech Republic','Czech'), + (204,'BJ','BEN','Benin','Beninese, Beninois'), + (208,'DK','DNK','Denmark','Danish'), + (212,'DM','DMA','Dominica','Dominican'), + (214,'DO','DOM','Dominican Republic','Dominican'), + (218,'EC','ECU','Ecuador','Ecuadorian'), + (222,'SV','SLV','El Salvador','Salvadoran'), + (226,'GQ','GNQ','Equatorial Guinea','Equatorial Guinean, Equatoguinean'), + (231,'ET','ETH','Ethiopia','Ethiopian'), + (232,'ER','ERI','Eritrea','Eritrean'), + (233,'EE','EST','Estonia','Estonian'), + (234,'FO','FRO','Faroe Islands','Faroese'), + (238,'FK','FLK','Falkland Islands (Malvinas)','Falkland Island'), + (239,'GS','SGS','South Georgia and the South Sandwich Islands','South Georgia or South Sandwich Islands'), + (242,'FJ','FJI','Fiji','Fijian'), + (246,'FI','FIN','Finland','Finnish'), + (248,'AX','ALA','Åland Islands','Åland Island'), + (250,'FR','FRA','France','French'), + (254,'GF','GUF','French Guiana','French Guianese'), + (258,'PF','PYF','French Polynesia','French Polynesian'), + (260,'TF','ATF','French Southern Territories','French Southern Territories'), + (262,'DJ','DJI','Djibouti','Djiboutian'), + (266,'GA','GAB','Gabon','Gabonese'), + (268,'GE','GEO','Georgia','Georgian'), + (270,'GM','GMB','Gambia','Gambian'), + (275,'PS','PSE','Palestine, State of','Palestinian'), + (276,'DE','DEU','Germany','German'), + (288,'GH','GHA','Ghana','Ghanaian'), + (292,'GI','GIB','Gibraltar','Gibraltar'), + (296,'KI','KIR','Kiribati','I-Kiribati'), + (300,'GR','GRC','Greece','Greek, Hellenic'), + (304,'GL','GRL','Greenland','Greenlandic'), + (308,'GD','GRD','Grenada','Grenadian'), + (312,'GP','GLP','Guadeloupe','Guadeloupe'), + (316,'GU','GUM','Guam','Guamanian, Guambat'), + (320,'GT','GTM','Guatemala','Guatemalan'), + (324,'GN','GIN','Guinea','Guinean'), + (328,'GY','GUY','Guyana','Guyanese'), + (332,'HT','HTI','Haiti','Haitian'), + (334,'HM','HMD','Heard Island and McDonald Islands','Heard Island or McDonald Islands'), + (336,'VA','VAT','Vatican City State','Vatican'), + (340,'HN','HND','Honduras','Honduran'), + (344,'HK','HKG','Hong Kong','Hong Kong, Hong Kongese'), + (348,'HU','HUN','Hungary','Hungarian, Magyar'), + (352,'IS','ISL','Iceland','Icelandic'), + (356,'IN','IND','India','Indian'), + (360,'ID','IDN','Indonesia','Indonesian'), + (364,'IR','IRN','Iran','Iranian, Persian'), + (368,'IQ','IRQ','Iraq','Iraqi'), + (372,'IE','IRL','Ireland','Irish'), + (376,'IL','ISR','Israel','Israeli'), + (380,'IT','ITA','Italy','Italian'), + (384,'CI','CIV','Côte d\'Ivoire','Ivorian'), + (388,'JM','JAM','Jamaica','Jamaican'), + (392,'JP','JPN','Japan','Japanese'), + (398,'KZ','KAZ','Kazakhstan','Kazakhstani, Kazakh'), + (400,'JO','JOR','Jordan','Jordanian'), + (404,'KE','KEN','Kenya','Kenyan'), + (408,'KP','PRK','Korea (Democratic People\'s Republic of)','North Korean'), + (410,'KR','KOR','Korea (Republic of)','South Korean'), + (414,'KW','KWT','Kuwait','Kuwaiti'), + (417,'KG','KGZ','Kyrgyzstan','Kyrgyzstani, Kyrgyz, Kirgiz, Kirghiz'), + (418,'LA','LAO','Lao People\'s Democratic Republic','Lao, Laotian'), + (422,'LB','LBN','Lebanon','Lebanese'), + (426,'LS','LSO','Lesotho','Basotho'), + (428,'LV','LVA','Latvia','Latvian'), + (430,'LR','LBR','Liberia','Liberian'), + (434,'LY','LBY','Libya','Libyan'), + (438,'LI','LIE','Liechtenstein','Liechtenstein'), + (440,'LT','LTU','Lithuania','Lithuanian'), + (442,'LU','LUX','Luxembourg','Luxembourg, Luxembourgish'), + (446,'MO','MAC','Macao','Macanese, Chinese'), + (450,'MG','MDG','Madagascar','Malagasy'), + (454,'MW','MWI','Malawi','Malawian'), + (458,'MY','MYS','Malaysia','Malaysian'), + (462,'MV','MDV','Maldives','Maldivian'), + (466,'ML','MLI','Mali','Malian, Malinese'), + (470,'MT','MLT','Malta','Maltese'), + (474,'MQ','MTQ','Martinique','Martiniquais, Martinican'), + (478,'MR','MRT','Mauritania','Mauritanian'), + (480,'MU','MUS','Mauritius','Mauritian'), + (484,'MX','MEX','Mexico','Mexican'), + (492,'MC','MCO','Monaco','Monégasque, Monacan'), + (496,'MN','MNG','Mongolia','Mongolian'), + (498,'MD','MDA','Moldova (Republic of)','Moldovan'), + (499,'ME','MNE','Montenegro','Montenegrin'), + (500,'MS','MSR','Montserrat','Montserratian'), + (504,'MA','MAR','Morocco','Moroccan'), + (508,'MZ','MOZ','Mozambique','Mozambican'), + (512,'OM','OMN','Oman','Omani'), + (516,'NA','NAM','Namibia','Namibian'), + (520,'NR','NRU','Nauru','Nauruan'), + (524,'NP','NPL','Nepal','Nepali, Nepalese'), + (528,'NL','NLD','Netherlands','Dutch, Netherlandic'), + (531,'CW','CUW','Curaçao','Curaçaoan'), + (533,'AW','ABW','Aruba','Aruban'), + (534,'SX','SXM','Sint Maarten (Dutch part)','Sint Maarten'), + (535,'BQ','BES','Bonaire, Sint Eustatius and Saba','Bonaire'), + (540,'NC','NCL','New Caledonia','New Caledonian'), + (548,'VU','VUT','Vanuatu','Ni-Vanuatu, Vanuatuan'), + (554,'NZ','NZL','New Zealand','New Zealand, NZ'), + (558,'NI','NIC','Nicaragua','Nicaraguan'), + (562,'NE','NER','Niger','Nigerien'), + (566,'NG','NGA','Nigeria','Nigerian'), + (570,'NU','NIU','Niue','Niuean'), + (574,'NF','NFK','Norfolk Island','Norfolk Island'), + (578,'NO','NOR','Norway','Norwegian'), + (580,'MP','MNP','Northern Mariana Islands','Northern Marianan'), + (581,'UM','UMI','United States Minor Outlying Islands','American'), + (583,'FM','FSM','Micronesia (Federated States of)','Micronesian'), + (584,'MH','MHL','Marshall Islands','Marshallese'), + (585,'PW','PLW','Palau','Palauan'), + (586,'PK','PAK','Pakistan','Pakistani'), + (591,'PA','PAN','Panama','Panamanian'), + (598,'PG','PNG','Papua New Guinea','Papua New Guinean, Papuan'), + (600,'PY','PRY','Paraguay','Paraguayan'), + (604,'PE','PER','Peru','Peruvian'), + (608,'PH','PHL','Philippines','Philippine, Filipino'), + (612,'PN','PCN','Pitcairn','Pitcairn Island'), + (616,'PL','POL','Poland','Polish'), + (620,'PT','PRT','Portugal','Portuguese'), + (624,'GW','GNB','Guinea-Bissau','Bissau-Guinean'), + (626,'TL','TLS','Timor-Leste','Timorese'), + (630,'PR','PRI','Puerto Rico','Puerto Rican'), + (634,'QA','QAT','Qatar','Qatari'), + (638,'RE','REU','Réunion','Réunionese, Réunionnais'), + (642,'RO','ROU','Romania','Romanian'), + (643,'RU','RUS','Russian Federation','Russian'), + (646,'RW','RWA','Rwanda','Rwandan'), + (652,'BL','BLM','Saint Barthélemy','Barthélemois'), + (654,'SH','SHN','Saint Helena, Ascension and Tristan da Cunha','Saint Helenian'), + (659,'KN','KNA','Saint Kitts and Nevis','Kittitian or Nevisian'), + (660,'AI','AIA','Anguilla','Anguillan'), + (662,'LC','LCA','Saint Lucia','Saint Lucian'), + (663,'MF','MAF','Saint Martin (French part)','Saint-Martinoise'), + (666,'PM','SPM','Saint Pierre and Miquelon','Saint-Pierrais or Miquelonnais'), + (670,'VC','VCT','Saint Vincent and the Grenadines','Saint Vincentian, Vincentian'), + (674,'SM','SMR','San Marino','Sammarinese'), + (678,'ST','STP','Sao Tome and Principe','São Toméan'), + (682,'SA','SAU','Saudi Arabia','Saudi, Saudi Arabian'), + (686,'SN','SEN','Senegal','Senegalese'), + (688,'RS','SRB','Serbia','Serbian'), + (690,'SC','SYC','Seychelles','Seychellois'), + (694,'SL','SLE','Sierra Leone','Sierra Leonean'), + (702,'SG','SGP','Singapore','Singaporean'), + (703,'SK','SVK','Slovakia','Slovak'), + (704,'VN','VNM','Vietnam','Vietnamese'), + (705,'SI','SVN','Slovenia','Slovenian, Slovene'), + (706,'SO','SOM','Somalia','Somali, Somalian'), + (710,'ZA','ZAF','South Africa','South African'), + (716,'ZW','ZWE','Zimbabwe','Zimbabwean'), + (724,'ES','ESP','Spain','Spanish'), + (728,'SS','SSD','South Sudan','South Sudanese'), + (729,'SD','SDN','Sudan','Sudanese'), + (732,'EH','ESH','Western Sahara','Sahrawi, Sahrawian, Sahraouian'), + (740,'SR','SUR','Suriname','Surinamese'), + (744,'SJ','SJM','Svalbard and Jan Mayen','Svalbard'), + (748,'SZ','SWZ','Swaziland','Swazi'), + (752,'SE','SWE','Sweden','Swedish'), + (756,'CH','CHE','Switzerland','Swiss'), + (760,'SY','SYR','Syrian Arab Republic','Syrian'), + (762,'TJ','TJK','Tajikistan','Tajikistani'), + (764,'TH','THA','Thailand','Thai'), + (768,'TG','TGO','Togo','Togolese'), + (772,'TK','TKL','Tokelau','Tokelauan'), + (776,'TO','TON','Tonga','Tongan'), + (780,'TT','TTO','Trinidad and Tobago','Trinidadian or Tobagonian'), + (784,'AE','ARE','United Arab Emirates','Emirati, Emirian, Emiri'), + (788,'TN','TUN','Tunisia','Tunisian'), + (792,'TR','TUR','Turkey','Turkish'), + (795,'TM','TKM','Turkmenistan','Turkmen'), + (796,'TC','TCA','Turks and Caicos Islands','Turks and Caicos Island'), + (798,'TV','TUV','Tuvalu','Tuvaluan'), + (800,'UG','UGA','Uganda','Ugandan'), + (804,'UA','UKR','Ukraine','Ukrainian'), + (807,'MK','MKD','Macedonia (the former Yugoslav Republic of)','Macedonian'), + (818,'EG','EGY','Egypt','Egyptian'), + (826,'GB','GBR','United Kingdom of Great Britain and Northern Ireland','British, UK'), + (831,'GG','GGY','Guernsey','Channel Island'), + (832,'JE','JEY','Jersey','Channel Island'), + (833,'IM','IMN','Isle of Man','Manx'), + (834,'TZ','TZA','Tanzania, United Republic of','Tanzanian'), + (840,'US','USA','United States of America','American'), + (850,'VI','VIR','Virgin Islands (U.S.)','U.S. Virgin Island'), + (854,'BF','BFA','Burkina Faso','Burkinabé'), + (858,'UY','URY','Uruguay','Uruguayan'), + (860,'UZ','UZB','Uzbekistan','Uzbekistani, Uzbek'), + (862,'VE','VEN','Venezuela (Bolivarian Republic of)','Venezuelan'), + (876,'WF','WLF','Wallis and Futuna','Wallis and Futuna, Wallisian or Futunan'), + (882,'WS','WSM','Samoa','Samoan'), + (887,'YE','YEM','Yemen','Yemeni'), + (894,'ZM','ZMB','Zambia','Zambian'); + +/*!40000 ALTER TABLE `countries` ENABLE KEYS */; +UNLOCK TABLES; + + +# Dump of table currencies +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `currencies`; + +CREATE TABLE `currencies` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(255) DEFAULT NULL, + `symbol` varchar(255) DEFAULT NULL, + `currency_code` varchar(255) DEFAULT NULL, + `uuid` varchar(255) DEFAULT NULL, + `content_status` varchar(255) DEFAULT NULL, + `created_at` datetime DEFAULT NULL, + `updated_at` datetime DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +LOCK TABLES `currencies` WRITE; +/*!40000 ALTER TABLE `currencies` DISABLE KEYS */; + +INSERT INTO `currencies` (`id`, `name`, `symbol`, `currency_code`, `uuid`, `content_status`, `created_at`, `updated_at`) +VALUES + (107,'Afghani','؋','AFN',NULL,NULL,NULL,NULL), + (108,'Lek','Lek','ALL',NULL,NULL,NULL,NULL), + (109,'Netherlands Antillean guilder','ƒ','ANG',NULL,NULL,NULL,NULL), + (110,'Argentine Peso','$','ARS',NULL,NULL,NULL,NULL), + (111,'Australian Dollar','$','AUD',NULL,NULL,NULL,NULL), + (112,'Aruban Florin','ƒ','AWG',NULL,NULL,NULL,NULL), + (113,'Azerbaijan Manat','₼','AZN',NULL,NULL,NULL,NULL), + (114,'Convertible Mark','KM','BAM',NULL,NULL,NULL,NULL), + (115,'Barbados Dollar','$','BBD',NULL,NULL,NULL,NULL), + (116,'Bulgarian Lev','лв','BGN',NULL,NULL,NULL,NULL), + (117,'Bermudian Dollar','$','BMD',NULL,NULL,NULL,NULL), + (118,'Brunei Dollar','$','BND',NULL,NULL,NULL,NULL), + (119,'boliviano','$b','BOB',NULL,NULL,NULL,NULL), + (120,'Brazilian Real','R$','BRL',NULL,NULL,NULL,NULL), + (121,'Bahamian Dollar','$','BSD',NULL,NULL,NULL,NULL), + (122,'Bitcoin','Ƀ','BTC',NULL,NULL,NULL,NULL), + (123,'Pula','P','BWP',NULL,NULL,NULL,NULL), + (124,'Belarusian Ruble','Br','BYN',NULL,NULL,NULL,NULL), + (125,'Belize Dollar','BZ$','BZD',NULL,NULL,NULL,NULL), + (126,'Canadian Dollar','$','CAD',NULL,NULL,NULL,NULL), + (127,'Swiss Franc','CHF','CHF',NULL,NULL,NULL,NULL), + (128,'Chilean Peso','$','CLP',NULL,NULL,NULL,NULL), + (129,'Yuan Renminbi','¥','CNY',NULL,NULL,NULL,NULL), + (130,'Colombian Peso','$','COP',NULL,NULL,NULL,NULL), + (131,'Costa Rican Colon','₡','CRC',NULL,NULL,NULL,NULL), + (132,'Cuban Peso','₱','CUP',NULL,NULL,NULL,NULL), + (133,'Czech koruna (pl. koruny)','Kč','CZK',NULL,NULL,NULL,NULL), + (134,'Danish Krone','kr','DKK',NULL,NULL,NULL,NULL), + (135,'Dominican peso','RD$','DOP',NULL,NULL,NULL,NULL), + (136,'Egyptian Pound','£','EGP',NULL,NULL,NULL,NULL), + (137,'Euro','€','EUR',NULL,NULL,NULL,NULL), + (138,'Fiji Dollar','$','FJD',NULL,NULL,NULL,NULL), + (139,'Falkland Islands pound','£','FKP',NULL,NULL,NULL,NULL), + (140,'pound sterling','£','GBP',NULL,NULL,NULL,NULL), + (141,'Ghana Cedi','¢','GHS',NULL,NULL,NULL,NULL), + (142,'Gibraltar Pound','£','GIP',NULL,NULL,NULL,NULL), + (143,'Quetzal','Q','GTQ',NULL,NULL,NULL,NULL), + (144,'Guyana Dollar','$','GYD',NULL,NULL,NULL,NULL), + (145,'Hong Kong Dollar','$','HKD',NULL,NULL,NULL,NULL), + (146,'Lempira','L','HNL',NULL,NULL,NULL,NULL), + (147,'Kuna','kn','HRK',NULL,NULL,NULL,NULL), + (148,'Forint','Ft','HUF',NULL,NULL,NULL,NULL), + (149,'Rupiah','Rp','IDR',NULL,NULL,NULL,NULL), + (150,'New Israeli Sheqel','₪','ILS',NULL,NULL,NULL,NULL), + (151,'Indian Rupee','₹','INR',NULL,NULL,NULL,NULL), + (152,'Iranian rial','﷼','IRR',NULL,NULL,NULL,NULL), + (153,'Iceland Krona','kr','ISK',NULL,NULL,NULL,NULL), + (154,'Jamaican Dollar','J$','JMD',NULL,NULL,NULL,NULL), + (155,'Yen','¥','JPY',NULL,NULL,NULL,NULL), + (156,'Som','лв','KGS',NULL,NULL,NULL,NULL), + (157,'Riel','៛','KHR',NULL,NULL,NULL,NULL), + (158,'North Korean won (inv.)','₩','KPW',NULL,NULL,NULL,NULL), + (159,'South Korean won (inv.)','₩','KRW',NULL,NULL,NULL,NULL), + (160,'Cayman Islands dollar','$','KYD',NULL,NULL,NULL,NULL), + (161,'Tenge','лв','KZT',NULL,NULL,NULL,NULL), + (162,'kip (inv.)','₭','LAK',NULL,NULL,NULL,NULL), + (163,'Lebanese Pound','£','LBP',NULL,NULL,NULL,NULL), + (164,'Sri Lanka Rupee','₨','LKR',NULL,NULL,NULL,NULL), + (165,'Liberian Dollar','$','LRD',NULL,NULL,NULL,NULL), + (166,'denar (inv.)','ден','MKD',NULL,NULL,NULL,NULL), + (167,'Tugrik','₮','MNT',NULL,NULL,NULL,NULL), + (168,'Mauritius Rupee','₨','MUR',NULL,NULL,NULL,NULL), + (169,'Mexican Peso','$','MXN',NULL,NULL,NULL,NULL), + (170,'Malaysian Ringgit','RM','MYR',NULL,NULL,NULL,NULL), + (171,'Mozambique Metical','MT','MZN',NULL,NULL,NULL,NULL), + (172,'Namibia Dollar','$','NAD',NULL,NULL,NULL,NULL), + (173,'Naira','₦','NGN',NULL,NULL,NULL,NULL), + (174,'Cordoba Oro','C$','NIO',NULL,NULL,NULL,NULL), + (204,'US Dollar','$','USD',NULL,NULL,NULL,NULL), + (206,'Uzbekistan Sum','лв','UZS',NULL,NULL,NULL,NULL), + (207,'dong','₫','VND',NULL,NULL,NULL,NULL), + (208,'East Caribbean Dollar','$','XCD',NULL,NULL,NULL,NULL), + (209,'Yemeni Rial','﷼','YER',NULL,NULL,NULL,NULL), + (210,'Rand','R','ZAR',NULL,NULL,NULL,NULL), + (211,'Kenya Shillings','shs','KES','e3c75da5-b011-4da0-a57a-0aae39f92f36','DRAFT',NULL,NULL), + (212,'Malawian kwacha','mwk','MWK',NULL,NULL,NULL,NULL); + +/*!40000 ALTER TABLE `currencies` ENABLE KEYS */; +UNLOCK TABLES; + + +# Dump of table designations +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `designations`; + +CREATE TABLE `designations` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, + `description` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `default_privileges` text COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +LOCK TABLES `designations` WRITE; +/*!40000 ALTER TABLE `designations` DISABLE KEYS */; + +INSERT INTO `designations` (`id`, `name`, `description`, `default_privileges`, `created_at`, `updated_at`) +VALUES + (3,'administrator',NULL,NULL,NULL,NULL), + (4,'standard',NULL,NULL,NULL,NULL), + (5,'technical',NULL,NULL,NULL,NULL); + +/*!40000 ALTER TABLE `designations` ENABLE KEYS */; +UNLOCK TABLES; + + +# Dump of table direct_connections +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `direct_connections`; + +CREATE TABLE `direct_connections` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `server_id` int(11) NOT NULL, + `direct_partner` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `connection_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'VPN or Internet', + `main_ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT '', + `port` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `vpn_peer_ip` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT '', + `domain_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '', + `connection_document` text COLLATE utf8mb4_unicode_ci, + `last_modified_by` int(11) DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +LOCK TABLES `direct_connections` WRITE; +/*!40000 ALTER TABLE `direct_connections` DISABLE KEYS */; + +INSERT INTO `direct_connections` (`id`, `server_id`, `direct_partner`, `connection_type`, `main_ip_address`, `port`, `vpn_peer_ip`, `domain_name`, `connection_document`, `last_modified_by`, `created_at`, `updated_at`) +VALUES + (1,2,'TNM Malawi','VPN','41.78.250.88','5016','','','',NULL,NULL,NULL), + (2,2,'AIrtelTigo Ghana','VPN','172.17.9.38','3010','','','',NULL,NULL,NULL), + (3,1,'Seedco','vpn','172.26.162.100','5080','41.78.57.35',NULL,NULL,1,'2021-04-17 17:50:18','2021-04-17 18:32:48'), + (4,1,'Airtel USSD','vpn','172.26.163.136','5080','41.78.57.35',NULL,NULL,1,'2021-04-17 18:29:34','2021-04-17 18:53:44'), + (5,1,'Seedco','vpn','172.26.162.100','5080','216.55.137.19',NULL,NULL,1,'2021-04-17 18:30:42','2021-04-17 18:30:42'), + (6,8,'Airtel Malawi','fqdn',NULL,'80',NULL,'messaging.airtel.mw','connection_document_1618686913.docx',1,'2021-04-17 18:58:59','2021-04-17 19:15:13'), + (7,7,'Airtel Money','vpn','172.26.163.136','4452','41.78.57.35',NULL,'connection_document_1618686983.docx',1,'2021-04-17 19:11:28','2021-04-17 19:16:23'); + +/*!40000 ALTER TABLE `direct_connections` ENABLE KEYS */; +UNLOCK TABLES; + + +# Dump of table meeting_reports +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `meeting_reports`; + +CREATE TABLE `meeting_reports` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `client` varchar(200) NOT NULL DEFAULT '', + `service` varchar(200) NOT NULL DEFAULT '', + `auth_user_id` int(11) NOT NULL DEFAULT '1', + `contact_person` varchar(200) NOT NULL DEFAULT '', + `email` varchar(200) NOT NULL DEFAULT '', + `discussion` varchar(200) NOT NULL DEFAULT '', + `payment_type` varchar(200) NOT NULL DEFAULT '', + `current_balance` decimal(50,2) NOT NULL, + `payment_status` varchar(200) NOT NULL DEFAULT '', + `next_follow_up_date` date DEFAULT NULL, + `last_follow_up_date` date DEFAULT NULL, + `sam_comment` text, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +LOCK TABLES `meeting_reports` WRITE; +/*!40000 ALTER TABLE `meeting_reports` DISABLE KEYS */; + +INSERT INTO `meeting_reports` (`id`, `client`, `service`, `auth_user_id`, `contact_person`, `email`, `discussion`, `payment_type`, `current_balance`, `payment_status`, `next_follow_up_date`, `last_follow_up_date`, `sam_comment`, `created_at`, `updated_at`) +VALUES + (2,'1','regular',1,'Quo id earum dolor','hatuzyde@mailinator.net','Dolor doloremque ani','1',0.00,'paid',NULL,NULL,'A positive number - The length to be returned from the start parameter, A positive number - The length to be returned from the start parameter, A positive number - The length to be returned from the s','2021-01-28 18:45:26','2021-01-22 06:23:37'), + (3,'1','regular',1,'Voluptas rerum rem u','huki@mailinator.com','Animi inventore et','2',0.00,'unpaid',NULL,NULL,'Ad vitae voluptates','2021-01-25 10:53:42','2021-01-25 10:53:42'), + (4,'1','regular',1,'Iste rerum blanditii','rujaletir@mailinator.com','Dummy text refers to the bits of content that are used to fill a website mock-up. This text helps web designers better envision how the website will look as a finished product. It is important to unde','2',9000.00,'unpaid',NULL,NULL,NULL,'2021-02-03 11:48:52','2021-02-03 11:48:52'), + (5,'5','regular',1,'Laborum rerum laboru','bofa@mailinator.com','Esse molestias aut a Esse molestias aut a \r\nEsse molestias aut a \r\nEsse molestias aut a \r\nEsse molestias aut a Esse molestias aut a Esse molestias aut a Esse molestias aut a \r\nEsse molestias aut a Es','1',0.00,'paid',NULL,NULL,NULL,'2021-02-04 10:18:38','2021-02-04 10:18:38'), + (6,'6','regular',1,'Ut nihil nostrum id','hacyticiv@mailinator.com','Enim modi rerum quas\r\n\r\ndashboard\r\n\r\nEnim modi rerum quas\r\n\r\ndashboard\r\nEnim modi rerum quas\r\n\r\ndashboard','2',0.00,'unpaid',NULL,NULL,NULL,'2021-02-04 10:19:59','2021-02-04 10:19:59'), + (7,'5','regular',1,'Consequatur exercita','lykomyl@mailinator.com','MySQL provides several variations on INSERT and UPDATE to allow inserting and updating exactly the desired data. These features provide a lot of power and flexibility, making MySQL significantly more ','2',0.00,'unpaid',NULL,NULL,NULL,'2021-02-04 10:20:45','2021-02-04 10:20:45'), + (8,'1','regular',5,'Richard Oponglo','dumug@mailinator.com','1. FOLLOW YOUR CHILD\'S PROGRESS\r\n \r\nFrom report cards, fee structures, term dates and all the regular updates from your school fast and timely. Chat with teachers and share your child’s progress with ','2',49000.00,'paid',NULL,NULL,NULL,'2021-02-08 05:33:06','2021-02-08 05:33:06'), + (9,'6','regular',5,'Ben Sorkies','sukoz@mailinator.com','There isn\'t a minute that passes by that we aren\'t using our phones, including searching for places to buy food. So once you\'ve created your restaurant landing page, you\'ll have to ensure that it\'s mo','1',2300.00,'paid',NULL,NULL,NULL,'2021-02-08 06:04:47','2021-02-08 06:04:47'), + (10,'2','regular',1,'Frank Osem Panyin','fiqumisimi@mailinator.com','Doloremque aut sunt','1',6677.00,'paid','2021-02-08','2021-02-08',NULL,'2021-02-08 14:30:15','2021-02-08 14:30:15'), + (11,'1','BULK SMS',1,'Quod minim','gebif@mailinator.com','Quo sapiente nulla o','2',6788.00,'unpaid','2021-02-09','2021-02-09',NULL,'2021-02-09 10:01:43','2021-02-09 10:01:43'); + +/*!40000 ALTER TABLE `meeting_reports` ENABLE KEYS */; +UNLOCK TABLES; + + +# Dump of table migrations +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `migrations`; + +CREATE TABLE `migrations` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `migration` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `batch` int(11) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +LOCK TABLES `migrations` WRITE; +/*!40000 ALTER TABLE `migrations` DISABLE KEYS */; + +INSERT INTO `migrations` (`id`, `migration`, `batch`) +VALUES + (4,'2021_04_13_111024_create_models_server_crendentials_table',1), + (5,'2021_04_13_111110_create_models_direct_connections_table',1), + (6,'2014_10_12_000000_create_users_table',2), + (7,'2014_10_12_100000_create_password_resets_table',2), + (8,'2021_04_13_104850_create_click_servers_table',2), + (9,'2021_04_13_111024_create_server_crendentials_table',3), + (10,'2021_04_13_111110_create_direct_connections_table',3); + +/*!40000 ALTER TABLE `migrations` ENABLE KEYS */; +UNLOCK TABLES; + + +# Dump of table network_operators +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `network_operators`; + +CREATE TABLE `network_operators` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(200) NOT NULL DEFAULT '', + `country` varchar(200) NOT NULL DEFAULT '', + `account_manager_id` int(11) NOT NULL, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +LOCK TABLES `network_operators` WRITE; +/*!40000 ALTER TABLE `network_operators` DISABLE KEYS */; + +INSERT INTO `network_operators` (`id`, `name`, `country`, `account_manager_id`, `created_at`, `updated_at`) +VALUES + (1,'Airtel','GH',1,'2021-01-21 01:29:56','2021-01-20 05:57:39'), + (4,'Kennedy Solis','GH',1,'2021-01-21 01:32:16','2021-01-20 15:41:20'), + (5,'Keefe Skinner','CN',1,'2021-02-08 17:13:44','2021-02-08 17:13:44'); + +/*!40000 ALTER TABLE `network_operators` ENABLE KEYS */; +UNLOCK TABLES; + + +# Dump of table password_resets +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `password_resets`; + +CREATE TABLE `password_resets` ( + `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `token` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + KEY `password_resets_email_index` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + + +# Dump of table payment_type +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `payment_type`; + +CREATE TABLE `payment_type` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(200) NOT NULL DEFAULT '', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +LOCK TABLES `payment_type` WRITE; +/*!40000 ALTER TABLE `payment_type` DISABLE KEYS */; + +INSERT INTO `payment_type` (`id`, `name`, `created_at`, `updated_at`) +VALUES + (1,'Prepaid','2021-01-25 16:30:15',NULL), + (2,'Postpaid','2021-01-25 16:30:20',NULL); + +/*!40000 ALTER TABLE `payment_type` ENABLE KEYS */; +UNLOCK TABLES; + + +# Dump of table privileges +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `privileges`; + +CREATE TABLE `privileges` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(200) NOT NULL DEFAULT '', + `description` varchar(200) NOT NULL DEFAULT '', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + + + +# Dump of table sam_comments +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `sam_comments`; + +CREATE TABLE `sam_comments` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `report_id` int(11) NOT NULL, + `created_by_id` int(11) NOT NULL, + `message` text, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +LOCK TABLES `sam_comments` WRITE; +/*!40000 ALTER TABLE `sam_comments` DISABLE KEYS */; + +INSERT INTO `sam_comments` (`id`, `report_id`, `created_by_id`, `message`, `created_at`, `updated_at`) +VALUES + (1,3,1,'here at the wall.','2021-02-03 00:00:00','2021-02-03 00:00:00'), + (2,3,1,'here at the wall again ','2021-02-03 00:00:00','2021-02-03 00:00:00'), + (3,4,1,'Now you know what dummy text is, let’s learn about its usefulness. Some people say that they don’t need to use a dummy text generator to deliver a web design project to the customer. ','2021-02-03 00:00:00','2021-02-03 00:00:00'), + (4,4,1,'Dummy text shouldn’t make any logical sense, to keep people from focusing on it instead of the visual impact it has. Using filler text is all about facilitating the visual impression of a final piece of web design.','2021-02-03 00:00:00','2021-02-03 00:00:00'), + (5,4,1,'Est facere aut volu','2021-02-03 20:33:57','2021-02-03 20:33:57'), + (6,4,1,'Eius harum culpa und','2021-02-03 20:35:49','2021-02-03 20:35:49'), + (7,4,1,'Lipsum is probably the most popular dummy text generator out there. When analyzing a website template or theme, you probably saw the Latin filler text that gave structure to the page. This was almost certainly generated with Lipsum or a similar tool. It is a simple dummy text generator where you can specify how many words of filler text you need. You can download Lipsum as an add-on for Firefox, which is quite convenient for web designers.','2021-02-03 21:03:54','2021-02-03 21:03:54'), + (8,7,1,'Suppose I wish to insert the data from t2 into t1. This data would violate the primary key (a row exists where column a is 1) so the insert will fail: ERROR 1062 (23000): Duplicate entry \'1\' for key 1. Recall that in MySQL, a primary key is simply a unique index named PRIMARY. Any data that violates any unique index will cause the same problem.','2021-02-04 11:05:00','2021-02-04 11:05:00'), + (9,3,1,'Suppose I wish to insert the data from t2 into t1. This data would violate the primary key (a row exists where column a is 1) so the insert will fail: ERROR 1062 (23000): Duplicate entry','2021-02-04 11:05:43','2021-02-04 11:05:43'); + +/*!40000 ALTER TABLE `sam_comments` ENABLE KEYS */; +UNLOCK TABLES; + + +# Dump of table server_credentials +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `server_credentials`; + +CREATE TABLE `server_credentials` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `server_id` int(11) NOT NULL, + `type` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `username` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `password` text COLLATE utf8mb4_unicode_ci NOT NULL, + `remarks` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '', + `last_modified_by` int(11) DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +LOCK TABLES `server_credentials` WRITE; +/*!40000 ALTER TABLE `server_credentials` DISABLE KEYS */; + +INSERT INTO `server_credentials` (`id`, `server_id`, `type`, `username`, `password`, `remarks`, `last_modified_by`, `created_at`, `updated_at`) +VALUES + (1,1,NULL,'root','eyJpdiI6IlpsaG9ranN5Q2NxMVFuTlZvT1c2cEE9PSIsInZhbHVlIjoiNEp5Mzdqa0xoWFwvNUF6Z0lJRVQ4M1RZQmpEZzZiRjhRajZBRnZ6czU0RGs9IiwibWFjIjoiM2M0Njg2YTA1MDgzM2E0ODZhYTM4MmQzNTY1YjVhYjI1Yzk5YTFlMWJjNTE1OGRhNWZmZGUxMjM3OGQxZDg4YyJ9','',1,'2021-04-19 19:20:00','2021-04-19 19:29:27'), + (2,2,NULL,'root','eyJpdiI6IktjaHNzUGdseHVIZnpRbFpnTDJRQkE9PSIsInZhbHVlIjoiWURvY0dOUjg0WWM0ZUsyXC9GXC81RitRPT0iLCJtYWMiOiI2NDA4MzRlNjU5ODE1YzRiMzQ1NTFlMzUwMGFlOWUxOTU2YTY5M2Y4OTIwNzEwOGU3ZWU0YzA5MzAzYzdhOGE3In0=','',1,'2021-04-19 19:23:11','2021-04-19 19:23:11'); + +/*!40000 ALTER TABLE `server_credentials` ENABLE KEYS */; +UNLOCK TABLES; + + +# Dump of table services +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `services`; + +CREATE TABLE `services` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(200) NOT NULL DEFAULT '', + `type` varchar(200) NOT NULL DEFAULT '', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +LOCK TABLES `services` WRITE; +/*!40000 ALTER TABLE `services` DISABLE KEYS */; + +INSERT INTO `services` (`id`, `name`, `type`, `created_at`, `updated_at`) +VALUES + (1,'A2P','regular','2021-02-03 12:53:10','2021-01-20 07:40:59'), + (2,'BULK SMS','regular','2021-02-03 13:17:46',NULL), + (3,'USSD','','2021-03-09 14:58:12',NULL), + (4,'SMS App','','2021-03-09 14:58:18',NULL); + +/*!40000 ALTER TABLE `services` ENABLE KEYS */; +UNLOCK TABLES; + + +# Dump of table users +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `users`; + +CREATE TABLE `users` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `users_email_unique` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + + +# Dump of table ussd_client_payments +# ------------------------------------------------------------ + +DROP TABLE IF EXISTS `ussd_client_payments`; + +CREATE TABLE `ussd_client_payments` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `client_id` int(11) DEFAULT NULL, + `payment_type` varchar(191) DEFAULT NULL, + `amount_paid` decimal(30,2) DEFAULT '0.00', + `remarks` text, + `last_modified_by_id` int(11) DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +LOCK TABLES `ussd_client_payments` WRITE; +/*!40000 ALTER TABLE `ussd_client_payments` DISABLE KEYS */; + +INSERT INTO `ussd_client_payments` (`id`, `client_id`, `payment_type`, `amount_paid`, `remarks`, `last_modified_by_id`, `created_at`, `updated_at`) +VALUES + (1,15,NULL,0.00,NULL,1,'2021-03-16 18:29:11','2021-03-16 18:29:11'), + (2,16,NULL,0.00,NULL,1,'2021-03-16 18:29:48','2021-03-16 18:29:48'), + (3,17,NULL,0.00,NULL,1,'2021-03-16 18:32:04','2021-03-16 18:32:04'), + (4,18,NULL,0.00,NULL,1,'2021-03-16 18:33:23','2021-03-16 18:33:23'), + (5,19,NULL,0.00,NULL,1,'2021-03-16 18:49:12','2021-03-16 18:49:12'), + (6,20,NULL,0.00,NULL,1,'2021-03-16 18:49:32','2021-03-16 18:49:32'), + (7,21,'Laudantium quia qui',2345.00,'Voluptatem quos inv',1,'2021-03-16 18:50:45','2021-03-17 12:13:30'), + (8,22,'Neque qui voluptatem',4500.00,'Dolor molestiae cons',1,'2021-03-16 18:51:04','2021-03-17 12:07:12'), + (9,23,NULL,0.00,NULL,1,'2021-04-19 12:22:51','2021-04-19 12:22:51'), + (10,24,NULL,0.00,NULL,1,'2021-04-19 12:31:23','2021-04-19 12:31:23'), + (11,25,NULL,0.00,NULL,1,'2021-05-12 09:49:53','2021-05-12 09:49:53'), + (12,26,NULL,0.00,NULL,1,'2021-05-12 09:55:55','2021-05-12 09:55:55'); + +/*!40000 ALTER TABLE `ussd_client_payments` ENABLE KEYS */; +UNLOCK TABLES; + + + +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/composer.json b/composer.json new file mode 100755 index 0000000..cbdfdcd --- /dev/null +++ b/composer.json @@ -0,0 +1,59 @@ +{ + "name": "laravel/laravel", + "description": "The Laravel Framework.", + "keywords": ["framework", "laravel"], + "license": "MIT", + "type": "project", + "require": { + "php": ">=7.0.0", + "fideloper/proxy": "~3.3", + "laravel/framework": "5.5.*", + "laravel/tinker": "~1.0", + "laravelcollective/html": "^5.4.0" + }, + "require-dev": { + "filp/whoops": "~2.0", + "fzaninotto/faker": "~1.4", + "laravel/homestead": "^11.2", + "mockery/mockery": "~1.0", + "phpunit/phpunit": "~6.0", + "symfony/thanks": "^1.0" + }, + "autoload": { + "classmap": [ + "database/seeds", + "database/factories" + ], + "psr-4": { + "App\\": "app/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "extra": { + "laravel": { + "dont-discover": [ + ] + } + }, + "scripts": { + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate" + ], + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover" + ] + }, + "config": { + "preferred-install": "dist", + "sort-packages": true, + "optimize-autoloader": true + } +} diff --git a/composer.lock b/composer.lock new file mode 100755 index 0000000..ee9a8a3 --- /dev/null +++ b/composer.lock @@ -0,0 +1,5598 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "2656f74132c8b717ed7fc576ccc5aab8", + "packages": [ + { + "name": "dnoegel/php-xdg-base-dir", + "version": "v0.1.1", + "source": { + "type": "git", + "url": "https://github.com/dnoegel/php-xdg-base-dir.git", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "XdgBaseDir\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "implementation of xdg base directory specification for php", + "support": { + "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", + "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" + }, + "time": "2019-12-04T15:06:13+00:00" + }, + { + "name": "doctrine/inflector", + "version": "1.4.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", + "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector", + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/1.4.4" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2021-04-16T17:34:40+00:00" + }, + { + "name": "doctrine/lexer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan": "^0.11.8", + "phpunit/phpunit": "^8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2020-05-25T17:44:05+00:00" + }, + { + "name": "egulias/email-validator", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "c81f18a3efb941d8c4d2e025f6183b5c6d697307" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/c81f18a3efb941d8c4d2e025f6183b5c6d697307", + "reference": "c81f18a3efb941d8c4d2e025f6183b5c6d697307", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^1.2", + "php": ">=7.2", + "symfony/polyfill-intl-idn": "^1.15" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^8.5.8|^9.3.3", + "vimeo/psalm": "^4" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2021-04-01T18:37:14+00:00" + }, + { + "name": "erusev/parsedown", + "version": "1.7.4", + "source": { + "type": "git", + "url": "https://github.com/erusev/parsedown.git", + "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3", + "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35" + }, + "type": "library", + "autoload": { + "psr-0": { + "Parsedown": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" + } + ], + "description": "Parser for Markdown.", + "homepage": "http://parsedown.org", + "keywords": [ + "markdown", + "parser" + ], + "support": { + "issues": "https://github.com/erusev/parsedown/issues", + "source": "https://github.com/erusev/parsedown/tree/1.7.x" + }, + "time": "2019-12-30T22:54:17+00:00" + }, + { + "name": "fideloper/proxy", + "version": "3.3.4", + "source": { + "type": "git", + "url": "https://github.com/fideloper/TrustedProxy.git", + "reference": "9cdf6f118af58d89764249bbcc7bb260c132924f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/9cdf6f118af58d89764249bbcc7bb260c132924f", + "reference": "9cdf6f118af58d89764249bbcc7bb260c132924f", + "shasum": "" + }, + "require": { + "illuminate/contracts": "~5.0", + "php": ">=5.4.0" + }, + "require-dev": { + "illuminate/http": "~5.0", + "mockery/mockery": "~0.9.3", + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-dev" + }, + "laravel": { + "providers": [ + "Fideloper\\Proxy\\TrustedProxyServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Fideloper\\Proxy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Fidao", + "email": "fideloper@gmail.com" + } + ], + "description": "Set trusted proxies for Laravel", + "keywords": [ + "load balancing", + "proxy", + "trusted proxy" + ], + "support": { + "issues": "https://github.com/fideloper/TrustedProxy/issues", + "source": "https://github.com/fideloper/TrustedProxy/tree/master" + }, + "time": "2017-06-15T17:19:42+00:00" + }, + { + "name": "jakub-onderka/php-console-color", + "version": "v0.2", + "source": { + "type": "git", + "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", + "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", + "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "jakub-onderka/php-code-style": "1.0", + "jakub-onderka/php-parallel-lint": "1.0", + "jakub-onderka/php-var-dump-check": "0.*", + "phpunit/phpunit": "~4.3", + "squizlabs/php_codesniffer": "1.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "JakubOnderka\\PhpConsoleColor\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "jakub.onderka@gmail.com" + } + ], + "support": { + "issues": "https://github.com/JakubOnderka/PHP-Console-Color/issues", + "source": "https://github.com/JakubOnderka/PHP-Console-Color/tree/master" + }, + "abandoned": "php-parallel-lint/php-console-color", + "time": "2018-09-29T17:23:10+00:00" + }, + { + "name": "jakub-onderka/php-console-highlighter", + "version": "v0.4", + "source": { + "type": "git", + "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", + "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", + "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "jakub-onderka/php-console-color": "~0.2", + "php": ">=5.4.0" + }, + "require-dev": { + "jakub-onderka/php-code-style": "~1.0", + "jakub-onderka/php-parallel-lint": "~1.0", + "jakub-onderka/php-var-dump-check": "~0.1", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~1.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "JakubOnderka\\PhpConsoleHighlighter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "acci@acci.cz", + "homepage": "http://www.acci.cz/" + } + ], + "description": "Highlight PHP code in terminal", + "support": { + "issues": "https://github.com/JakubOnderka/PHP-Console-Highlighter/issues", + "source": "https://github.com/JakubOnderka/PHP-Console-Highlighter/tree/master" + }, + "abandoned": "php-parallel-lint/php-console-highlighter", + "time": "2018-09-29T18:48:56+00:00" + }, + { + "name": "kylekatarnls/update-helper", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/kylekatarnls/update-helper.git", + "reference": "429be50660ed8a196e0798e5939760f168ec8ce9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kylekatarnls/update-helper/zipball/429be50660ed8a196e0798e5939760f168ec8ce9", + "reference": "429be50660ed8a196e0798e5939760f168ec8ce9", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1.0 || ^2.0.0", + "php": ">=5.3.0" + }, + "require-dev": { + "codeclimate/php-test-reporter": "dev-master", + "composer/composer": "2.0.x-dev || ^2.0.0-dev", + "phpunit/phpunit": ">=4.8.35 <6.0" + }, + "type": "composer-plugin", + "extra": { + "class": "UpdateHelper\\ComposerPlugin" + }, + "autoload": { + "psr-0": { + "UpdateHelper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kyle", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Update helper", + "support": { + "issues": "https://github.com/kylekatarnls/update-helper/issues", + "source": "https://github.com/kylekatarnls/update-helper/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2020-04-07T20:44:10+00:00" + }, + { + "name": "laravel/framework", + "version": "v5.5.50", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "c62385a23c639742b3b74a4a78640da25e6b782b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/c62385a23c639742b3b74a4a78640da25e6b782b", + "reference": "c62385a23c639742b3b74a4a78640da25e6b782b", + "shasum": "" + }, + "require": { + "doctrine/inflector": "~1.1", + "erusev/parsedown": "~1.7", + "ext-mbstring": "*", + "ext-openssl": "*", + "league/flysystem": "^1.0.8", + "monolog/monolog": "~1.12", + "mtdowling/cron-expression": "~1.0", + "nesbot/carbon": "^1.26.0", + "php": ">=7.0", + "psr/container": "~1.0", + "psr/simple-cache": "^1.0", + "ramsey/uuid": "~3.0", + "swiftmailer/swiftmailer": "~6.0", + "symfony/console": "~3.3", + "symfony/debug": "~3.3", + "symfony/finder": "~3.3", + "symfony/http-foundation": "~3.3", + "symfony/http-kernel": "~3.3", + "symfony/process": "~3.3", + "symfony/routing": "~3.3", + "symfony/var-dumper": "~3.3", + "tijsverkoyen/css-to-inline-styles": "~2.2", + "vlucas/phpdotenv": "~2.2" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version", + "tightenco/collect": "<5.5.33" + }, + "require-dev": { + "aws/aws-sdk-php": "~3.0", + "doctrine/dbal": "~2.5", + "filp/whoops": "^2.1.4", + "mockery/mockery": "~1.0", + "orchestra/testbench-core": "3.5.*", + "pda/pheanstalk": "~3.0", + "phpunit/phpunit": "~6.0", + "predis/predis": "^1.1.1", + "symfony/css-selector": "~3.3", + "symfony/dom-crawler": "~3.3" + }, + "suggest": { + "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.5).", + "ext-pcntl": "Required to use all features of the queue worker.", + "ext-posix": "Required to use all features of the queue worker.", + "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", + "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).", + "laravel/tinker": "Required to use the tinker console command (~1.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", + "league/flysystem-cached-adapter": "Required to use Flysystem caching (~1.0).", + "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", + "nexmo/client": "Required to use the Nexmo transport (~1.0).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", + "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~3.0).", + "symfony/css-selector": "Required to use some of the crawler integration testing tools (~3.3).", + "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~3.3).", + "symfony/psr-http-message-bridge": "Required to psr7 bridging features (~1.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.5-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2020-08-18T13:47:57+00:00" + }, + { + "name": "laravel/tinker", + "version": "v1.0.10", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "ad571aacbac1539c30d480908f9d0c9614eaf1a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/ad571aacbac1539c30d480908f9d0c9614eaf1a7", + "reference": "ad571aacbac1539c30d480908f9d0c9614eaf1a7", + "shasum": "" + }, + "require": { + "illuminate/console": "~5.1|^6.0", + "illuminate/contracts": "~5.1|^6.0", + "illuminate/support": "~5.1|^6.0", + "php": ">=5.5.9", + "psy/psysh": "0.7.*|0.8.*|0.9.*", + "symfony/var-dumper": "~3.0|~4.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0|~5.0" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (~5.1)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v1.0.10" + }, + "time": "2019-08-07T15:10:45+00:00" + }, + { + "name": "laravelcollective/html", + "version": "v5.5.4", + "source": { + "type": "git", + "url": "https://github.com/LaravelCollective/html.git", + "reference": "04c596a69975b901f2223eb6eb4adf55354121c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/LaravelCollective/html/zipball/04c596a69975b901f2223eb6eb4adf55354121c2", + "reference": "04c596a69975b901f2223eb6eb4adf55354121c2", + "shasum": "" + }, + "require": { + "illuminate/http": "5.5.*", + "illuminate/routing": "5.5.*", + "illuminate/session": "5.5.*", + "illuminate/support": "5.5.*", + "illuminate/view": "5.5.*", + "php": ">=7.0.0" + }, + "require-dev": { + "illuminate/database": "5.5.*", + "mockery/mockery": "~0.9.4", + "phpunit/phpunit": "~5.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.5-dev" + }, + "laravel": { + "providers": [ + "Collective\\Html\\HtmlServiceProvider" + ], + "aliases": { + "Form": "Collective\\Html\\FormFacade", + "Html": "Collective\\Html\\HtmlFacade" + } + } + }, + "autoload": { + "psr-4": { + "Collective\\Html\\": "src/" + }, + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + }, + { + "name": "Adam Engebretson", + "email": "adam@laravelcollective.com" + } + ], + "description": "HTML and Form Builders for the Laravel Framework", + "homepage": "https://laravelcollective.com", + "support": { + "issues": "https://github.com/LaravelCollective/html/issues", + "source": "https://github.com/LaravelCollective/html" + }, + "time": "2018-03-24T00:39:21+00:00" + }, + { + "name": "league/flysystem", + "version": "1.1.5", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "18634df356bfd4119fe3d6156bdb990c414c14ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/18634df356bfd4119fe3d6156bdb990c414c14ea", + "reference": "18634df356bfd4119fe3d6156bdb990c414c14ea", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/mime-type-detection": "^1.3", + "php": "^7.2.5 || ^8.0" + }, + "conflict": { + "league/flysystem-sftp": "<1.0.6" + }, + "require-dev": { + "phpspec/prophecy": "^1.11.1", + "phpunit/phpunit": "^8.5.8" + }, + "suggest": { + "ext-ftp": "Allows you to use FTP server storage", + "ext-openssl": "Allows you to use FTPS server storage", + "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", + "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", + "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", + "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", + "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", + "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", + "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", + "league/flysystem-webdav": "Allows you to use WebDAV storage", + "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", + "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", + "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Filesystem abstraction: Many filesystems, one API.", + "keywords": [ + "Cloud Files", + "WebDAV", + "abstraction", + "aws", + "cloud", + "copy.com", + "dropbox", + "file systems", + "files", + "filesystem", + "filesystems", + "ftp", + "rackspace", + "remote", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/1.1.5" + }, + "funding": [ + { + "url": "https://offset.earth/frankdejonge", + "type": "other" + } + ], + "time": "2021-08-17T13:49:42+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3", + "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.18", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.7.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2021-01-18T20:58:21+00:00" + }, + { + "name": "monolog/monolog", + "version": "1.26.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c6b00f05152ae2c9b04a448f99c7590beb6042f5", + "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpstan/phpstan": "^0.12.59", + "phpunit/phpunit": "~4.5", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/1.26.1" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2021-05-28T08:32:12+00:00" + }, + { + "name": "mtdowling/cron-expression", + "version": "v1.2.3", + "source": { + "type": "git", + "url": "https://github.com/mtdowling/cron-expression.git", + "reference": "9be552eebcc1ceec9776378f7dcc085246cacca6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9be552eebcc1ceec9776378f7dcc085246cacca6", + "reference": "9be552eebcc1ceec9776378f7dcc085246cacca6", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0|~5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/mtdowling/cron-expression/issues", + "source": "https://github.com/mtdowling/cron-expression/tree/v1.2.3" + }, + "abandoned": "dragonmantank/cron-expression", + "time": "2019-12-28T04:23:06+00:00" + }, + { + "name": "nesbot/carbon", + "version": "1.39.1", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "4be0c005164249208ce1b5ca633cd57bdd42ff33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4be0c005164249208ce1b5ca633cd57bdd42ff33", + "reference": "4be0c005164249208ce1b5ca633cd57bdd42ff33", + "shasum": "" + }, + "require": { + "kylekatarnls/update-helper": "^1.1", + "php": ">=5.3.9", + "symfony/translation": "~2.6 || ~3.0 || ~4.0" + }, + "require-dev": { + "composer/composer": "^1.2", + "friendsofphp/php-cs-fixer": "~2", + "phpunit/phpunit": "^4.8.35 || ^5.7" + }, + "bin": [ + "bin/upgrade-carbon" + ], + "type": "library", + "extra": { + "update-helper": "Carbon\\Upgrade", + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" + } + ], + "description": "A simple API extension for DateTime.", + "homepage": "http://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "time": "2019-10-14T05:51:36+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.12.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "6608f01670c3cc5079e18c1dab1104e002579143" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143", + "reference": "6608f01670c3cc5079e18c1dab1104e002579143", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0" + }, + "time": "2021-07-21T10:44:31+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v9.99.100", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", + "shasum": "" + }, + "require": { + "php": ">= 7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, + "time": "2020-10-15T08:29:30+00:00" + }, + { + "name": "psr/container", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.1" + }, + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "psr/log", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, + "time": "2017-10-23T01:57:42+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.9.12", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "90da7f37568aee36b116a030c5f99c915267edd4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/90da7f37568aee36b116a030c5f99c915267edd4", + "reference": "90da7f37568aee36b116a030c5f99c915267edd4", + "shasum": "" + }, + "require": { + "dnoegel/php-xdg-base-dir": "0.1.*", + "ext-json": "*", + "ext-tokenizer": "*", + "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", + "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", + "php": ">=5.4.0", + "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0|~5.0", + "symfony/var-dumper": "~2.7|~3.0|~4.0|~5.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2", + "hoa/console": "~2.15|~3.16", + "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", + "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "0.9.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.9.12" + }, + "time": "2019-12-06T14:19:43+00:00" + }, + { + "name": "ramsey/uuid", + "version": "3.9.4", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "be2451bef8147b7352a28fb4cddb08adc497ada3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/be2451bef8147b7352a28fb4cddb08adc497ada3", + "reference": "be2451bef8147b7352a28fb4cddb08adc497ada3", + "shasum": "" + }, + "require": { + "ext-json": "*", + "paragonie/random_compat": "^1 | ^2 | ^9.99.99", + "php": "^5.4 | ^7 | ^8", + "symfony/polyfill-ctype": "^1.8" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "codeception/aspect-mock": "^1 | ^2", + "doctrine/annotations": "^1.2", + "goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1", + "jakub-onderka/php-parallel-lint": "^1", + "mockery/mockery": "^0.9.11 | ^1", + "moontoast/math": "^1.1", + "paragonie/random-lib": "^2", + "php-mock/php-mock-phpunit": "^0.3 | ^1.1", + "phpunit/phpunit": "^4.8 | ^5.4 | ^6.5", + "squizlabs/php_codesniffer": "^3.5" + }, + "suggest": { + "ext-ctype": "Provides support for PHP Ctype functions", + "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", + "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator", + "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", + "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Uuid\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + }, + { + "name": "Marijn Huizendveld", + "email": "marijn.huizendveld@gmail.com" + }, + { + "name": "Thibaud Fabre", + "email": "thibaud@aztech.io" + } + ], + "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", + "homepage": "https://github.com/ramsey/uuid", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "rss": "https://github.com/ramsey/uuid/releases.atom", + "source": "https://github.com/ramsey/uuid", + "wiki": "https://github.com/ramsey/uuid/wiki" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2021-08-06T20:32:15+00:00" + }, + { + "name": "swiftmailer/swiftmailer", + "version": "v6.2.7", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "15f7faf8508e04471f666633addacf54c0ab5933" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/15f7faf8508e04471f666633addacf54c0ab5933", + "reference": "15f7faf8508e04471f666633addacf54c0ab5933", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.0|^3.1", + "php": ">=7.0.0", + "symfony/polyfill-iconv": "^1.0", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "symfony/phpunit-bridge": "^4.4|^5.0" + }, + "suggest": { + "ext-intl": "Needed to support internationalized email addresses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Corbyn" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", + "keywords": [ + "email", + "mail", + "mailer" + ], + "support": { + "issues": "https://github.com/swiftmailer/swiftmailer/issues", + "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.2.7" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer", + "type": "tidelift" + } + ], + "time": "2021-03-09T12:30:35+00:00" + }, + { + "name": "symfony/console", + "version": "v3.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/a10b1da6fc93080c180bba7219b5ff5b7518fe81", + "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/debug": "~2.8|~3.0|~4.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.3|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.3|~4.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/console/tree/v3.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-24T10:57:07+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "7fb120adc7f600a59027775b224c13a33530dd90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/7fb120adc7f600a59027775b224c13a33530dd90", + "reference": "7fb120adc7f600a59027775b224c13a33530dd90", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v5.3.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-07-21T12:38:00+00:00" + }, + { + "name": "symfony/debug", + "version": "v3.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "ab42889de57fdfcfcc0759ab102e2fd4ea72dcae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/ab42889de57fdfcfcc0759ab102e2fd4ea72dcae", + "reference": "ab42889de57fdfcfcc0759ab102e2fd4ea72dcae", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + }, + "require-dev": { + "symfony/http-kernel": "~2.8|~3.0|~4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Debug Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/debug/tree/v3.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-24T10:57:07+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v4.4.30", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "2fe81680070043c4c80e7cedceb797e34f377bac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/2fe81680070043c4c80e7cedceb797e34f377bac", + "reference": "2fe81680070043c4c80e7cedceb797e34f377bac", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/event-dispatcher-contracts": "^1.1", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/dependency-injection": "<3.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/error-handler": "~3.4|~4.4", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.30" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-08-04T20:31:23+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7", + "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7", + "shasum": "" + }, + "require": { + "php": ">=7.1.3" + }, + "suggest": { + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.9" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-07-06T13:19:58+00:00" + }, + { + "name": "symfony/finder", + "version": "v3.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "b6b6ad3db3edb1b4b1c1896b1975fb684994de6e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/b6b6ad3db3edb1b4b1c1896b1975fb684994de6e", + "reference": "b6b6ad3db3edb1b4b1c1896b1975fb684994de6e", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v3.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-11-16T17:02:08+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v3.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "b9885fcce6fe494201da4f70a9309770e9d13dc8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b9885fcce6fe494201da4f70a9309770e9d13dc8", + "reference": "b9885fcce6fe494201da4f70a9309770e9d13dc8", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php70": "~1.6" + }, + "require-dev": { + "symfony/expression-language": "~2.8|~3.0|~4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony HttpFoundation Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v3.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-24T10:57:07+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v3.4.49", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "5aa72405f5bd5583c36ed6e756acb17d3f98ac40" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/5aa72405f5bd5583c36ed6e756acb17d3f98ac40", + "reference": "5aa72405f5bd5583c36ed6e756acb17d3f98ac40", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "psr/log": "~1.0", + "symfony/debug": "^3.3.3|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/http-foundation": "~3.4.12|~4.0.12|^4.1.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php56": "~1.8" + }, + "conflict": { + "symfony/config": "<2.8", + "symfony/dependency-injection": "<3.4.10|<4.0.10,>=4", + "symfony/var-dumper": "<3.3", + "twig/twig": "<1.34|<2.4,>=2" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/cache": "~1.0", + "symfony/browser-kit": "~2.8|~3.0|~4.0", + "symfony/class-loader": "~2.8|~3.0", + "symfony/config": "~2.8|~3.0|~4.0", + "symfony/console": "~2.8|~3.0|~4.0", + "symfony/css-selector": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "^3.4.10|^4.0.10", + "symfony/dom-crawler": "~2.8|~3.0|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/process": "~2.8|~3.0|~4.0", + "symfony/routing": "~3.4|~4.0", + "symfony/stopwatch": "~2.8|~3.0|~4.0", + "symfony/templating": "~2.8|~3.0|~4.0", + "symfony/translation": "~2.8|~3.0|~4.0", + "symfony/var-dumper": "~3.3|~4.0" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "", + "symfony/finder": "", + "symfony/var-dumper": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony HttpKernel Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v3.4.49" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-19T12:06:59+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/63b5bb7db83e5673936d6e3b8b3e022ff6474933", + "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-27T09:27:20+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65", + "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-27T09:27:20+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-27T12:26:48+00:00" + }, + { + "name": "symfony/polyfill-php56", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php56.git", + "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", + "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "metapackage", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php56/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-php70", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644", + "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "metapackage", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php70/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-27T09:17:38+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-07-28T13:41:28+00:00" + }, + { + "name": "symfony/process", + "version": "v3.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "b8648cf1d5af12a44a51d07ef9bf980921f15fca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/b8648cf1d5af12a44a51d07ef9bf980921f15fca", + "reference": "b8648cf1d5af12a44a51d07ef9bf980921f15fca", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v3.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-24T10:57:07+00:00" + }, + { + "name": "symfony/routing", + "version": "v3.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "3e522ac69cadffd8131cc2b22157fa7662331a6c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/3e522ac69cadffd8131cc2b22157fa7662331a6c", + "reference": "3e522ac69cadffd8131cc2b22157fa7662331a6c", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "conflict": { + "symfony/config": "<3.3.1", + "symfony/dependency-injection": "<3.3", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "psr/log": "~1.0", + "symfony/config": "^3.3.1|~4.0", + "symfony/dependency-injection": "~3.3|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/http-foundation": "~2.8|~3.0|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation loader", + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Routing Component", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v3.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-24T10:57:07+00:00" + }, + { + "name": "symfony/translation", + "version": "v4.3.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "46e462be71935ae15eab531e4d491d801857f24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/46e462be71935ae15eab531e4d491d801857f24c", + "reference": "46e462be71935ae15eab531e4d491d801857f24c", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^1.1.6" + }, + "conflict": { + "symfony/config": "<3.4", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "provide": { + "symfony/translation-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/intl": "~3.4|~4.0", + "symfony/service-contracts": "^1.1.2", + "symfony/var-dumper": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Translation Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/4.3" + }, + "time": "2020-01-04T12:24:57+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v1.1.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "84180a25fad31e23bebd26ca09d89464f082cacc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/84180a25fad31e23bebd26ca09d89464f082cacc", + "reference": "84180a25fad31e23bebd26ca09d89464f082cacc", + "shasum": "" + }, + "require": { + "php": ">=7.1.3" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v1.1.10" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-02T16:08:58+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v3.4.47", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "0719f6cf4633a38b2c1585140998579ce23b4b7d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0719f6cf4633a38b2c1585140998579ce23b4b7d", + "reference": "0719f6cf4633a38b2c1585140998579ce23b4b7d", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + }, + "require-dev": { + "ext-iconv": "*", + "twig/twig": "~1.34|~2.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "ext-symfony_debug": "" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony mechanism for exploring and dumping PHP variables", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v3.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-24T10:57:07+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "2.2.3", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "b43b05cf43c1b6d849478965062b6ef73e223bb5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/b43b05cf43c1b6d849478965062b6ef73e223bb5", + "reference": "b43b05cf43c1b6d849478965062b6ef73e223bb5", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.3" + }, + "time": "2020-07-13T06:12:54+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v2.6.7", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "b786088918a884258c9e3e27405c6a4cf2ee246e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/b786088918a884258c9e3e27405c6a4cf2ee246e", + "reference": "b786088918a884258c9e3e27405c6a4cf2ee246e", + "shasum": "" + }, + "require": { + "php": "^5.3.9 || ^7.0 || ^8.0", + "symfony/polyfill-ctype": "^1.17" + }, + "require-dev": { + "ext-filter": "*", + "ext-pcre": "*", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator.", + "ext-pcre": "Required to use most of the library." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "homepage": "https://gjcampbell.co.uk/" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://vancelucas.com/" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v2.6.7" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2021-01-20T14:39:13+00:00" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-11-10T18:47:58+00:00" + }, + { + "name": "filp/whoops", + "version": "2.14.1", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "15ead64e9828f0fc90932114429c4f7923570cb1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/15ead64e9828f0fc90932114429c4f7923570cb1", + "reference": "15ead64e9828f0fc90932114429c4f7923570cb1", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1" + }, + "require-dev": { + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.14.1" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2021-08-29T12:00:00+00:00" + }, + { + "name": "fzaninotto/faker", + "version": "v1.9.2", + "source": { + "type": "git", + "url": "https://github.com/fzaninotto/Faker.git", + "reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/848d8125239d7dbf8ab25cb7f054f1a630e68c2e", + "reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "ext-intl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7", + "squizlabs/php_codesniffer": "^2.9.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/fzaninotto/Faker/issues", + "source": "https://github.com/fzaninotto/Faker/tree/v1.9.2" + }, + "abandoned": true, + "time": "2020-12-11T09:56:16+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "laravel/homestead", + "version": "v11.2.4", + "source": { + "type": "git", + "url": "https://github.com/laravel/homestead.git", + "reference": "e20bb5c6edcec632b4776665647a3f6805bb8657" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/homestead/zipball/e20bb5c6edcec632b4776665647a3f6805bb8657", + "reference": "e20bb5c6edcec632b4776665647a3f6805bb8657", + "shasum": "" + }, + "require": { + "php": "^7.1", + "symfony/console": "~3.0||~4.0||~5.0", + "symfony/process": "~3.0||~4.0||~5.0", + "symfony/yaml": "~3.0||~4.0||~5.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "bin": [ + "bin/homestead" + ], + "type": "library", + "autoload": { + "psr-4": { + "Laravel\\Homestead\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "A virtual machine for web artisans.", + "support": { + "issues": "https://github.com/laravel/homestead/issues", + "source": "https://github.com/laravel/homestead/tree/v11.2.4" + }, + "time": "2020-10-10T19:45:05+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.3.4", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "31467aeb3ca3188158613322d66df81cedd86626" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/31467aeb3ca3188158613322d66df81cedd86626", + "reference": "31467aeb3ca3188158613322d66df81cedd86626", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=5.6.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.10|^6.5|^7.5|^8.5|^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Mockery": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "http://blog.astrumfutura.com" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "http://davedevelopment.co.uk" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "issues": "https://github.com/mockery/mockery/issues", + "source": "https://github.com/mockery/mockery/tree/1.3.4" + }, + "time": "2021-02-24T09:51:00+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.10.2", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-11-13T09:40:50+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^1.0.1", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/master" + }, + "time": "2017-03-05T18:14:27+00:00" + }, + { + "name": "phar-io/version", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/master" + }, + "time": "2017-03-05T17:38:23+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.2.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + }, + "time": "2020-09-03T19:13:55+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" + }, + "time": "2020-09-17T18:55:26+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.10.3", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "451c3cd1418cf640de218914901e51b064abb093" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", + "reference": "451c3cd1418cf640de218914901e51b064abb093", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", + "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5 || ^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.10.3" + }, + "time": "2020-03-05T15:02:03+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "5.3.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "c89677919c5dd6d3b3852f230a663118762218ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", + "reference": "c89677919c5dd6d3b3852f230a663118762218ac", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.0", + "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^2.0.1", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-xdebug": "^2.5.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/5.3" + }, + "time": "2018-04-06T15:36:58+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "irc": "irc://irc.freenode.net/phpunit", + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/1.4.5" + }, + "time": "2017-11-27T13:52:08+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" + }, + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/master" + }, + "time": "2017-02-26T11:10:40+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "791198a2c6254db10131eecfe8c06670700904db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", + "reference": "791198a2c6254db10131eecfe8c06670700904db", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", + "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master" + }, + "abandoned": true, + "time": "2017-11-27T05:48:46+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "6.5.14", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7", + "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.6.1", + "phar-io/manifest": "^1.0.1", + "phar-io/version": "^1.0", + "php": "^7.0", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^5.3", + "phpunit/php-file-iterator": "^1.4.3", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^1.0.9", + "phpunit/phpunit-mock-objects": "^5.0.9", + "sebastian/comparator": "^2.1", + "sebastian/diff": "^2.0", + "sebastian/environment": "^3.1", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^1.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2", + "phpunit/dbunit": "<3.0" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "^1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.5.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/6.5.14" + }, + "time": "2019-02-01T05:22:47+00:00" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "5.0.10", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.5", + "php": "^7.0", + "phpunit/php-text-template": "^1.2.1", + "sebastian/exporter": "^3.1" + }, + "conflict": { + "phpunit/phpunit": "<6.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.5.11" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit-mock-objects/issues", + "source": "https://github.com/sebastianbergmann/phpunit-mock-objects/tree/5.0.10" + }, + "abandoned": true, + "time": "2018-08-09T05:50:03+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T08:15:22+00:00" + }, + { + "name": "sebastian/comparator", + "version": "2.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/diff": "^2.0 || ^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/master" + }, + "time": "2018-02-01T13:46:46+00:00" + }, + { + "name": "sebastian/diff", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/master" + }, + "time": "2017-08-03T08:09:46+00:00" + }, + { + "name": "sebastian/environment", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/master" + }, + "time": "2017-07-01T08:51:00+00:00" + }, + { + "name": "sebastian/exporter", + "version": "3.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/6b853149eab67d4da22291d36f5b0631c0fd856e", + "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:47:53+00:00" + }, + { + "name": "sebastian/global-state", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/2.0.0" + }, + "time": "2017-04-27T15:39:26+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:40:27+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:37:18+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", + "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:34:24+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/master" + }, + "abandoned": true, + "time": "2015-07-28T20:34:47+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/master" + }, + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "symfony/thanks", + "version": "v1.2.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/thanks.git", + "reference": "e9c4709560296acbd4fe9e12b8d57a925aa7eae8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/thanks/zipball/e9c4709560296acbd4fe9e12b8d57a925aa7eae8", + "reference": "e9c4709560296acbd4fe9e12b8d57a925aa7eae8", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": ">=5.5.9" + }, + "type": "composer-plugin", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + }, + "class": "Symfony\\Thanks\\Thanks" + }, + "autoload": { + "psr-4": { + "Symfony\\Thanks\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + } + ], + "description": "Encourages sending ⭐ and 💵 to fellow PHP package maintainers (not limited to Symfony components)!", + "support": { + "issues": "https://github.com/symfony/thanks/issues", + "source": "https://github.com/symfony/thanks/tree/v1.2.10" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-14T17:47:37+00:00" + }, + { + "name": "symfony/yaml", + "version": "v4.4.29", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "3abcc4db06d4e776825eaa3ed8ad924d5bc7432a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/3abcc4db06d4e776825eaa3ed8ad924d5bc7432a", + "reference": "3abcc4db06d4e776825eaa3ed8ad924d5bc7432a", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v4.4.29" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-07-27T16:19:30+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.10.0" + }, + "time": "2021-03-09T10:59:23+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=7.0.0" + }, + "platform-dev": [], + "plugin-api-version": "2.0.0" +} diff --git a/config/app.php b/config/app.php new file mode 100755 index 0000000..e62ccd1 --- /dev/null +++ b/config/app.php @@ -0,0 +1,231 @@ + env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services your application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | + */ + + 'locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | + */ + + 'fallback_locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | + */ + + 'key' => env('APP_KEY'), + + 'cipher' => 'AES-256-CBC', + + /* + |-------------------------------------------------------------------------- + | Logging Configuration + |-------------------------------------------------------------------------- + | + | Here you may configure the log settings for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Settings: "single", "daily", "syslog", "errorlog" + | + */ + + 'log' => env('APP_LOG', 'daily'), + + 'log_level' => env('APP_LOG_LEVEL', 'debug'), + + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + + 'providers' => [ + + /* + * Laravel Framework Service Providers... + */ + Illuminate\Auth\AuthServiceProvider::class, + Illuminate\Broadcasting\BroadcastServiceProvider::class, + Illuminate\Bus\BusServiceProvider::class, + Illuminate\Cache\CacheServiceProvider::class, + Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, + Illuminate\Cookie\CookieServiceProvider::class, + Illuminate\Database\DatabaseServiceProvider::class, + Illuminate\Encryption\EncryptionServiceProvider::class, + Illuminate\Filesystem\FilesystemServiceProvider::class, + Illuminate\Foundation\Providers\FoundationServiceProvider::class, + Illuminate\Hashing\HashServiceProvider::class, + Illuminate\Mail\MailServiceProvider::class, + Illuminate\Notifications\NotificationServiceProvider::class, + Illuminate\Pagination\PaginationServiceProvider::class, + Illuminate\Pipeline\PipelineServiceProvider::class, + Illuminate\Queue\QueueServiceProvider::class, + Illuminate\Redis\RedisServiceProvider::class, + Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, + Illuminate\Session\SessionServiceProvider::class, + Illuminate\Translation\TranslationServiceProvider::class, + Illuminate\Validation\ValidationServiceProvider::class, + Illuminate\View\ViewServiceProvider::class, + + /* + * Package Service Providers... + */ + + /* + * Application Service Providers... + */ + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\RouteServiceProvider::class, + + ], + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => [ + + 'App' => Illuminate\Support\Facades\App::class, + 'Artisan' => Illuminate\Support\Facades\Artisan::class, + 'Auth' => Illuminate\Support\Facades\Auth::class, + 'Blade' => Illuminate\Support\Facades\Blade::class, + 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, + 'Bus' => Illuminate\Support\Facades\Bus::class, + 'Cache' => Illuminate\Support\Facades\Cache::class, + 'Config' => Illuminate\Support\Facades\Config::class, + 'Cookie' => Illuminate\Support\Facades\Cookie::class, + 'Crypt' => Illuminate\Support\Facades\Crypt::class, + 'DB' => Illuminate\Support\Facades\DB::class, + 'Eloquent' => Illuminate\Database\Eloquent\Model::class, + 'Event' => Illuminate\Support\Facades\Event::class, + 'File' => Illuminate\Support\Facades\File::class, + 'Gate' => Illuminate\Support\Facades\Gate::class, + 'Hash' => Illuminate\Support\Facades\Hash::class, + 'Lang' => Illuminate\Support\Facades\Lang::class, + 'Log' => Illuminate\Support\Facades\Log::class, + 'Mail' => Illuminate\Support\Facades\Mail::class, + 'Notification' => Illuminate\Support\Facades\Notification::class, + 'Password' => Illuminate\Support\Facades\Password::class, + 'Queue' => Illuminate\Support\Facades\Queue::class, + 'Redirect' => Illuminate\Support\Facades\Redirect::class, + 'Redis' => Illuminate\Support\Facades\Redis::class, + 'Request' => Illuminate\Support\Facades\Request::class, + 'Response' => Illuminate\Support\Facades\Response::class, + 'Route' => Illuminate\Support\Facades\Route::class, + 'Schema' => Illuminate\Support\Facades\Schema::class, + 'Session' => Illuminate\Support\Facades\Session::class, + 'Storage' => Illuminate\Support\Facades\Storage::class, + 'URL' => Illuminate\Support\Facades\URL::class, + 'Validator' => Illuminate\Support\Facades\Validator::class, + 'View' => Illuminate\Support\Facades\View::class, + + ], + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100755 index 0000000..7817501 --- /dev/null +++ b/config/auth.php @@ -0,0 +1,102 @@ + [ + 'guard' => 'web', + 'passwords' => 'users', + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session", "token" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + + 'api' => [ + 'driver' => 'token', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => App\User::class, + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | separate password reset settings based on the specific user types. + | + | The expire time is the number of minutes that the reset token should be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => 'password_resets', + 'expire' => 60, + ], + ], + +]; diff --git a/config/broadcasting.php b/config/broadcasting.php new file mode 100755 index 0000000..3ca45ea --- /dev/null +++ b/config/broadcasting.php @@ -0,0 +1,59 @@ + env('BROADCAST_DRIVER', 'null'), + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + 'cluster' => env('PUSHER_APP_CLUSTER'), + 'encrypted' => true, + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + 'null' => [ + 'driver' => 'null', + ], + + ], + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100755 index 0000000..906609d --- /dev/null +++ b/config/cache.php @@ -0,0 +1,94 @@ + env('CACHE_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + */ + + 'stores' => [ + + 'apc' => [ + 'driver' => 'apc', + ], + + 'array' => [ + 'driver' => 'array', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing a RAM based store such as APC or Memcached, there might + | be other applications utilizing the same cache. So, we'll specify a + | value to get prefixed to all our keys so we can avoid collisions. + | + */ + + 'prefix' => env( + 'CACHE_PREFIX', + str_slug(env('APP_NAME', 'ClickTracker'), '_').'_cache' + ), + +]; diff --git a/config/database.php b/config/database.php new file mode 100755 index 0000000..cab5d06 --- /dev/null +++ b/config/database.php @@ -0,0 +1,120 @@ + env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'strict' => true, + 'engine' => null, + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'schema' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run in the database. + | + */ + + 'migrations' => 'migrations', + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer set of commands than a typical key-value systems + | such as APC or Memcached. Laravel makes it easy to dig right in. + | + */ + + 'redis' => [ + + 'client' => 'predis', + + 'default' => [ + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'password' => env('REDIS_PASSWORD', null), + 'port' => env('REDIS_PORT', 6379), + 'database' => 0, + ], + + ], + +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100755 index 0000000..be7d888 --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,69 @@ + env('FILESYSTEM_DRIVER', 'local'), + + /* + |-------------------------------------------------------------------------- + | Default Cloud Filesystem Disk + |-------------------------------------------------------------------------- + | + | Many applications store files both locally and in the cloud. For this + | reason, you may specify a default "cloud" driver here. This driver + | will be bound as the Cloud disk implementation in the container. + | + */ + + 'cloud' => env('FILESYSTEM_CLOUD', 's3'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been setup for each driver as an example of the required options. + | + | Supported Drivers: "local", "ftp", "s3", "rackspace" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + ], + + 'public' => [ + 'driver' => 'local', + // 'root' => storage_path('app/public'), + 'root' => public_path('app_files'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + ], + + ], + +]; diff --git a/config/mail.php b/config/mail.php new file mode 100755 index 0000000..bb92224 --- /dev/null +++ b/config/mail.php @@ -0,0 +1,123 @@ + env('MAIL_DRIVER', 'smtp'), + + /* + |-------------------------------------------------------------------------- + | SMTP Host Address + |-------------------------------------------------------------------------- + | + | Here you may provide the host address of the SMTP server used by your + | applications. A default option is provided that is compatible with + | the Mailgun mail service which will provide reliable deliveries. + | + */ + + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + + /* + |-------------------------------------------------------------------------- + | SMTP Host Port + |-------------------------------------------------------------------------- + | + | This is the SMTP port used by your application to deliver e-mails to + | users of the application. Like the host we have set this value to + | stay compatible with the Mailgun e-mail application by default. + | + */ + + 'port' => env('MAIL_PORT', 587), + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails sent by your application to be sent from + | the same address. Here, you may specify a name and address that is + | used globally for all e-mails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + + /* + |-------------------------------------------------------------------------- + | E-Mail Encryption Protocol + |-------------------------------------------------------------------------- + | + | Here you may specify the encryption protocol that should be used when + | the application send e-mail messages. A sensible default using the + | transport layer security protocol should provide great security. + | + */ + + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + + /* + |-------------------------------------------------------------------------- + | SMTP Server Username + |-------------------------------------------------------------------------- + | + | If your SMTP server requires a username for authentication, you should + | set it here. This will get used to authenticate with your server on + | connection. You may also set the "password" value below this one. + | + */ + + 'username' => env('MAIL_USERNAME'), + + 'password' => env('MAIL_PASSWORD'), + + /* + |-------------------------------------------------------------------------- + | Sendmail System Path + |-------------------------------------------------------------------------- + | + | When using the "sendmail" driver to send e-mails, we will need to know + | the path to where Sendmail lives on this server. A default path has + | been provided here, which will work well on most of your systems. + | + */ + + 'sendmail' => '/usr/sbin/sendmail -bs', + + /* + |-------------------------------------------------------------------------- + | Markdown Mail Settings + |-------------------------------------------------------------------------- + | + | If you are using Markdown based email rendering, you may configure your + | theme and component paths here, allowing you to customize the design + | of the emails. Or, you may simply stick with the Laravel defaults! + | + */ + + 'markdown' => [ + 'theme' => 'default', + + 'paths' => [ + resource_path('views/vendor/mail'), + ], + ], + +]; diff --git a/config/queue.php b/config/queue.php new file mode 100755 index 0000000..8c06fcc --- /dev/null +++ b/config/queue.php @@ -0,0 +1,85 @@ + env('QUEUE_DRIVER', 'sync'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection information for each server that + | is used by your application. A default configuration has been added + | for each back-end shipped with Laravel. You are free to add more. + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'retry_after' => 90, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('SQS_KEY', 'your-public-key'), + 'secret' => env('SQS_SECRET', 'your-secret-key'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'your-queue-name'), + 'region' => env('SQS_REGION', 'us-east-1'), + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => 'default', + 'retry_after' => 90, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | + */ + + 'failed' => [ + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/services.php b/config/services.php new file mode 100755 index 0000000..4460f0e --- /dev/null +++ b/config/services.php @@ -0,0 +1,38 @@ + [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + ], + + 'ses' => [ + 'key' => env('SES_KEY'), + 'secret' => env('SES_SECRET'), + 'region' => 'us-east-1', + ], + + 'sparkpost' => [ + 'secret' => env('SPARKPOST_SECRET'), + ], + + 'stripe' => [ + 'model' => App\User::class, + 'key' => env('STRIPE_KEY'), + 'secret' => env('STRIPE_SECRET'), + ], + +]; diff --git a/config/session.php b/config/session.php new file mode 100755 index 0000000..509fa72 --- /dev/null +++ b/config/session.php @@ -0,0 +1,197 @@ + env('SESSION_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to immediately expire on the browser closing, set that option. + | + */ + + 'lifetime' => env('SESSION_LIFETIME', 120), + + 'expire_on_close' => false, + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the Session like normal. + | + */ + + 'encrypt' => false, + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => null, + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | When using the "apc" or "memcached" session drivers, you may specify a + | cache store that should be used for these sessions. This value must + | correspond with one of the application's configured cache stores. + | + */ + + 'store' => null, + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + str_slug(env('APP_NAME', 'laravel'), '_').'_session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application but you are free to change this when necessary. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + + 'domain' => env('SESSION_DOMAIN', null), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you if it can not be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE', false), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. You are free to modify this option if needed. + | + */ + + 'http_only' => true, + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | do not enable this as other CSRF protection services are in place. + | + | Supported: "lax", "strict" + | + */ + + 'same_site' => 'strict', + +]; diff --git a/config/view.php b/config/view.php new file mode 100755 index 0000000..2acfd9c --- /dev/null +++ b/config/view.php @@ -0,0 +1,33 @@ + [ + resource_path('views'), + ], + + /* + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | + */ + + 'compiled' => realpath(storage_path('framework/views')), + +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100755 index 0000000..9b1dffd --- /dev/null +++ b/database/.gitignore @@ -0,0 +1 @@ +*.sqlite diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100755 index 0000000..facf233 --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,23 @@ +define(App\User::class, function (Faker $faker) { + return [ + 'name' => $faker->name, + 'email' => $faker->unique()->safeEmail, + 'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret + 'remember_token' => str_random(10), + ]; +}); diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100755 index 0000000..689cbee --- /dev/null +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('name'); + $table->string('email')->unique(); + $table->string('password'); + $table->rememberToken(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('users'); + } +} diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php new file mode 100755 index 0000000..0d5cb84 --- /dev/null +++ b/database/migrations/2014_10_12_100000_create_password_resets_table.php @@ -0,0 +1,32 @@ +string('email')->index(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('password_resets'); + } +} diff --git a/database/migrations/2021_04_13_104850_create_click_servers_table.php b/database/migrations/2021_04_13_104850_create_click_servers_table.php new file mode 100755 index 0000000..0a24325 --- /dev/null +++ b/database/migrations/2021_04_13_104850_create_click_servers_table.php @@ -0,0 +1,36 @@ +increments('id'); + $table->string('friendly_name'); + $table->ipAddress('public_ip_address'); + $table->ipAddress('private_ip_address'); + $table->string('main_use'); + $table->string('remarks'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('click_servers'); + } +} diff --git a/database/migrations/2021_04_13_111024_create_server_crendentials_table.php b/database/migrations/2021_04_13_111024_create_server_crendentials_table.php new file mode 100755 index 0000000..2fe4e57 --- /dev/null +++ b/database/migrations/2021_04_13_111024_create_server_crendentials_table.php @@ -0,0 +1,36 @@ +increments('id'); + $table->integer('server_id'); + $table->string('type')->comment('Operating System or Database'); + $table->string('username'); + $table->string('password'); + $table->string('remarks'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('server_crendentials'); + } +} diff --git a/database/migrations/2021_04_13_111110_create_direct_connections_table.php b/database/migrations/2021_04_13_111110_create_direct_connections_table.php new file mode 100755 index 0000000..2214eac --- /dev/null +++ b/database/migrations/2021_04_13_111110_create_direct_connections_table.php @@ -0,0 +1,39 @@ +increments('id'); + $table->integer('server_id'); + $table->string('direct_partner'); + $table->string('connection_type')->comment('VPN or Internet'); + $table->ipAddress('main_ip_address'); + $table->string('port'); + $table->ipAddress('vpn_peer_ip'); + $table->string('domain_name'); + $table->text('connection_document'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('direct_connections'); + } +} diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php new file mode 100755 index 0000000..e119db6 --- /dev/null +++ b/database/seeds/DatabaseSeeder.php @@ -0,0 +1,16 @@ +call(UsersTableSeeder::class); + } +} diff --git a/effie-comments.md b/effie-comments.md new file mode 100755 index 0000000..1146d09 --- /dev/null +++ b/effie-comments.md @@ -0,0 +1,66 @@ +# Sam's Comments +Hi Sam, + +Following your request during today training, this email serves as a reminder for you to +engage with Kwesi to come up with a tracker. + +This tracker must have specifications that we get from different operators +i.e., for both USSD and SMS. + +You are to engage with Hilary as well, to add a product segment on the website. + +Kind Regards, + + +## +Hi Kwesi, + +So I reviewed the tracker and below are some of my preliminary notes: + +- A. when i logged in it says Welcome Effie tedela, the name is Effie Tadala 😊. + +- B. the date after logging in is showing Wednesday 28th July 2021. + +B. CLIENTS (the client section will require a bit more modification to accommodate the categorisation and the email alerts. I will work on it) + +I am only seeing A2P clients on the list. I think that is not the full list of the A2P interconnections that we have, please engage Charity to share full list. +We need subgroups of clients; Charity can assist with the lists as well. +USSD and SMS Short Code clients- specify whether app development included or just aggregation. The short code itself should also be included. + +2.1.1. toll free or revenue sharing services to be specified. +2.1.2. Specify whether USSD only, SMS only or both USSD and SMS + +airtime clients. +Bulk SMS clients. +Voice clients. + +an email alert to be sent out when the portal has been edited for example when a new client has been added. +I would like to be able to add a client and a notification to be sent to the account managers so that they can assign a manager to that client. Has this been done? +just like we are assigning account managers, we must have at least one point of contact from our clients end as well. +Some of the clients do not have their contacts listed on the tracker. + +C. CLIENTS +can we have a way to filter the clients to be listed in alphabetical order. +I am only seeing A2P clients on the list. we need sub groups: + + +## Use notes column to handle the extra details +USSD Short Code clients- specify whether app development included or just aggregation. +SMS SC clients- specify whether app development included or just aggregation. +toll free or revenue sharing services to be specified. +airtime clients +Bulk SMS clients +A2P clients- grouped by country as well. + +an email alert to be sent out when the portal has been edited for example when a new client has been added. I would like to be able to add a client and a notification to be sent to the account managers so that they can assign a manager to that client. +just like we are assigning account managers, we must have at least one point of contact from our clients end as well. + +D. USSD clients payments + +received an error when i clicked on this link. +do we have a SC monthly payment tracker for our short code clients? + +E. Meeting reports: +the marketing team need to have a tab as well so that they can be updating their meeting reports with clients too. + + diff --git a/index.php b/index.php new file mode 100755 index 0000000..b5d83a7 --- /dev/null +++ b/index.php @@ -0,0 +1,60 @@ + + */ + +define('LARAVEL_START', microtime(true)); + +/* +|-------------------------------------------------------------------------- +| Register The Auto Loader +|-------------------------------------------------------------------------- +| +| Composer provides a convenient, automatically generated class loader for +| our application. We just need to utilize it! We'll simply require it +| into the script here so that we don't have to worry about manual +| loading any of our classes later on. It feels great to relax. +| +*/ + +require __DIR__.'/vendor/autoload.php'; + +/* +|-------------------------------------------------------------------------- +| Turn On The Lights +|-------------------------------------------------------------------------- +| +| We need to illuminate PHP development, so let us turn on the lights. +| This bootstraps the framework and gets it ready for use, then it +| will load up this application so that we can run it and send +| the responses back to the browser and delight our users. +| +*/ + +$app = require_once __DIR__.'/bootstrap/app.php'; + +/* +|-------------------------------------------------------------------------- +| Run The Application +|-------------------------------------------------------------------------- +| +| Once we have the application, we can handle the incoming request +| through the kernel, and send the associated response back to +| the client's browser allowing them to enjoy the creative +| and wonderful application we have prepared for them. +| +*/ + +$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); + +$response = $kernel->handle( + $request = Illuminate\Http\Request::capture() +); + +$response->send(); + +$kernel->terminate($request, $response); diff --git a/package.json b/package.json new file mode 100755 index 0000000..64bd2a8 --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "private": true, + "scripts": { + "dev": "npm run development", + "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", + "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", + "watch-poll": "npm run watch -- --watch-poll", + "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", + "prod": "npm run production", + "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" + }, + "devDependencies": { + "axios": "^0.17", + "bootstrap-sass": "^3.3.7", + "cross-env": "^5.1", + "jquery": "^3.2", + "laravel-mix": "^1.0", + "lodash": "^4.17.4", + "vue": "^2.5.7" + }, + "config": { + "platform-check": false + } + +} diff --git a/phpunit.xml b/phpunit.xml new file mode 100755 index 0000000..bb9c4a7 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,31 @@ + + + + + ./tests/Feature + + + + ./tests/Unit + + + + + ./app + + + + + + + + + diff --git a/public/.htaccess b/public/.htaccess new file mode 100755 index 0000000..b75525b --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,21 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Handle Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/public/assets/build/css/custom.css b/public/assets/build/css/custom.css new file mode 100755 index 0000000..a05351a --- /dev/null +++ b/public/assets/build/css/custom.css @@ -0,0 +1,4255 @@ + +html , body{ + + height:100%; + +} + +.full-width { + + width:100%; + + } + +.full-height{ + height:100%; + } + +.daterangepicker .ranges li { + color: #73879C +} +.daterangepicker .ranges li.active, +.daterangepicker .ranges li:hover { + background: #536A7F; + border: 1px solid #536A7F; + color: #fff +} +.daterangepicker .input-mini { + background-color: #eee; + border: 1px solid #ccc; + box-shadow: none !important +} +.daterangepicker .input-mini.active { + border: 1px solid #ccc +} +.daterangepicker select.monthselect, +.daterangepicker select.yearselect, +.daterangepicker select.hourselect, +.daterangepicker select.minuteselect, +.daterangepicker select.secondselect, +.daterangepicker select.ampmselect { + font-size: 12px; + padding: 1px; + height: auto; + margin: 0; + cursor: default; + height: 30px; + border: 1px solid #ADB2B5; + line-height: 30px; + border-radius: 0px !important +} +.daterangepicker select.monthselect { + margin-right: 2% +} +.daterangepicker td.in-range { + background: #E4E7EA; + color: #73879C +} +.daterangepicker td.active, +.daterangepicker td.active:hover { + background-color: #536A7F; + color: #fff +} +.daterangepicker th.available:hover { + background: #eee; + color: #34495E +} +.daterangepicker:before, +.daterangepicker:after { + content: none +} +.daterangepicker .calendar.single { + margin: 0 0 4px 0 +} +.daterangepicker .calendar.single .calendar-table { + width: 224px; + padding: 0 0 4px 0 !important +} +.daterangepicker .calendar.single .calendar-table thead tr:first-child th { + padding: 8px 5px +} +.daterangepicker .calendar.single .calendar-table thead th { + border-radius: 0 +} +.daterangepicker.picker_1 { + color: #fff; + background: #34495E +} +.daterangepicker.picker_1 .calendar-table { + background: #34495E +} +.daterangepicker.picker_1 .calendar-table thead tr { + background: #213345 +} +.daterangepicker.picker_1 .calendar-table thead tr:first-child { + background: #1ABB9C +} +.daterangepicker.picker_1 .calendar-table td.off { + background: #34495E; + color: #999 +} +.daterangepicker.picker_1 .calendar-table td.available:hover { + color: #34495E +} +.daterangepicker.picker_2 .calendar-table thead tr { + color: #1ABB9C +} +.daterangepicker.picker_2 .calendar-table thead tr:first-child { + color: #73879C +} +.daterangepicker.picker_3 .calendar-table thead tr:first-child { + color: #fff; + background: #1ABB9C +} +.daterangepicker.picker_4 .calendar-table thead tr:first-child { + color: #fff; + background: #34495E +} +.daterangepicker.picker_4 .calendar-table td, +.daterangepicker.picker_4 .calendar-table td.off { + background: #ECF0F1; + border: 1px solid #fff; + border-radius: 0 +} +.daterangepicker.picker_4 .calendar-table td.active { + background: #34495E +} +.calendar-exibit .show-calendar { + float: none; + display: block; + position: relative; + background-color: #fff; + border: 1px solid #ccc; + margin-bottom: 20px; + border: 1px solid rgba(0, 0, 0, 0.15); + overflow: hidden +} +.calendar-exibit .show-calendar .calendar { + margin: 0 0 4px 0 +} +.calendar-exibit .show-calendar.picker_1 { + background: #34495E +} +.calendar-exibit .calendar-table { + padding: 0 0 4px 0 +} +.left_col { + background: #2A3F54 +} +.nav-sm .container.body .col-md-3.left_col { + min-height: 100%; + width: 70px; + padding: 0; + z-index: 9999; + position: absolute +} +.nav-sm .container.body .col-md-3.left_col.menu_fixed { + position: fixed; + height: 100% +} +.nav-sm .container.body .col-md-3.left_col .mCSB_container, +.nav-sm .container.body .col-md-3.left_col .mCustomScrollBox { + overflow: visible +} +.nav-sm .hidden-small { + visibility: hidden +} +.nav-sm .container.body .right_col { + padding: 10px 20px; + margin-left: 70px; + z-index: 2 +} +.nav-sm .navbar.nav_title { + width: 70px +} +.nav-sm .navbar.nav_title a span { + display: none +} +.nav-sm .navbar.nav_title a i { + font-size: 27px; + margin: 13px 0 0 3px +} +.site_title i { + border: 1px solid #EAEAEA; + padding: 5px 6px; + border-radius: 50% +} +.site_title img { + max-height: 66px; + max-width: 180px; +} +.nav-sm .main_container .top_nav { + display: block; + margin-left: 70px; + z-index: 2 +} +.nav-sm .nav.side-menu li a { + text-align: center !important; + font-weight: 400; + font-size: 10px; + padding: 10px 5px +} +.nav-sm .nav.child_menu li.active, +.nav-sm .nav.side-menu li.active-sm { + border-right: 5px solid #1ABB9C +} +.nav-sm ul.nav.child_menu ul, +.nav-sm .nav.side-menu li.active-sm ul ul { + position: static; + width: 200px; + background: none +} +.nav-sm>.nav.side-menu>li.active-sm>a { + color: #1ABB9C !important +} +.nav-sm .nav.side-menu li a i.toggle-up { + display: none !important +} +.nav-sm .nav.side-menu li a i { + font-size: 25px !important; + text-align: center; + width: 100% !important; + margin-bottom: 5px +} +.nav-sm ul.nav.child_menu { + left: 100%; + position: absolute; + top: 0; + width: 210px; + z-index: 4000; + background: #3E5367; + display: none +} +.nav-sm ul.nav.child_menu li { + padding: 0 10px +} +.nav-sm ul.nav.child_menu li a { + text-align: left !important +} +.nav-sm .profile { + display: none +} +.menu_section { + margin-bottom: 35px +} +.menu_section h3 { + padding-left: 15px; + color: #fff; + text-transform: uppercase; + letter-spacing: .5px; + font-weight: bold; + font-size: 11px; + margin-bottom: 0; + margin-top: 0; + text-shadow: 1px 1px #000 +} +.menu_section>ul { + margin-top: 10px +} +.profile_pic { + width: 35%; + float: left +} +.img-circle.profile_img { + width: 70%; + background: #fff; + margin-left: 15%; + z-index: 1000; + position: inherit; + margin-top: 10px; + border: 1px solid rgba(52, 73, 94, 0.44); + padding: 4px +} +.profile_info { + padding: 10px; + width: 65%; + float: left +} +.profile_info span { + font-size: 13px; + line-height: 30px; + color: #BAB8B8 +} +.profile_info h2 { + font-size: 14px; + color: #ECF0F1; + margin: 0; + font-weight: 300 +} +.profile.img_2 { + text-align: center +} +.profile.img_2 .profile_pic { + width: 100% +} +.profile.img_2 .profile_pic .img-circle.profile_img { + width: 50%; + margin: 10px 0 0 +} +.profile.img_2 .profile_info { + padding: 15px 10px 0; + width: 100%; + margin-bottom: 10px; + float: left +} +.main_menu span.fa { + float: right; + text-align: center; + margin-top: 5px; + font-size: 10px; + min-width: inherit; + color: #C4CFDA +} +.active a span.fa { + text-align: right !important; + margin-right: 4px +} +.nav-sm .menu_section { + margin: 0 +} +.nav-sm span.fa, +.nav-sm .menu_section h3 { + display: none +} +.nav-sm li li span.fa { + display: inline-block +} +.nav_menu { + float: left; + background: #EDEDED; + border-bottom: 1px solid #D9DEE4; + margin-bottom: 10px; + width: 100%; + position: relative +} +@media (min-width: 480px) { + .nav_menu { + position: static + } +} +.nav-md .container.body .col-md-3.left_col { + min-height: 100%; + width: 230px; + padding: 0; + position: absolute; + display: -ms-flexbox; + display: flex; + z-index: 1 +} +.nav-md .container.body .col-md-3.left_col.menu_fixed { + height: 100%; + position: fixed +} +body .container.body .right_col { + background: #F7F7F7 +} +.nav-md .container.body .right_col { + padding: 10px 20px 0; + margin-left: 230px +} +.nav_title { + width: 230px; + float: left; + background: #2A3F54; + border-radius: 0; + height: 57px +} +@media (max-width: 991px) { + .nav-md .container.body .right_col, + .nav-md .container.body .top_nav { + width: 100%; + margin: 0 + } + .nav-md .container.body .col-md-3.left_col { + display: none + } + .nav-md .container.body .right_col { + width: 100%; + padding-right: 0 + } + .right_col { + padding: 10px !important + } +} +@media (max-width: 1200px) { + .x_title h2 { + width: 62%; + font-size: 17px + } + .tile, + .graph { + zoom: 85%; + height: inherit + } +} +@media (max-width: 1270px) and (min-width: 192px) { + .x_title h2 small { + display: none + } +} +.left_col .mCSB_scrollTools { + width: 6px +} +.left_col .mCSB_dragger { + max-height: 400px !important +} +.blue { + color: #3498DB +} +.purple { + color: #9B59B6 +} +.green { + color: #1ABB9C +} +.aero { + color: #9CC2CB +} +.red { + color: #E74C3C +} +.dark { + color: #34495E +} +.border-blue { + border-color: #3498DB !important +} +.border-purple { + border-color: #9B59B6 !important +} +.border-green { + border-color: #1ABB9C !important +} +.border-aero { + border-color: #9CC2CB !important +} +.border-red { + border-color: #E74C3C !important +} +.border-dark { + border-color: #34495E !important +} +.bg-white { + background: #fff !important; + border: 1px solid #fff !important; + color: #73879C +} +.bg-green { + background: #1ABB9C !important; + border: 1px solid #1ABB9C !important; + color: #fff +} +.bg-red { + background: #E74C3C !important; + border: 1px solid #E74C3C !important; + color: #fff +} +.bg-blue { + background: #3498DB !important; + border: 1px solid #3498DB !important; + color: #fff +} +.bg-orange { + background: #F39C12 !important; + border: 1px solid #F39C12 !important; + color: #fff +} +.bg-purple { + background: #9B59B6 !important; + border: 1px solid #9B59B6 !important; + color: #fff +} +.bg-blue-sky { + background: #50C1CF !important; + border: 1px solid #50C1CF !important; + color: #fff +} +.container { + width: 100%; + padding: 0 +} +.navbar-nav>li>a, +.navbar-brand, +.navbar-nav>li>a { + color: #fff !important +} +.top_nav .nav>li>a:focus, +.top_nav .nav>li>a:hover, +.top_nav .nav .open>a, +.top_nav .nav .open>a:focus, +.top_nav .nav .open>a:hover { + background: #D9DEE4 +} +body { + color: #73879C; + background: #2A3F54; + font-family: "Helvetica Neue", Roboto, Arial, "Droid Sans", sans-serif; + font-size: 13px; + font-weight: 400; + line-height: 1.471 +} +.main_container .top_nav { + display: block; + margin-left: 230px +} +.no-padding { + padding: 0 !important +} +.page-title { + width: 100%; + height: 65px; + padding: 10px 0 +} +.page-title .title_left { + width: 45%; + float: left; + display: block +} +.page-title .title_left h3 { + margin: 9px 0 +} +.page-title .title_right { + width: 55%; + float: left; + display: block +} +.page-title .title_right .pull-right { + margin: 10px 0 +} +.fixed_height_320 { + height: 320px +} +.fixed_height_390 { + height: 390px +} +.fixed_height_200 { + height: 200px +} +.overflow_hidden { + overflow: hidden +} +.progress-bar-dark { + background-color: #34495E !important +} +.progress-bar-gray { + background-color: #BDC3C7 !important +} +table.no-margin .progress { + margin-bottom: 0 +} +.main_content { + padding: 10px 20px +} +.col-md-55 { + width: 50%; + margin-bottom: 10px +} +@media (min-width: 768px) { + .col-md-55 { + width: 20% + } +} +@media (min-width: 992px) { + .col-md-55 { + width: 20% + } +} +@media (min-width: 1200px) { + .col-md-55 { + width: 20% + } +} +@media (min-width: 192px) and (max-width: 1270px) { + table.tile_info span.right { + margin-right: 7px; + float: left + } +} +.center-margin { + margin: 0 auto; + float: none !important +} +.col-md-55, +.col-xs-1, +.col-sm-1, +.col-md-1, +.col-lg-1, +.col-xs-2, +.col-sm-2, +.col-md-2, +.col-lg-2, +.col-xs-3, +.col-sm-3, +.col-md-3, +.col-lg-3, +.col-xs-4, +.col-sm-4, +.col-md-4, +.col-lg-4, +.col-xs-5, +.col-sm-5, +.col-md-5, +.col-lg-5, +.col-xs-6, +.col-sm-6, +.col-md-6, +.col-lg-6, +.col-xs-7, +.col-sm-7, +.col-md-7, +.col-lg-7, +.col-xs-8, +.col-sm-8, +.col-md-8, +.col-lg-8, +.col-xs-9, +.col-sm-9, +.col-md-9, +.col-lg-9, +.col-xs-10, +.col-sm-10, +.col-md-10, +.col-lg-10, +.col-xs-11, +.col-sm-11, +.col-md-11, +.col-lg-11, +.col-xs-12, +.col-sm-12, +.col-md-12, +.col-lg-12 { + position: relative; + min-height: 1px; + float: left; + padding-right: 10px; + padding-left: 10px +} +.row { + margin-right: -10px; + margin-left: -10px +} +.grid_slider .col-md-6 { + padding: 0 40px +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 10px; + margin-bottom: 10px +} +a { + color: #5A738E; + text-decoration: none +} +a, +a:visited, +a:focus, +a:active, +:visited, +:focus, +:active, +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: 0 +} +a:hover, +a:focus { + text-decoration: none +} +.navbar { + margin-bottom: 0 +} +.navbar-header { + background: #34495E +} +.navbar-right { + margin-right: 0 +} +.top_nav .navbar-right { + margin: 0; + width: 70%; + float: right +} +.top_nav .navbar-right li { + display: inline-block; + float: right; + position: static +} +@media (min-width: 480px) { + .top_nav .navbar-right li { + position: relative + } +} +.top_nav .dropdown-menu li { + width: 100% +} +.top_nav .dropdown-menu li a { + width: 100%; + padding: 12px 20px +} +.top_nav li a i { + font-size: 15px +} +.navbar-static-top { + position: fixed; + top: 0; + width: 100% +} +.sidebar-header { + border-bottom: 0; + margin-top: 46px +} +.sidebar-header:first-of-type { + margin-top: 0 +} +.nav.side-menu>li { + position: relative; + display: block; + cursor: pointer +} +.nav.side-menu>li>a { + margin-bottom: 6px +} +.nav.side-menu>li>a:hover { + color: #F2F5F7 !important +} +.nav.side-menu>li>a:hover, +.nav>li>a:focus { + text-decoration: none; + background: transparent +} +.nav.child_menu { + display: none +} +.nav.child_menu li:hover, +.nav.child_menu li.active { + background-color: rgba(255, 255, 255, 0.06) +} +.nav.child_menu li { + padding-left: 36px +} +.nav-md ul.nav.child_menu li:before { + background: #425668; + bottom: auto; + content: ""; + height: 8px; + left: 23px; + margin-top: 15px; + position: absolute; + right: auto; + width: 8px; + z-index: 1; + border-radius: 50% +} +.nav-md ul.nav.child_menu li:after { + border-left: 1px solid #425668; + bottom: 0; + content: ""; + left: 27px; + position: absolute; + top: 0 +} +.nav-md ul.nav.child_menu li:last-child::after { + bottom: 50%; +} +.nav.side-menu>li>a, +.nav.child_menu>li>a { + color: #E7E7E7; + font-weight: 500 +} +.nav.child_menu li li:hover, +.nav.child_menu li li.active { + background: none +} +.nav.child_menu li li a:hover, +.nav.child_menu li li a.active { + color: #fff +} +.nav>li>a { + position: relative; + display: block; + padding: 13px 15px 12px +} +.nav.side-menu>li.current-page, +.nav.side-menu>li.active { + border-right: 5px solid #1ABB9C +} +.nav li.current-page { + background: rgba(255, 255, 255, 0.05) +} +.nav li li li.current-page { + background: none +} +.nav li li.current-page a { + color: #fff +} +.nav.side-menu>li.active>a { + text-shadow: rgba(0, 0, 0, 0.25) 0 -1px 0; + background: linear-gradient(#334556, #2C4257), #2A3F54; + box-shadow: rgba(0, 0, 0, 0.25) 0 1px 0, inset rgba(255, 255, 255, 0.16) 0 1px 0 +} +.navbar-brand, +.navbar-nav>li>a { + font-weight: 500; + color: #ECF0F1 !important; + margin-left: 0 !important; + line-height: 32px +} +.site_title { + text-overflow: ellipsis; + overflow: hidden; + font-weight: 400; + font-size: 22px; + width: 100%; + color: #ECF0F1 !important; + margin-left: 0 !important; + line-height: 59px; + display: block; + height: 55px; + margin: 0; + padding-left: 10px +} +.site_title:hover, +.site_title:focus { + text-decoration: none +} +.nav.navbar-nav>li>a { + color: #515356 !important +} +.nav.top_menu>li>a { + position: relative; + display: block; + padding: 10px 15px; + color: #34495E !important +} +.nav>li>a:hover, +.nav>li>a:focus { + background-color: transparent +} +.top_search { + padding: 0 +} +.top_search .form-control { + border-right: 0; + box-shadow: inset 0 1px 0px rgba(0, 0, 0, 0.075); + border-radius: 25px 0px 0px 25px; + padding-left: 20px; + border: 1px solid rgba(221, 226, 232, 0.49) +} +.top_search .form-control:focus { + border: 1px solid rgba(221, 226, 232, 0.49); + border-right: 0 +} +.top_search .input-group-btn button { + border-radius: 0px 25px 25px 0px; + border: 1px solid rgba(221, 226, 232, 0.49); + border-left: 0; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + color: #93A2B2; + margin-bottom: 0 !important +} +.toggle { + float: left; + margin: 0; + padding-top: 16px; + width: 70px +} +.toggle a { + padding: 15px 15px 0; + margin: 0; + cursor: pointer +} +.toggle a i { + font-size: 26px +} +.nav.child_menu>li>a { + color: rgba(255, 255, 255, 0.75); + font-size: 12px; + padding: 9px +} +.panel_toolbox { + float: right; + min-width: 70px +} +.panel_toolbox>li { + float: left; + cursor: pointer +} +.panel_toolbox>li>a { + padding: 5px; + color: #C5C7CB; + font-size: 14px +} +.panel_toolbox>li>a:hover { + background: #F5F7FA +} +.line_30 { + line-height: 30px +} +.main_menu_side { + padding: 0 +} +.bs-docs-sidebar .nav>li>a { + display: block; + padding: 4px 6px +} +footer { + background: #fff; + padding: 15px 20px; + display: block +} +.nav-sm footer { + margin-left: 70px +} +.footer_fixed footer { + position: fixed; + left: 0px; + bottom: 0px; + width: 100% +} +@media (min-width: 768px) { + .footer_fixed footer { + margin-left: 0 + } +} +@media (min-width: 768px) { + .footer_fixed .nav-sm footer { + margin-left: 0 + } +} +.tile-stats.sparkline { + padding: 10px; + text-align: center +} +.jqstooltip { + background: #34495E !important; + width: 30px !important; + height: 22px !important; + text-decoration: none +} +.tooltip { + display: block !important +} +.tiles { + border-top: 1px solid #ccc; + margin-top: 15px; + padding-top: 5px; + margin-bottom: 0 +} +.tile { + overflow: hidden +} +.top_tiles { + margin-bottom: 0 +} +.top_tiles .tile h2 { + font-size: 30px; + line-height: 30px; + margin: 3px 0 7px; + font-weight: bold +} +article.media { + width: 100% +} +*, +*:before, +*:after { + box-sizing: border-box +} +#integration-list { + width: 100%; + margin: 0 auto; + display: table +} +#integration-list ul { + padding: 0; + margin: 20px 0; + color: #555 +} +#integration-list ul>li { + list-style: none; + border-top: 1px solid #ddd; + display: block; + padding: 15px; + overflow: hidden +} +#integration-list ul:last-child { + border-bottom: 1px solid #ddd +} +#integration-list ul>li:hover { + background: #efefef +} +.expand { + display: block; + text-decoration: none; + color: #555; + cursor: pointer +} +.expand h2 { + width: 85%; + float: left +} +h2 { + font-size: 30px; + font-weight: 400 +} +#left, +#right { + display: table +} +#sup { + display: table-cell; + vertical-align: middle; + width: 80% +} +.detail a { + text-decoration: none; + color: #C0392B; + border: 1px solid #C0392B; + padding: 6px 10px 5px; + font-size: 13px; + margin-right: 7px +} +.detail { + margin: 10px 0 10px 0px; + display: none; + line-height: 22px; + height: 150px +} +.detail span { + margin: 0 +} +.right-arrow { + width: 10px; + float: right; + font-weight: bold; + font-size: 20px +} +.accordion .panel { + margin-bottom: 5px; + border-radius: 0; + border-bottom: 1px solid #efefef +} +.accordion .panel-heading { + background: #F2F5F7; + padding: 13px; + width: 100%; + display: block +} +.accordion .panel:hover { + background: #F2F5F7 +} +.x_panel { + position: relative; + width: 100%; + margin-bottom: 10px; + padding: 10px 17px; + display: inline-block; + background: #fff; + border: 1px solid #E6E9ED; + -webkit-column-break-inside: avoid; + -moz-column-break-inside: avoid; + column-break-inside: avoid; + opacity: 1; + transition: all .2s ease +} +.x_title { + border-bottom: 2px solid #E6E9ED; + padding: 1px 5px 6px; + margin-bottom: 10px +} +.x_title .filter { + width: 40%; + float: right +} +.x_title h2 { + margin: 5px 0 6px; + float: left; + display: block; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap +} +.x_title h2 small { + margin-left: 10px +} +.x_title span { + color: #BDBDBD +} +.x_content { + padding: 0 5px 6px; + position: relative; + width: 100%; + float: left; + clear: both; + margin-top: 5px +} +.x_content h4 { + font-size: 16px; + font-weight: 500 +} +legend { + padding-bottom: 7px +} +.demo-placeholder { + height: 280px +} +.profile_details:nth-child(3n) { + clear: both +} +.profile_details .profile_view { + display: inline-block; + padding: 10px 0 0; + background: #fff +} +.profile_details .profile_view .divider { + border-top: 1px solid #e5e5e5; + padding-top: 5px; + margin-top: 5px +} +.profile_details .profile_view .ratings { + margin-bottom: 0 +} +.profile_details .profile_view .bottom { + background: #F2F5F7; + padding: 9px 0; + border-top: 1px solid #E6E9ED +} +.profile_details .profile_view .left { + margin-top: 20px +} +.profile_details .profile_view .left p { + margin-bottom: 3px +} +.profile_details .profile_view .right { + margin-top: 0px; + padding: 10px +} +.profile_details .profile_view .img-circle { + border: 1px solid #E6E9ED; + padding: 2px +} +.profile_details .profile_view h2 { + margin: 5px 0 +} +.profile_details .profile_view .ratings { + text-align: left; + font-size: 16px +} +.profile_details .profile_view .brief { + margin: 0; + font-weight: 300 +} +.profile_details .profile_left { + background: white +} +.pagination.pagination-split li { + display: inline-block; + margin-right: 3px +} +.pagination.pagination-split li a { + border-radius: 4px; + color: #768399; + -moz-border-radius: 4px; + -webkit-border-radius: 4px +} +table.tile h3, +table.tile h4, +table.tile span { + font-weight: bold; + vertical-align: middle !important +} +table.tile th, +table.tile td { + text-align: center +} +table.tile th { + border-bottom: 1px solid #E6ECEE +} +table.tile td { + padding: 5px 0 +} +table.tile td ul { + text-align: left; + padding-left: 0 +} +table.tile td ul li { + list-style: none; + width: 100% +} +table.tile td ul li a { + width: 100% +} +table.tile td ul li a big { + right: 0; + float: right; + margin-right: 13px +} +table.tile_info { + width: 100% +} +table.tile_info td { + text-align: left; + padding: 1px; + font-size: 15px +} +table.tile_info td p { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin: 0; + line-height: 28px +} +table.tile_info td i { + margin-right: 8px; + font-size: 17px; + float: left; + width: 18px; + line-height: 28px +} +table.tile_info td:first-child { + width: 83% +} +td span { + line-height: inherit +} +.sidebar-widget { + overflow: hidden +} +.error-number { + font-size: 90px; + line-height: 90px; + margin: 20px 0 +} +.col-middle { + margin-top: 5% +} +.mid_center { + width: 370px; + margin: 0 auto; + text-align: center; + padding: 10px 20px +} +h3.degrees { + font-size: 22px; + font-weight: 400; + text-align: center +} +.degrees:after { + content: "o"; + position: relative; + top: -12px; + font-size: 13px; + font-weight: 300 +} +.daily-weather .day { + font-size: 14px; + border-top: 2px solid rgba(115, 135, 156, 0.36); + text-align: center; + border-bottom: 2px solid rgba(115, 135, 156, 0.36); + padding: 5px 0 +} +.weather-days .col-sm-2 { + overflow: hidden; + width: 16.66666667% +} +.weather .row { + margin-bottom: 0 +} +.bulk-actions { + display: none +} +table.countries_list { + width: 100% +} +table.countries_list td { + padding: 0 10px; + line-height: 30px; + border-top: 1px solid #eeeeee +} +.dataTables_paginate a { + padding: 6px 9px !important; + background: #ddd !important; + border-color: #ddd !important +} +.paging_full_numbers a.paginate_active { + background-color: rgba(38, 185, 154, 0.59) !important; + border-color: rgba(38, 185, 154, 0.59) !important +} +button.DTTT_button, +div.DTTT_button, +a.DTTT_button { + border: 1px solid #E7E7E7 !important; + background: #E7E7E7 !important; + box-shadow: none !important +} +table.jambo_table { + border: 1px solid rgba(221, 221, 221, 0.78) +} +table.jambo_table thead { + background: rgba(52, 73, 94, 0.94); + color: #ECF0F1 +} +table.jambo_table tbody tr:hover td { + background: rgba(38, 185, 154, 0.07); + border-top: 1px solid rgba(38, 185, 154, 0.11); + border-bottom: 1px solid rgba(38, 185, 154, 0.11) +} +table.jambo_table tbody tr.selected { + background: rgba(38, 185, 154, 0.16) +} +table.jambo_table tbody tr.selected td { + border-top: 1px solid rgba(38, 185, 154, 0.4); + border-bottom: 1px solid rgba(38, 185, 154, 0.4) +} +.dataTables_paginate a { + background: #ff0000 +} +.dataTables_wrapper { + position: relative; + clear: both; + zoom: 1 +} +.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 250px; + height: 30px; + margin-left: -125px; + margin-top: -15px; + padding: 14px 0 2px 0; + border: 1px solid #ddd; + text-align: center; + color: #999; + font-size: 14px; + background-color: white +} +.dataTables_length { + width: 40%; + float: left +} +.dataTables_filter { + width: 50%; + float: right; + text-align: right +} +.dataTables_info { + width: 60%; + float: left +} +.dataTables_paginate { + float: right; + text-align: right +} +table.dataTable th.focus, +table.dataTable td.focus { + outline: 2px solid #1ABB9C !important; + outline-offset: -1px +} +table.display { + margin: 0 auto; + clear: both; + width: 100% +} +table.display thead th { + padding: 8px 18px 8px 10px; + border-bottom: 1px solid black; + font-weight: bold; + cursor: pointer +} +table.display tfoot th { + padding: 3px 18px 3px 10px; + border-top: 1px solid black; + font-weight: bold +} +table.display tr.heading2 td { + border-bottom: 1px solid #aaa +} +table.display td { + padding: 3px 10px +} +table.display td.center { + text-align: center +} +table.display thead th:active, +table.display thead td:active { + outline: none +} +.dataTables_scroll { + clear: both +} +.dataTables_scrollBody { + *margin-top: -1px; + -webkit-overflow-scrolling: touch +} +.top .dataTables_info { + float: none +} +.clear { + clear: both +} +.dataTables_empty { + text-align: center +} +tfoot input { + margin: 0.5em 0; + width: 100%; + color: #444 +} +tfoot input.search_init { + color: #999 +} +td.group { + background-color: #d1cfd0; + border-bottom: 2px solid #A19B9E; + border-top: 2px solid #A19B9E +} +td.details { + background-color: #d1cfd0; + border: 2px solid #A19B9E +} +.example_alt_pagination div.dataTables_info { + width: 40% +} +.paging_full_numbers { + width: 400px; + height: 22px; + line-height: 22px +} +.paging_full_numbers a:active { + outline: none +} +.paging_full_numbers a:hover { + text-decoration: none +} +.paging_full_numbers a.paginate_button, +.paging_full_numbers a.paginate_active { + border: 1px solid #aaa; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + padding: 2px 5px; + margin: 0 3px; + cursor: pointer +} +.paging_full_numbers a.paginate_button { + background-color: #ddd +} +.paging_full_numbers a.paginate_button:hover { + background-color: #ccc; + text-decoration: none !important +} +.paging_full_numbers a.paginate_active { + background-color: #99B3FF +} +table.display tr.even.row_selected td { + background-color: #B0BED9 +} +table.display tr.odd.row_selected td { + background-color: #9FAFD1 +} +div.box { + height: 100px; + padding: 10px; + overflow: auto; + border: 1px solid #8080FF; + background-color: #E5E5FF +} +ul.msg_list li { + background: #f7f7f7; + padding: 5px; + display: -ms-flexbox; + display: flex; + margin: 6px 6px 0; + width: 96% !important +} +ul.msg_list li:last-child { + margin-bottom: 6px; + padding: 10px +} +ul.msg_list li a { + padding: 3px 5px !important +} +ul.msg_list li a .image img { + border-radius: 2px 2px 2px 2px; + -webkit-border-radius: 2px 2px 2px 2px; + float: left; + margin-right: 10px; + width: 11% +} +ul.msg_list li a .time { + font-size: 11px; + font-style: italic; + font-weight: bold; + position: absolute; + right: 35px +} +ul.msg_list li a .message { + display: block !important; + font-size: 11px +} +.dropdown-menu.msg_list span { + white-space: normal +} +.dropdown-menu { + border: medium none; + box-shadow: none; + display: none; + float: left; + font-size: 12px; + left: 0; + list-style: none outside none; + padding: 0; + position: absolute; + text-shadow: none; + top: 100%; + z-index: 9998; + border: 1px solid #D9DEE4; + border-top-left-radius: 0; + border-top-right-radius: 0 +} +.dropdown-menu>li>a { + color: #5A738E +} +.navbar-nav .open .dropdown-menu { + position: absolute; + background: #fff; + margin-top: 0; + border: 1px solid #D9DEE4; + -webkit-box-shadow: none; + right: 0; + left: auto; + width: 220px +} +.navbar-nav .open .dropdown-menu.msg_list { + width: 300px +} +.info-number .badge { + font-size: 10px; + font-weight: normal; + line-height: 13px; + padding: 2px 6px; + position: absolute; + right: 2px; + top: 8px +} +ul.to_do { + padding: 0 +} +ul.to_do li { + background: #f3f3f3; + border-radius: 3px; + position: relative; + padding: 7px; + margin-bottom: 5px; + list-style: none +} +ul.to_do p { + margin: 0 +} +.dashboard-widget { + background: #f6f6f6; + border-top: 5px solid #79C3DF; + border-radius: 3px; + padding: 5px 10px 10px +} +.dashboard-widget .dashboard-widget-title { + font-weight: normal; + border-bottom: 1px solid #c1cdcd; + margin: 0 0 10px 0; + padding-bottom: 5px; + padding-left: 40px; + line-height: 30px +} +.dashboard-widget .dashboard-widget-title i { + font-size: 100%; + margin-left: -35px; + margin-right: 10px; + color: #33a1c9; + padding: 3px 6px; + border: 1px solid #abd9ea; + border-radius: 5px; + background: #fff +} +ul.quick-list { + width: 45%; + padding-left: 0; + display: inline-block +} +ul.quick-list li { + padding-left: 10px; + list-style: none; + margin: 0; + padding-bottom: 6px; + padding-top: 4px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden +} +ul.quick-list li i { + padding-right: 10px; + color: #757679 +} +.dashboard-widget-content { + padding-top: 9px +} +.dashboard-widget-content .sidebar-widget { + width: 50%; + display: inline-block; + vertical-align: top; + background: #fff; + border: 1px solid #abd9ea; + border-radius: 5px; + text-align: center; + float: right; + padding: 2px; + margin-top: 10px +} +.widget_summary { + width: 100%; + display: -ms-inline-flexbox; + display: inline-flex +} +.widget_summary .w_left { + float: left; + text-align: left +} +.widget_summary .w_center { + float: left +} +.widget_summary .w_right { + float: left; + text-align: right +} +.widget_summary .w_right span { + font-size: 20px +} +.w_20 { + width: 20% +} +.w_25 { + width: 25% +} +.w_55 { + width: 55% +} +h5.graph_title { + text-align: left; + margin-left: 10px +} +h5.graph_title i { + margin-right: 10px; + font-size: 17px +} +span.right { + float: right; + font-size: 14px !important +} +.tile_info a { + text-overflow: ellipsis +} +.sidebar-footer { + bottom: 0px; + clear: both; + display: block; + padding: 5px 0 0 0; + position: fixed; + width: 230px; + background: #2A3F54; + z-index:999; +} +.sidebar-footer a { + padding: 7px 0 3px; + text-align: center; + width: 25%; + font-size: 17px; + display: block; + float: left; + background: #172D44; + cursor: pointer; +} +.sidebar-footer a:hover { + background: #425567 +} +.tile_count { + margin-bottom: 20px; + margin-top: 20px +} +.tile_count .tile_stats_count { + border-bottom: 1px solid #D9DEE4; + padding: 0 10px 0 20px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + position: relative +} +@media (min-width: 992px) { + footer { + margin-left: 230px + } +} +@media (min-width: 992px) { + .tile_count .tile_stats_count { + margin-bottom: 10px; + border-bottom: 0; + padding-bottom: 10px + } +} +.tile_count .tile_stats_count:before { + content: ""; + position: absolute; + left: 0; + height: 65px; + border-left: 2px solid #ADB2B5; + margin-top: 10px +} +@media (min-width: 992px) { + .tile_count .tile_stats_count:first-child:before { + border-left: 0 + } +} +.tile_count .tile_stats_count .count { + font-size: 30px; + line-height: 47px; + font-weight: 600 +} +@media (min-width: 768px) { + .tile_count .tile_stats_count .count { + font-size: 40px + } +} +@media (min-width: 992px) and (max-width: 1100px) { + .tile_count .tile_stats_count .count { + font-size: 30px + } +} +.tile_count .tile_stats_count span { + font-size: 12px +} +@media (min-width: 768px) { + .tile_count .tile_stats_count span { + font-size: 13px + } +} +.tile_count .tile_stats_count .count_bottom i { + width: 12px +} +.dashboard_graph { + background: #fff; + padding: 7px 10px +} +.dashboard_graph .col-md-9, +.dashboard_graph .col-md-3 { + padding: 0 +} +a.user-profile { + color: #5E6974 !important +} +.user-profile img { + width: 29px; + height: 29px; + border-radius: 50%; + margin-right: 10px +} +ul.top_profiles { + height: 330px; + width: 100% +} +ul.top_profiles li { + margin: 0; + padding: 3px 5px +} +ul.top_profiles li:nth-child(odd) { + background-color: #eee +} +.media .profile_thumb { + border: 1px solid; + width: 50px; + height: 50px; + margin: 5px 10px 5px 0; + border-radius: 50%; + padding: 9px 12px +} +.media .profile_thumb i { + font-size: 30px +} +.media .date { + background: #ccc; + width: 52px; + margin-right: 10px; + border-radius: 10px; + padding: 5px +} +.media .date .month { + margin: 0; + text-align: center; + color: #fff +} +.media .date .day { + text-align: center; + color: #fff; + font-size: 27px; + margin: 0; + line-height: 27px; + font-weight: bold +} +.event .media-body a.title { + font-weight: bold +} +.event .media-body p { + margin-bottom: 0 +} +h4.graph_title { + margin: 7px; + text-align: center +} +.fontawesome-icon-list .fa-hover a:hover { + background-color: #ddd; + color: #fff; + text-decoration: none +} +.fontawesome-icon-list .fa-hover a { + display: block; + line-height: 32px; + height: 32px; + padding-left: 10px; + border-radius: 4px +} +.fontawesome-icon-list .fa-hover a:hover .fa { + font-size: 28px; + vertical-align: -6px +} +.fontawesome-icon-list .fa-hover a .fa { + width: 32px; + font-size: 16px; + display: inline-block; + text-align: right; + margin-right: 10px +} +.main_menu .fa { + width: 26px; + opacity: .99; + display: inline-block; + font-family: FontAwesome; + font-style: normal; + font-weight: normal; + font-size: 18px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} +.tile-stats { + position: relative; + display: block; + margin-bottom: 12px; + border: 1px solid #E4E4E4; + -webkit-border-radius: 5px; + overflow: hidden; + padding-bottom: 5px; + -webkit-background-clip: padding-box; + -moz-border-radius: 5px; + -moz-background-clip: padding; + border-radius: 5px; + background-clip: padding-box; + background: #FFF; + transition: all 300ms ease-in-out +} +.tile-stats:hover .icon i { + animation-name: transformAnimation; + animation-duration: .5s; + animation-iteration-count: 1; + color: rgba(58, 58, 58, 0.41); + animation-timing-function: ease; + animation-fill-mode: forwards; + -webkit-animation-name: transformAnimation; + -webkit-animation-duration: .5s; + -webkit-animation-iteration-count: 1; + -webkit-animation-timing-function: ease; + -webkit-animation-fill-mode: forwards; + -moz-animation-name: transformAnimation; + -moz-animation-duration: .5s; + -moz-animation-iteration-count: 1; + -moz-animation-timing-function: ease; + -moz-animation-fill-mode: forwards +} +.tile-stats .icon { + width: 20px; + height: 20px; + color: #BAB8B8; + position: absolute; + right: 53px; + top: 22px; + z-index: 1 +} +.tile-stats .icon i { + margin: 0; + font-size: 60px; + line-height: 0; + vertical-align: bottom; + padding: 0 +} +.tile-stats .count { + font-size: 38px; + font-weight: bold; + line-height: 1.65857 +} +.tile-stats .count, +.tile-stats h3, +.tile-stats p { + position: relative; + margin: 0; + margin-left: 10px; + z-index: 5; + padding: 0 +} +.tile-stats h3 { + color: #BAB8B8 +} +.tile-stats p { + margin-top: 5px; + font-size: 12px +} +.tile-stats>.dash-box-footer { + position: relative; + text-align: center; + margin-top: 5px; + padding: 3px 0; + color: #fff; + color: rgba(255, 255, 255, 0.8); + display: block; + z-index: 10; + background: rgba(0, 0, 0, 0.1); + text-decoration: none +} +.tile-stats>.dash-box-footer:hover { + color: #fff; + background: rgba(0, 0, 0, 0.15) +} +.tile-stats>.dash-box-footer:hover { + color: #fff; + background: rgba(0, 0, 0, 0.15) +} +table.tile_info { + padding: 10px 15px +} +table.tile_info span.right { + margin-right: 0; + float: right; + position: absolute; + right: 4% +} +.tile:hover { + text-decoration: none +} +.tile_header { + border-bottom: transparent; + padding: 7px 15px; + margin-bottom: 15px; + background: #E7E7E7 +} +.tile_head h4 { + margin-top: 0; + margin-bottom: 5px +} +.tiles-bottom { + padding: 5px 10px; + margin-top: 10px; + background: rgba(194, 194, 194, 0.3); + text-align: left +} +a.star { + color: #428bca !important +} +.mail_content { + background: none repeat scroll 0 0 #FFFFFF; + border-radius: 4px; + margin-top: 20px; + min-height: 500px; + padding: 10px 11px; + width: 100% +} +.list-btn-mail { + margin-bottom: 15px +} +.list-btn-mail.active { + border-bottom: 1px solid #39B3D7; + padding: 0 0 14px +} +.list-btn-mail>i { + float: left; + font-size: 18px; + font-style: normal; + width: 33px +} +.list-btn-mail>.cn { + background: none repeat scroll 0 0 #39B3D7; + border-radius: 12px; + color: #FFFFFF; + float: right; + font-style: normal; + padding: 0 5px +} +.button-mail { + margin: 0 0 15px !important; + text-align: left; + width: 100% +} +button, +.buttons, +.btn, +.modal-footer .btn+.btn { + margin-bottom: 5px; + margin-right: 5px +} +.btn-group-vertical .btn, +.btn-group .btn { + margin-bottom: 0; + margin-right: 0 +} +.mail_list_column { + border-left: 1px solid #DBDBDB +} +.mail_view { + border-left: 1px solid #DBDBDB +} +.mail_list { + width: 100%; + border-bottom: 1px solid #DBDBDB; + margin-bottom: 2px; + display: inline-block +} +.mail_list .left { + width: 5%; + float: left; + margin-right: 3% +} +.mail_list .right { + width: 90%; + float: left +} +.mail_list h3 { + font-size: 15px; + font-weight: bold; + margin: 0px 0 6px +} +.mail_list h3 small { + float: right; + color: #ADABAB; + font-size: 11px; + line-height: 20px +} +.mail_list .badge { + padding: 3px 6px; + font-size: 8px; + background: #BAB7B7 +} +@media (max-width: 767px) { + .mail_list { + margin-bottom: 5px; + display: inline-block + } +} +.mail_heading h4 { + font-size: 18px; + border-bottom: 1px solid #ddd; + padding-bottom: 10px; + margin-top: 20px +} +.attachment { + margin-top: 30px +} +.attachment ul { + width: 100%; + list-style: none; + padding-left: 0; + display: inline-block; + margin-bottom: 30px +} +.attachment ul li { + float: left; + width: 150px; + margin-right: 10px; + margin-bottom: 10px +} +.attachment ul li img { + height: 150px; + border: 1px solid #ddd; + padding: 5px; + margin-bottom: 10px +} +.attachment ul li span { + float: right +} +.attachment .file-name { + float: left +} +.attachment .links { + width: 100%; + display: inline-block +} +.compose { + padding: 0; + position: fixed; + bottom: 0; + right: 0; + background: #fff; + border: 1px solid #D9DEE4; + border-right: 0; + border-bottom: 0; + border-top-left-radius: 5px; + z-index: 9999; + display: none +} +.compose .compose-header { + padding: 5px; + background: #169F85; + color: #fff; + border-top-left-radius: 5px +} +.compose .compose-header .close { + text-shadow: 0 1px 0 #ffffff; + line-height: .8 +} +.compose .compose-body .editor.btn-toolbar { + margin: 0 +} +.compose .compose-body .editor-wrapper { + height: 100%; + min-height: 50px; + max-height: 180px; + border-radius: 0; + border-left: none; + border-right: none; + overflow: auto +} +.compose .compose-footer { + padding: 10px +} +.editor.btn-toolbar { + zoom: 1; + background: #F7F7F7; + margin: 5px 2px; + padding: 3px 0; + border: 1px solid #EFEFEF +} +.input-group { + margin-bottom: 10px +} +.ln_solid { + border-top: 1px solid #e5e5e5; + color: #ffffff; + background-color: #ffffff; + height: 1px; + margin: 20px 0 +} +span.section { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5 +} +.form-control { + border-radius: 0; + width: 100% +} +.form-horizontal .control-label { + padding-top: 8px +} +.form-control:focus { + border-color: #CCD0D7; + box-shadow: none !important +} +legend { + font-size: 18px; + color: inherit +} +.form-horizontal .form-group { + margin-right: 0; + margin-left: 0 +} +.form-control-feedback { + margin-top: 8px; + height: 23px; + color: #bbb; + line-height: 24px; + font-size: 15px +} +.form-control-feedback.left { + border-right: 1px solid #ccc; + left: 13px +} +.form-control-feedback.right { + border-left: 1px solid #ccc; + right: 13px +} +.form-control.has-feedback-left { + padding-left: 45px +} +.form-control.has-feedback-right { + padding-right: 45px +} +.form-group { + margin-bottom: 10px +} +.validate { + margin-top: 10px +} +.invalid-form-error-message { + margin-top: 10px; + padding: 5px +} +.invalid-form-error-message.filled { + border-left: 2px solid #E74C3C +} +p.parsley-success { + color: #468847; + background-color: #DFF0D8; + border: 1px solid #D6E9C6 +} +p.parsley-error { + color: #B94A48; + background-color: #F2DEDE; + border: 1px solid #EED3D7 +} +ul.parsley-errors-list { + list-style: none; + color: #E74C3C; + padding-left: 0 +} +input.parsley-error, +textarea.parsley-error, +select.parsley-error { + background: #FAEDEC; + border: 1px solid #E85445 +} +.btn-group .parsley-errors-list { + display: none +} +.bad input, +.bad select, +.bad textarea { + border: 1px solid #CE5454; + box-shadow: 0 0 4px -2px #CE5454; + position: relative; + left: 0; + -moz-animation: .7s 1 shake linear; + -webkit-animation: 0.7s 1 shake linear +} +.item input, +.item textarea { + transition: 0.42s +} +.item .alert { + float: left; + margin: 0 0 0 20px; + padding: 3px 10px; + color: #FFF; + border-radius: 3px 4px 4px 3px; + background-color: #CE5454; + max-width: 170px; + white-space: pre; + position: relative; + left: -15px; + opacity: 0; + z-index: 1; + transition: 0.15s ease-out +} +.item .alert::after { + content: ''; + display: block; + height: 0; + width: 0; + border-color: transparent #CE5454 transparent transparent; + border-style: solid; + border-width: 11px 7px; + position: absolute; + left: -13px; + top: 1px +} +.item.bad .alert { + left: 0; + opacity: 1 +} +.inl-bl { + display: inline-block +} +.well .markup { + background: #fff; + color: #777; + position: relative; + padding: 45px 15px 15px; + margin: 15px 0 0 0; + background-color: #fff; + border-radius: 0 0 4px 4px; + box-shadow: none +} +.well .markup::after { + content: "Example"; + position: absolute; + top: 15px; + left: 15px; + font-size: 12px; + font-weight: bold; + color: #bbb; + text-transform: uppercase; + letter-spacing: 1px +} +.autocomplete-suggestions { + border: 1px solid #e4e4e4; + background: #F4F4F4; + cursor: default; + overflow: auto +} +.autocomplete-suggestion { + padding: 2px 5px; + font-size: 1.2em; + white-space: nowrap; + overflow: hidden +} +.autocomplete-selected { + background: #f0f0f0 +} +.autocomplete-suggestions strong { + font-weight: normal; + color: #3399ff; + font-weight: bolder +} +.btn { + border-radius: 3px +} +a.btn-success, +a.btn-primary, +a.btn-warning, +a.btn-danger { + color: #fff +} +.btn-success { + background: #26B99A; + border: 1px solid #169F85 +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background: #169F85 +} +.btn-dark { + color: #E9EDEF; + background-color: #4B5F71; + border-color: #364B5F +} +.btn-dark:hover, +.btn-dark:focus, +.btn-dark:active, +.btn-dark.active, +.open .dropdown-toggle.btn-dark { + color: #FFFFFF; + background-color: #394D5F; + border-color: #394D5F +} +.btn-round { + border-radius: 30px +} +.btn.btn-app { + position: relative; + padding: 15px 5px; + margin: 0 0 10px 10px; + min-width: 80px; + height: 60px; + box-shadow: none; + border-radius: 0; + text-align: center; + color: #666; + border: 1px solid #ddd; + background-color: #fafafa; + font-size: 12px +} +.btn.btn-app>.fa, +.btn.btn-app>.glyphicon, +.btn.btn-app>.ion { + font-size: 20px; + display: block +} +.btn.btn-app:hover { + background: #f4f4f4; + color: #444; + border-color: #aaa +} +.btn.btn-app:active, +.btn.btn-app:focus { + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125) +} +.btn.btn-app>.badge { + position: absolute; + top: -3px; + right: -10px; + font-size: 10px; + font-weight: 400 +} +textarea { + padding: 10px; + vertical-align: top; + width: 200px +} +textarea:focus { + outline-style: solid; + outline-width: 2px +} +.btn_ { + display: inline-block; + padding: 3px 9px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + text-align: center; + vertical-align: middle; + cursor: pointer; + color: #333333; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + background-color: #f5f5f5; + background-image: linear-gradient(to bottom, #fff, #e6e6e6); + background-repeat: repeat-x; + filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid: DXImageTransform.Microsoft.gradient(enabled=false); + border: 1px solid #cccccc; + border-bottom-color: #b3b3b3; + border-radius: 4px; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05) +} +.bs-glyphicons { + margin: 0 -10px 20px; + overflow: hidden +} +.bs-glyphicons-list { + padding-left: 0; + list-style: none +} +.bs-glyphicons li { + float: left; + width: 25%; + height: 115px; + padding: 10px; + font-size: 10px; + line-height: 1.4; + text-align: center; + background-color: #f9f9f9; + border: 1px solid #fff +} +.bs-glyphicons .glyphicon { + margin-top: 5px; + margin-bottom: 10px; + font-size: 24px +} +.bs-glyphicons .glyphicon-class { + display: block; + text-align: center; + word-wrap: break-word +} +.bs-glyphicons li:hover { + color: #fff; + background-color: #1ABB9C +} +@media (min-width: 768px) { + .bs-glyphicons { + margin-right: 0; + margin-left: 0 + } + .bs-glyphicons li { + width: 12.5%; + font-size: 12px + } +} +.tagsinput { + border: 1px solid #CCC; + background: #FFF; + padding: 6px 6px 0; + width: 300px; + overflow-y: auto +} +span.tag { + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + display: block; + float: left; + padding: 5px 9px; + text-decoration: none; + background: #1ABB9C; + color: #F1F6F7; + margin-right: 5px; + font-weight: 500; + margin-bottom: 5px; + font-family: helvetica +} +span.tag a { + color: #F1F6F7 !important +} +.tagsinput span.tag a { + font-weight: bold; + color: #82ad2b; + text-decoration: none; + font-size: 11px +} +.tagsinput input { + width: 80px; + margin: 0px; + font-family: helvetica; + font-size: 13px; + border: 1px solid transparent; + padding: 3px; + background: transparent; + color: #000; + outline: 0px +} +.tagsinput div { + display: block; + float: left +} +.tags_clear { + clear: both; + width: 100%; + height: 0px +} +.not_valid { + background: #FBD8DB !important; + color: #90111A !important +} +ul.bar_tabs { + overflow: visible; + background: #F5F7FA; + height: 25px; + margin: 21px 0 14px; + padding-left: 14px; + position: relative; + z-index: 1; + width: 100%; + border-bottom: 1px solid #E6E9ED +} +ul.bar_tabs>li { + border: 1px solid #E6E9ED; + color: #333 !important; + margin-top: -17px; + margin-left: 8px; + background: #fff; + border-bottom: none; + border-radius: 4px 4px 0 0 +} +ul.bar_tabs>li.active { + border-right: 6px solid #D3D6DA; + border-top: 0; + margin-top: -15px +} +ul.bar_tabs>li a { + padding: 10px 17px; + background: #F5F7FA; + margin: 0; + border-top-right-radius: 0 +} +ul.bar_tabs>li a:hover { + border: 1px solid transparent +} +ul.bar_tabs>li.active a { + border-bottom: none +} +ul.bar_tabs.right { + padding-right: 14px +} +ul.bar_tabs.right li { + float: right +} +a:focus { + outline: none +} +ul.timeline li { + position: relative; + border-bottom: 1px solid #e8e8e8; + clear: both +} +.timeline .block { + margin: 0; + border-left: 3px solid #e8e8e8; + overflow: visible; + padding: 10px 15px; + margin-left: 105px +} +.timeline.widget { + min-width: 0; + max-width: inherit +} +.timeline.widget .block { + margin-left: 5px +} +.timeline .tags { + position: absolute; + top: 15px; + left: 0; + width: 84px +} +.timeline .tag { + display: block; + height: 30px; + font-size: 13px; + padding: 8px +} +.timeline .tag span { + display: block; + overflow: hidden; + width: 100%; + white-space: nowrap; + text-overflow: ellipsis +} +.tag { + line-height: 1; + background: #1ABB9C; + color: #fff !important +} +.tag:after { + content: " "; + height: 30px; + width: 0; + position: absolute; + left: 100%; + top: 0; + margin: 0; + pointer-events: none; + border-top: 14px solid transparent; + border-bottom: 14px solid transparent; + border-left: 11px solid #1ABB9C +} +.timeline h2.title { + position: relative; + font-size: 16px; + margin: 0 +} +.timeline h2.title:before { + content: ""; + position: absolute; + left: -23px; + top: 3px; + display: block; + width: 14px; + height: 14px; + border: 3px solid #d2d3d2; + border-radius: 14px; + background: #f9f9f9 +} +.timeline .byline { + padding: .25em 0 +} +.byline { + -webkit-font-smoothing: antialiased; + font-style: italic; + font-size: .9375em; + line-height: 1.3; + color: #aab6aa +} +ul.social li { + border: 0 +} +.social-sidebar, +.social-body { + float: right +} +.social-sidebar { + background: #EDEDED; + width: 22% +} +.social-body { + border: 1px solid #ccc; + width: 78% +} +.thumb img { + width: 50px; + height: 50px; + border-radius: 50% +} +.chat .thumb img { + width: 27px; + height: 27px; + border-radius: 50% +} +.chat .status { + float: left; + margin: 16px 0 0 -16px; + font-size: 14px; + font-weight: bold; + width: 12px; + height: 12px; + display: block; + border: 2px solid #FFF; + z-index: 12312; + border-radius: 50% +} +.chat .status.online { + background: #1ABB9C +} +.chat .status.away { + background: #F39C12 +} +.chat .status.offline { + background: #ccc +} +.chat .media-body { + padding-top: 5px +} +.dashboard_graph .x_title { + padding: 5px 5px 7px +} +.dashboard_graph .x_title h3 { + margin: 0; + font-weight: normal +} +.chart { + position: relative; + display: inline-block; + width: 110px; + height: 110px; + margin-top: 5px; + margin-bottom: 5px; + text-align: center +} +.chart canvas { + position: absolute; + top: 0; + left: 0 +} +.percent { + display: inline-block; + line-height: 110px; + z-index: 2; + font-size: 18px +} +.percent:after { + content: '%'; + margin-left: 0.1em; + font-size: .8em +} +.angular { + margin-top: 100px +} +.angular .chart { + margin-top: 0 +} +.widget { + min-width: 250px; + max-width: 310px +} +.widget_tally_box .btn-group button { + text-align: center +} +.widget_tally_box .btn-group button { + color: inherit; + font-weight: 500; + background-color: #f5f5f5; + border: 1px solid #e7e7e7 +} +ul.widget_tally, +ul.widget_tally li { + width: 100% +} +ul.widget_tally li { + padding: 2px 10px; + border-bottom: 1px solid #ECECEC; + padding-bottom: 4px +} +ul.widget_tally .month { + width: 70%; + float: left +} +ul.widget_tally .count { + width: 30%; + float: left; + text-align: right +} +.pie_bg { + border-bottom: 1px solid rgba(101, 204, 182, 0.16); + padding-bottom: 15px; + border-radius: 4px; + filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid: DXImageTransform.Microsoft.gradient(enabled=false); + padding-bottom: 10px; + box-shadow: 0 4px 6px -6px #222 +} +.widget_tally_box .flex { + display: -ms-flexbox; + display: flex +} +ul.widget_profile_box { + width: 100%; + height: 42px; + padding: 3px; + background: #ececec; + margin-top: 40px; + margin-left: 1px +} +ul.widget_profile_box li:first-child { + width: 25%; + float: left +} +ul.widget_profile_box li:first-child a { + float: left +} +ul.widget_profile_box li:last-child { + width: 25%; + float: right +} +ul.widget_profile_box li:last-child a { + float: right +} +ul.widget_profile_box li a { + font-size: 22px; + text-align: center; + width: 35px; + height: 35px; + border: 1px solid rgba(52, 73, 94, 0.44); + display: block; + border-radius: 50%; + padding: 0px +} +ul.widget_profile_box li a:hover { + color: #1ABB9C !important; + border: 1px solid #26b99a +} +ul.widget_profile_box li .profile_img { + width: 85px; + height: 85px; + margin: 0; + margin-top: -28px +} +.widget_tally_box p, +.widget_tally_box span { + text-align: center +} +.widget_tally_box .name { + text-align: center; + margin: 25px +} +.widget_tally_box .name_title { + text-align: center; + margin: 5px +} +.widget_tally_box ul.legend { + margin: 0 +} +.widget_tally_box ul.legend p, +.widget_tally_box ul.legend span { + text-align: left +} +.widget_tally_box ul.legend li .icon { + font-size: 20px; + float: left; + width: 14px +} +.widget_tally_box ul.legend li .name { + font-size: 14px; + margin: 5px 0 0 14px; + text-overflow: ellipsis; + float: left +} +.widget_tally_box ul.legend p { + display: inline-block; + margin: 0 +} +.widget_tally_box ul.verticle_bars li { + height: 140px; + width: 23% +} +.widget .verticle_bars li .progress.vertical.progress_wide { + width: 65% +} +ul.count2 { + width: 100%; + margin-left: 1px; + border: 1px solid #ddd; + border-left: 0; + border-right: 0; + padding: 10px 0 +} +ul.count2 li { + width: 30%; + text-align: center +} +ul.count2 li h3 { + font-weight: 400; + margin: 0 +} +ul.count2 li span { + font-weight: 300 +} +.divider { + border-bottom: 1px solid #ddd; + margin: 10px +} +.divider-dashed { + border-top: 1px dashed #e7eaec; + background-color: #ffffff; + height: 1px; + margin: 10px 0 +} +ul.messages { + padding: 0; + list-style: none +} +ul.messages li, +.tasks li { + border-bottom: 1px dotted #e6e6e6; + padding: 8px 0 +} +ul.messages li img.avatar, +img.avatar { + height: 32px; + width: 32px; + float: left; + display: inline-block; + border-radius: 2px; + padding: 2px; + background: #f7f7f7; + border: 1px solid #e6e6e6 +} +ul.messages li .message_date { + float: right; + text-align: right +} +ul.messages li .message_wrapper { + margin-left: 50px; + margin-right: 40px +} +ul.messages li .message_wrapper h4.heading { + font-weight: 600; + margin: 0; + cursor: pointer; + margin-bottom: 10px; + line-height: 100% +} +ul.messages li .message_wrapper blockquote { + padding: 0px 10px; + margin: 0; + border-left: 5px solid #eee +} +ul.user_data li { + margin-bottom: 6px +} +ul.user_data li p { + margin-bottom: 0 +} +ul.user_data li .progress { + width: 90% +} +.project_progress .progress { + margin-bottom: 3px !important; + margin-top: 5px +} +.projects .list-inline { + margin: 0 +} +.profile_title { + background: #F5F7FA; + border: 0; + padding: 7px 0; + display: -ms-flexbox; + display: flex +} +ul.stats-overview { + border-bottom: 1px solid #e8e8e8; + padding-bottom: 10px; + margin-bottom: 10px +} +ul.stats-overview li { + display: inline-block; + text-align: center; + padding: 0 15px; + width: 30%; + font-size: 14px; + border-right: 1px solid #e8e8e8 +} +ul.stats-overview li:last-child { + border-right: 0 +} +ul.stats-overview li .name { + font-size: 12px +} +ul.stats-overview li .value { + font-size: 14px; + font-weight: bold; + display: block +} +ul.stats-overview li:first-child { + padding-left: 0 +} +ul.project_files li { + margin-bottom: 5px +} +ul.project_files li a i { + width: 20px +} +.project_detail p { + margin-bottom: 10px +} +.project_detail p.title { + font-weight: bold; + margin-bottom: 0 +} +.avatar img { + border-radius: 50%; + max-width: 45px +} +.pricing { + background: #fff +} +.pricing .title { + background: #1ABB9C; + height: 110px; + color: #fff; + padding: 15px 0 0; + text-align: center +} +.pricing .title h2 { + text-transform: capitalize; + font-size: 18px; + border-radius: 5px 5px 0 0; + margin: 0; + font-weight: 400 +} +.pricing .title h1 { + font-size: 30px; + margin: 12px +} +.pricing .title span { + background: rgba(51, 51, 51, 0.28); + padding: 2px 5px +} +.pricing_features { + background: #FAFAFA; + padding: 20px 15px; + min-height: 230px; + font-size: 13.5px +} +.pricing_features ul li { + margin-top: 10px +} +.pricing_footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + text-align: center; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px +} +.pricing_footer p { + font-size: 13px; + padding: 10px 0 2px; + display: block +} +.ui-ribbon-container { + position: relative +} +.ui-ribbon-container .ui-ribbon-wrapper { + position: absolute; + overflow: hidden; + width: 85px; + height: 88px; + top: -3px; + right: -3px +} +.ui-ribbon-container.ui-ribbon-primary .ui-ribbon { + background-color: #5b90bf +} +.ui-ribbon-container .ui-ribbon { + position: relative; + display: block; + text-align: center; + font-size: 15px; + font-weight: 700; + color: #fff; + transform: rotate(45deg); + padding: 7px 0; + left: -5px; + top: 15px; + width: 120px; + line-height: 20px; + background-color: #555; + box-shadow: 0 0 3px rgba(0, 0, 0, 0.3) +} +.ui-ribbon-container.ui-ribbon-primary .ui-ribbon:after, +.ui-ribbon-container.ui-ribbon-primary .ui-ribbon:before { + border-top: 2px solid #5b90bf +} +.ui-ribbon-container .ui-ribbon:before { + left: 0; + bottom: -1px +} +.ui-ribbon-container .ui-ribbon:before { + right: 0 +} +.ui-ribbon-container .ui-ribbon:after, +.ui-ribbon-container .ui-ribbon:before { + position: absolute; + content: " "; + line-height: 0; + border-top: 2px solid #555; + border-left: 2px solid transparent; + border-right: 2px solid transparent +} +.thumbnail .image { + height: 120px; + overflow: hidden +} +.caption { + padding: 9px 5px; + background: #F7F7F7 +} +.caption p { + margin-bottom: 5px +} +.thumbnail { + height: 190px; + overflow: hidden +} +.view { + overflow: hidden; + position: relative; + text-align: center; + box-shadow: 1px 1px 2px #e6e6e6; + cursor: default +} +.view .mask, +.view .content { + position: absolute; + width: 100%; + overflow: hidden; + top: 0; + left: 0 +} +.view img { + display: block; + position: relative +} +.view .tools { + text-transform: uppercase; + color: #fff; + text-align: center; + position: relative; + font-size: 17px; + padding: 3px; + background: rgba(0, 0, 0, 0.35); + margin: 43px 0 0 0 +} +.mask.no-caption .tools { + margin: 90px 0 0 0 +} +.view .tools a { + display: inline-block; + color: #FFF; + font-size: 18px; + font-weight: 400; + padding: 0 4px +} +.view p { + font-family: Georgia, serif; + font-style: italic; + font-size: 12px; + position: relative; + color: #fff; + padding: 10px 20px 20px; + text-align: center +} +.view a.info { + display: inline-block; + text-decoration: none; + padding: 7px 14px; + background: #000; + color: #fff; + text-transform: uppercase; + box-shadow: 0 0 1px #000 +} +.view-first img { + transition: all 0.2s linear +} +.view-first .mask { + opacity: 0; + background-color: rgba(0, 0, 0, 0.5); + transition: all 0.4s ease-in-out +} +.view-first .tools { + transform: translateY(-100px); + opacity: 0; + transition: all 0.2s ease-in-out +} +.view-first p { + transform: translateY(100px); + opacity: 0; + transition: all 0.2s linear +} +.view-first:hover img { + transform: scale(1.1) +} +.view-first:hover .mask { + opacity: 1 +} +.view-first:hover .tools, +.view-first:hover p { + opacity: 1; + transform: translateY(0px) +} +.view-first:hover p { + transition-delay: 0.1s +} +.form-group.has-feedback span { + display: block !important; +} +.form-group .btn { + margin-bottom: -6px; +} + +.input-group-btn .btn { margin-bottom:0; } + +/*! + * bootstrap-vertical-tabs - v1.2.1 + * https://dbtek.github.io/bootstrap-vertical-tabs + * 2014-11-07 + * Copyright (c) 2014 İsmail Demirbilek + * License: MIT + */ + +.tabs-left, +.tabs-right { + border-bottom: none; + padding-top: 2px +} +.tabs-left { + border-right: 1px solid #F7F7F7 +} +.tabs-right { + border-left: 1px solid #F7F7F7 +} +.tabs-left>li, +.tabs-right>li { + float: none; + margin-bottom: 2px +} +.tabs-left>li { + margin-right: -1px +} +.tabs-right>li { + margin-left: -1px +} +.tabs-left>li.active>a, +.tabs-left>li.active>a:hover, +.tabs-left>li.active>a:focus { + border-bottom-color: #F7F7F7; + border-right-color: transparent +} +.tabs-right>li.active>a, +.tabs-right>li.active>a:hover, +.tabs-right>li.active>a:focus { + border-bottom: 1px solid #F7F7F7; + border-left-color: transparent +} +.tabs-left>li>a { + border-radius: 4px 0 0 4px; + margin-right: 0; + display: block; + background: #F7F7F7; + text-overflow: ellipsis; + overflow: hidden +} +.tabs-right>li>a { + border-radius: 0 4px 4px 0; + margin-right: 0; + background: #F7F7F7; + text-overflow: ellipsis; + overflow: hidden +} +.sideways { + margin-top: 50px; + border: none; + position: relative +} +.sideways>li { + height: 20px; + width: 120px; + margin-bottom: 100px +} +.sideways>li>a { + border-bottom: 1px solid #ddd; + border-right-color: transparent; + text-align: center; + border-radius: 4px 4px 0px 0px +} +.sideways>li.active>a, +.sideways>li.active>a:hover, +.sideways>li.active>a:focus { + border-bottom-color: transparent; + border-right-color: #ddd; + border-left-color: #ddd +} +.sideways.tabs-left { + left: -50px +} +.sideways.tabs-right { + right: -50px +} +.sideways.tabs-right>li { + transform: rotate(90deg) +} +.sideways.tabs-left>li { + transform: rotate(-90deg) +} +.morris-hover { + position: absolute; + z-index: 1000 +} +.morris-hover.morris-default-style { + padding: 6px; + color: #666; + background: rgba(243, 242, 243, 0.8); + border: solid 2px rgba(195, 194, 196, 0.8); + font-family: sans-serif; + font-size: 12px; + text-align: center +} +.morris-hover.morris-default-style .morris-hover-row-label { + font-weight: bold; + margin: 0.25em 0 +} +.morris-hover.morris-default-style .morris-hover-point { + white-space: nowrap; + margin: 0.1em 0 +} +.price { + font-size: 40px; + font-weight: 400; + color: #26B99A; + margin: 0 +} +.prod_title { + border-bottom: 1px solid #DFDFDF; + padding-bottom: 5px; + margin: 30px 0; + font-size: 20px; + font-weight: 400 +} +.product-image img { + width: 90% +} +.prod_color li { + margin: 0 10px +} +.prod_color li p { + margin-bottom: 0 +} +.prod_size li { + padding: 0 +} +.prod_color .color { + width: 25px; + height: 25px; + border: 2px solid rgba(51, 51, 51, 0.28) !important; + padding: 2px; + border-radius: 50px +} +.product_gallery a { + width: 100px; + height: 100px; + float: left; + margin: 10px; + border: 1px solid #e5e5e5 +} +.product_gallery a img { + width: 100%; + margin-top: 15px +} +.product_price { + margin: 20px 0; + padding: 5px 10px; + background-color: #FFFFFF; + text-align: left; + border: 2px dashed #E0E0E0 +} +.price-tax { + font-size: 18px +} +.product_social { + margin: 20px 0 +} +.product_social ul li a i { + font-size: 35px +} +.login { + background: #F7F7F7 +} +.login .fa-paw { + font-size: 26px +} +a.hiddenanchor { + display: none +} +.login_wrapper { + right: 0px; + margin: 0px auto; + margin-top: 5%; + max-width: 350px; + position: relative +} +.registration_form, +.login_form { + position: absolute; + top: 0px; + width: 100% +} +.registration_form { + z-index: 21; + opacity: 0; + width: 100% +} +.login_form { + z-index: 22 +} +#signup:target ~ .login_wrapper .registration_form, +#signin:target ~ .login_wrapper .login_form { + z-index: 22; + animation-name: fadeInLeft; + animation-delay: .1s +} +#signup:target ~ .login_wrapper .login_form, +#signin:target ~ .login_wrapper .registration_form { + animation-name: fadeOutLeft +} +.animate { + -webkit-animation-duration: 0.5s; + -webkit-animation-timing-function: ease; + -webkit-animation-fill-mode: both; + -moz-animation-duration: 0.5s; + -moz-animation-timing-function: ease; + -moz-animation-fill-mode: both; + -o-animation-duration: 0.5s; + -o-animation-timing-function: ease; + -o-animation-fill-mode: both; + -ms-animation-duration: 0.5s; + -ms-animation-timing-function: ease; + -ms-animation-fill-mode: both; + animation-duration: 0.5s; + animation-timing-function: ease; + animation-fill-mode: both +} +.login_box { + padding: 20px; + margin: auto +} +.left { + float: left +} +.alignleft { + float: left; + margin-right: 15px +} +.alignright { + float: right; + margin-left: 15px +} +.clearfix:after, +form:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden +} +.login_content { + margin: 0 auto; + padding: 25px 0 0; + position: relative; + text-align: center; + text-shadow: 0 1px 0 #fff; + min-width: 280px +} +.login_content a, +.login_content .btn-default:hover { + text-decoration: none +} +.login_content a:hover { + text-decoration: underline +} +.login_content h1 { + font: normal 25px Helvetica, Arial, sans-serif; + letter-spacing: -0.05em; + line-height: 20px; + margin: 10px 0 30px +} +.login_content h1:before, +.login_content h1:after { + content: ""; + height: 1px; + position: absolute; + top: 10px; + width: 27% +} +.login_content h1:after { + background: #7e7e7e; + background: linear-gradient(left, #7e7e7e 0%, #fff 100%); + right: 0 +} +.login_content h1:before { + background: #7e7e7e; + background: linear-gradient(right, #7e7e7e 0%, #fff 100%); + left: 0 +} +.login_content h1:before, +.login_content h1:after { + content: ""; + height: 1px; + position: absolute; + top: 10px; + width: 20% +} +.login_content h1:after { + background: #7e7e7e; + background: linear-gradient(left, #7e7e7e 0%, #fff 100%); + right: 0 +} +.login_content h1:before { + background: #7e7e7e; + background: linear-gradient(right, #7e7e7e 0%, #fff 100%); + left: 0 +} +.login_content form { + margin: 20px 0; + position: relative +} +.login_content form input[type="text"], +.login_content form input[type="email"], +.login_content form input[type="password"] { + border-radius: 3px; + -ms-box-shadow: 0 1px 0 #fff, 0 -2px 5px rgba(0, 0, 0, 0.08) inset; + -o-box-shadow: 0 1px 0 #fff, 0 -2px 5px rgba(0, 0, 0, 0.08) inset; + box-shadow: 0 1px 0 #fff, 0 -2px 5px rgba(0, 0, 0, 0.08) inset; + border: 1px solid #c8c8c8; + color: #777; + margin: 0 0 20px; + width: 100% +} +.login_content form input[type="text"]:focus, +.login_content form input[type="email"]:focus, +.login_content form input[type="password"]:focus { + -ms-box-shadow: 0 0 2px #ed1c24 inset; + -o-box-shadow: 0 0 2px #ed1c24 inset; + box-shadow: 0 0 2px #A97AAD inset; + background-color: #fff; + border: 1px solid #A878AF; + outline: none +} +#username { + background-position: 10px 10px !important +} +#password { + background-position: 10px -53px !important +} +.login_content form div a { + font-size: 12px; + margin: 10px 15px 0 0 +} +.reset_pass { + margin-top: 10px !important +} +.login_content div .reset_pass { + margin-top: 13px !important; + margin-right: 39px; + float: right +} +.separator { + border-top: 1px solid #D8D8D8; + margin-top: 10px; + padding-top: 10px +} +.button { + background: #f7f9fa; + background: linear-gradient(top, #f7f9fa 0%, #f0f0f0 100%); + filter: progid: DXImageTransform.Microsoft.gradient( startColorstr='#f7f9fa', endColorstr='#f0f0f0', GradientType=0); + -ms-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset; + -o-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset; + border-radius: 0 0 5px 5px; + border-top: 1px solid #CFD5D9; + padding: 15px 0 +} +.login_content form input[type="submit"], +#content form .submit { + float: left; + margin-left: 38px +} +.button a { + background: url(http://cssdeck.com/uploads/media/items/8/8bcLQqF.png) 0 -112px no-repeat; + color: #7E7E7E; + font-size: 17px; + padding: 2px 0 2px 40px; + text-decoration: none; + transition: all 0.3s ease +} +.button a:hover { + background-position: 0 -135px; + color: #00aeef +} +header { + width: 100% +} +#nprogress .bar { + background: #1ABB9C +} +#nprogress .peg { + box-shadow: 0 0 10px #1ABB9C, 0 0 5px #1ABB9C +} +#nprogress .spinner-icon { + border-top-color: #1ABB9C; + border-left-color: #1ABB9C +} +.editor-wrapper { + min-height: 250px; + background-color: white; + border-collapse: separate; + border: 1px solid #ccc; + padding: 4px; + box-sizing: content-box; + box-shadow: rgba(0, 0, 0, 0.07451) 0px 1px 1px 0px inset; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; + overflow: scroll; + outline: none +} +.voiceBtn { + width: 20px; + color: transparent; + background-color: transparent; + transform: scale(2, 2); + -webkit-transform: scale(2, 2); + -moz-transform: scale(2, 2); + border: transparent; + cursor: pointer; + box-shadow: none; + -webkit-box-shadow: none +} +div[data-role="editor-toolbar"] { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} +.dropdown-menu a { + cursor: pointer +} +.select2-container--default .select2-selection--single, +.select2-container--default .select2-selection--multiple { + background-color: #fff; + border: 1px solid #ccc; + border-radius: 0; + min-height: 38px +} +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: #73879C; + padding-top: 5px +} +.select2-container--default .select2-selection--multiple .select2-selection__rendered { + padding-top: 3px +} +.select2-container--default .select2-selection--single .select2-selection__arrow { + height: 36px +} +.select2-container--default .select2-selection--multiple .select2-selection__choice, +.select2-container--default .select2-selection--multiple .select2-selection__clear { + margin-top: 2px; + border: none; + border-radius: 0; + padding: 3px 5px +} +.select2-container--default.select2-container--focus .select2-selection--multiple { + border: 1px solid #ccc +} +.switchery { + width: 32px; + height: 20px +} +.switchery>small { + width: 20px; + height: 20px +} +fieldset { + border: none; + margin: 0; + padding: 0 +} +.cropper .img-container, +.cropper .img-preview { + background-color: #f7f7f7; + width: 100%; + text-align: center +} +.cropper .img-container { + min-height: 200px; + max-height: 516px; + margin-bottom: 20px +} +@media (min-width: 768px) { + .cropper .img-container { + min-height: 516px + } +} +.cropper .img-container>img { + max-width: 100% +} +.cropper .docs-preview { + margin-right: -15px +} +.cropper .img-preview { + float: left; + margin-right: 10px; + margin-bottom: 10px; + overflow: hidden +} +.cropper .img-preview>img { + max-width: 100% +} +.cropper .preview-lg { + width: 263px; + height: 148px +} +.cropper .preview-md { + width: 139px; + height: 78px +} +.cropper .preview-sm { + width: 69px; + height: 39px +} +.cropper .preview-xs { + width: 35px; + height: 20px; + margin-right: 0 +} +.cropper .docs-data>.input-group { + margin-bottom: 10px +} +.cropper .docs-data>.input-group>label { + min-width: 80px +} +.cropper .docs-data>.input-group>span { + min-width: 50px +} +.cropper .docs-buttons>.btn, +.cropper .docs-buttons>.btn-group, +.cropper .docs-buttons>.form-control { + margin-right: 5px; + margin-bottom: 10px +} +.cropper .docs-toggles>.btn, +.cropper .docs-toggles>.btn-group, +.cropper .docs-toggles>.dropdown { + margin-bottom: 10px +} +.cropper .docs-tooltip { + display: block; + margin: -6px -12px; + padding: 6px 12px +} +.cropper .docs-tooltip>.icon { + margin: 0 -3px; + vertical-align: top +} +.cropper .tooltip-inner { + white-space: normal +} +.cropper .btn-upload .tooltip-inner, +.cropper .btn-toggle .tooltip-inner { + white-space: nowrap +} +.cropper .btn-toggle { + padding: 6px +} +.cropper .btn-toggle>.docs-tooltip { + margin: -6px; + padding: 6px +} +@media (max-width: 400px) { + .cropper .btn-group-crop { + margin-right: -15px !important + } + .cropper .btn-group-crop>.btn { + padding-left: 5px; + padding-right: 5px + } + .cropper .btn-group-crop .docs-tooltip { + margin-left: -5px; + margin-right: -5px; + padding-left: 5px; + padding-right: 5px + } +} +.cropper .docs-options .dropdown-menu { + width: 100% +} +.cropper .docs-options .dropdown-menu>li { + padding: 3px 20px +} +.cropper .docs-options .dropdown-menu>li:hover { + background-color: #f7f7f7 +} +.cropper .docs-options .dropdown-menu>li>label { + display: block +} +.cropper .docs-cropped .modal-body { + text-align: center +} +.cropper .docs-cropped .modal-body>img, +.cropper .docs-cropped .modal-body>canvas { + max-width: 100% +} +.cropper .docs-diagram .modal-dialog { + max-width: 352px +} +.cropper .docs-cropped canvas { + max-width: 100% +} +.form_wizard .stepContainer { + display: block; + position: relative; + margin: 0; + padding: 0; + border: 0 solid #CCC; + overflow-x: hidden +} +.wizard_horizontal ul.wizard_steps { + display: table; + list-style: none; + position: relative; + width: 100%; + margin: 0 0 20px +} +.wizard_horizontal ul.wizard_steps li { + display: table-cell; + text-align: center +} +.wizard_horizontal ul.wizard_steps li a, +.wizard_horizontal ul.wizard_steps li:hover { + display: block; + position: relative; + -moz-opacity: 1; + filter: alpha(opacity=100); + opacity: 1; + color: #666 +} +.wizard_horizontal ul.wizard_steps li a:before { + content: ""; + position: absolute; + height: 4px; + background: #ccc; + top: 20px; + width: 100%; + z-index: 4; + left: 0 +} +.wizard_horizontal ul.wizard_steps li a.disabled .step_no { + background: #ccc +} +.wizard_horizontal ul.wizard_steps li a .step_no { + width: 40px; + height: 40px; + line-height: 40px; + border-radius: 100px; + display: block; + margin: 0 auto 5px; + font-size: 16px; + text-align: center; + position: relative; + z-index: 5 +} +.wizard_horizontal ul.wizard_steps li a.selected:before, +.step_no { + background: #34495E; + color: #fff +} +.wizard_horizontal ul.wizard_steps li a.done:before, +.wizard_horizontal ul.wizard_steps li a.done .step_no { + background: #1ABB9C; + color: #fff +} +.wizard_horizontal ul.wizard_steps li:first-child a:before { + left: 50% +} +.wizard_horizontal ul.wizard_steps li:last-child a:before { + right: 50%; + width: 50%; + left: auto +} +.wizard_verticle .stepContainer { + width: 80%; + float: left; + padding: 0 10px +} +.actionBar { + width: 100%; + border-top: 1px solid #ddd; + padding: 10px 5px; + text-align: right; + margin-top: 10px +} +.actionBar .buttonDisabled { + cursor: not-allowed; + pointer-events: none; + opacity: .65; + filter: alpha(opacity=65); + box-shadow: none +} +.actionBar a { + margin: 0 3px +} +.wizard_verticle .wizard_content { + width: 80%; + float: left; + padding-left: 20px +} +.wizard_verticle ul.wizard_steps { + display: table; + list-style: none; + position: relative; + width: 20%; + float: left; + margin: 0 0 20px +} +.wizard_verticle ul.wizard_steps li { + display: list-item; + text-align: center +} +.wizard_verticle ul.wizard_steps li a { + height: 80px +} +.wizard_verticle ul.wizard_steps li a:first-child { + margin-top: 20px +} +.wizard_verticle ul.wizard_steps li a, +.wizard_verticle ul.wizard_steps li:hover { + display: block; + position: relative; + -moz-opacity: 1; + filter: alpha(opacity=100); + opacity: 1; + color: #666 +} +.wizard_verticle ul.wizard_steps li a:before { + content: ""; + position: absolute; + height: 100%; + background: #ccc; + top: 20px; + width: 4px; + z-index: 4; + left: 49% +} +.wizard_verticle ul.wizard_steps li a.disabled .step_no { + background: #ccc +} +.wizard_verticle ul.wizard_steps li a .step_no { + width: 40px; + height: 40px; + line-height: 40px; + border-radius: 100px; + display: block; + margin: 0 auto 5px; + font-size: 16px; + text-align: center; + position: relative; + z-index: 5 +} +.wizard_verticle ul.wizard_steps li a.selected:before, +.step_no { + background: #34495E; + color: #fff +} +.wizard_verticle ul.wizard_steps li a.done:before, +.wizard_verticle ul.wizard_steps li a.done .step_no { + background: #1ABB9C; + color: #fff +} +.wizard_verticle ul.wizard_steps li:first-child a:before { + left: 49% +} +.wizard_verticle ul.wizard_steps li:last-child a:before { + left: 49%; + left: auto; + width: 0 +} +.form_wizard .loader { + display: none +} +.form_wizard .msgBox { + display: none +} +.progress { + border-radius: 0 +} +.progress-bar-info { + background-color: #3498DB +} +.progress-bar-success { + background-color: #26B99A +} +.progress_summary .progress { + margin: 5px 0 12px !important +} +.progress_summary .row { + margin-bottom: 5px +} +.progress_summary .row .col-xs-2 { + padding: 0 +} +.progress_summary .more_info span { + text-align: right; + float: right +} +.progress_summary .data span { + text-align: right; + float: right +} +.progress_summary p { + margin-bottom: 3px; + width: 100% +} +.progress_title .left { + float: left; + text-align: left +} +.progress_title .right { + float: right; + text-align: right; + font-weight: 300 +} +.progress.progress_sm { + border-radius: 0; + margin-bottom: 18px; + height: 10px !important +} +.progress.progress_sm .progress-bar { + height: 10px !important +} +.dashboard_graph p { + margin: 0 0 4px +} +ul.verticle_bars { + width: 100% +} +ul.verticle_bars li { + width: 23%; + height: 200px; + margin: 0 +} +.progress.vertical.progress_wide { + width: 35px +} +.alert-success { + color: #ffffff; + background-color: rgba(38, 185, 154, 0.88); + border-color: rgba(38, 185, 154, 0.88) +} +.alert-info { + color: #E9EDEF; + background-color: rgba(52, 152, 219, 0.88); + border-color: rgba(52, 152, 219, 0.88) +} +.alert-warning { + color: #E9EDEF; + background-color: rgba(243, 156, 18, 0.88); + border-color: rgba(243, 156, 18, 0.88) +} +.alert-danger, +.alert-error { + color: #E9EDEF; + background-color: rgba(231, 76, 60, 0.88); + border-color: rgba(231, 76, 60, 0.88) +} +.ui-pnotify.dark .ui-pnotify-container { + color: #E9EDEF; + background-color: rgba(52, 73, 94, 0.88); + border-color: rgba(52, 73, 94, 0.88) +} +.custom-notifications { + position: fixed; + margin: 15px; + right: 0; + float: right; + width: 400px; + z-index: 4000; + bottom: 0 +} +ul.notifications { + float: right; + display: block; + margin-bottom: 7px; + padding: 0; + width: 100% +} +.notifications li { + float: right; + margin: 3px; + width: 36px; + box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.3) +} +.notifications li:last-child { + margin-left: 0 +} +.notifications a { + display: block; + text-align: center; + text-decoration: none; + text-transform: uppercase; + padding: 9px 8px +} +.tabbed_notifications .text { + padding: 5px 15px; + height: 140px; + border-radius: 7px; + box-shadow: 6px 6px 6px rgba(0, 0, 0, 0.3) +} +.tabbed_notifications div p { + display: inline-block +} +.tabbed_notifications h2 { + font-weight: bold; + text-transform: uppercase; + width: 80%; + float: left; + height: 20px; + text-overflow: ellipsis; + overflow: hidden; + display: block +} +.tabbed_notifications .close { + padding: 5px; + color: #E9EDEF; + float: right; + opacity: 1 +} +.fc-state-default { + background: #f5f5f5; + color: #73879C +} +.fc-state-down, +.fc-state-active { + color: #333; + background: #ccc +} +.dropzone { + min-height: 300px; + border: 1px solid #e5e5e5 +} + +/* +.x_content { + direction: rtl; +} +*/ + +.main_menu .label { + line-height: 11px; + margin-top: 4px; +} +@media (max-width: 460px) { + .dataTables_wrapper .col-sm-6 { + width: 100%; + margin-bottom: 5px; + } + .dataTables_wrapper .col-sm-6 .dataTables_filter { + float: none; + } +} + + +@media (max-width: 767px) { + .dataTables_length { float:none; } +} + + + + +/* CSS3 Checkbox */ +/* +.checkbox-input { display:block;position:relative; } +.checkbox-input:before { display:block;content:"";position:absolute;top:2px;left:0;height:20px;width:20px;background:red;border-radius:3px; } + + + #input + label:after { + content: 'click my input'; + color: blue; + } + + #input:focus + label:after { + content: 'not valid yet'; + color: blue; + } + + #input:valid + label:after { + content: 'looks good'; + color: red; + } + +/* CSS3 Checkbox - end */ +/* + +/* +.checkbox { display: block;position:relative;cursor:pointer; } +.checkbox input { position:absolute;z-index:-1;opacity:0;left:0;top:0; } +.checkbox div { position:absolute;top:2px;left:0;height:20px;width:20px;background:#e6e6e6;border-radius:3px; } +.checkbox input:checked ~ div { background: #1ABC9C; } +.checkbox:hover input:not([disabled]):checked ~ div, +.checkbox input:checked:focus ~ div { background: #1ABC9C; } +.checkbox input:disabled ~ div { background: #1ABC9C;opacity: 0.6;pointer-events: none; } +.checkbox div:after { content: '';position: absolute;display: none; } +.checkbox input:checked ~ div:after { display: block; } +.checkbox-wp div:after { left: 7px;top: 3px;width: 7px;height: 11px;border: solid #fff;border-width: 0 2px 2px 0;transform: rotate(40deg); } +.checkbox-wp input:disabled ~ div:after { border-color: #F2F2F2; } + + +.checkbox-radio div { border-radius: 50%; } +.checkbox-radio div:after { left: 7px;top: 7px;height: 6px;width: 6px;border-radius: 50%;background: #fff; } +.checkbox-radio input:disabled ~ div:after { background: #F2F2F2; } + + +.checkbox, .radio { margin-top:-3px; } + +table thead .checkbox { margin-top:-7px;margin-top:-21px; } +table thead .checkbox.radio { margin-top:-7px;margin-top:-21px; } +*/ + +.daterangepicker.xdisplay { width:228px; } + +.dataTables_wrapper > .row{ + overflow:auto !important; /*prevent datatables overflowing its container*/ +} + +/** bootstrap-datetimepicker **/ +.input-group.date .input-group-addon{ + border-radius: 0px !important; + background-color: #ffff !important; +} +/** /bootstrap-datetimepicker **/ diff --git a/public/assets/build/css/custom.min.css b/public/assets/build/css/custom.min.css new file mode 100755 index 0000000..b99013d --- /dev/null +++ b/public/assets/build/css/custom.min.css @@ -0,0 +1,7 @@ +.x_title h2,table.tile_info td p{white-space:nowrap;text-overflow:ellipsis}.site_title,.x_title h2,table.tile_info td p{text-overflow:ellipsis}.detail a,.expand,.jqstooltip,.paging_full_numbers a:hover,.site_title:focus,.site_title:hover,a,a:focus,a:hover{text-decoration:none}.byline,.main_menu .fa{-webkit-font-smoothing:antialiased}.daterangepicker .ranges li{color:#73879C}.daterangepicker .ranges li.active,.daterangepicker .ranges li:hover{background:#536A7F;border:1px solid #536A7F;color:#fff}.daterangepicker .input-mini{background-color:#eee;border:1px solid #ccc;box-shadow:none!important}.daterangepicker .input-mini.active{border:1px solid #ccc}.daterangepicker select.ampmselect,.daterangepicker select.hourselect,.daterangepicker select.minuteselect,.daterangepicker select.monthselect,.daterangepicker select.secondselect,.daterangepicker select.yearselect{font-size:12px;padding:1px;margin:0;cursor:default;height:30px;border:1px solid #ADB2B5;line-height:30px;border-radius:0!important}.daterangepicker select.monthselect{margin-right:2%}.daterangepicker td.in-range{background:#E4E7EA;color:#73879C}.daterangepicker td.active,.daterangepicker td.active:hover{background-color:#536A7F;color:#fff}.daterangepicker th.available:hover{background:#eee;color:#34495E}.daterangepicker:after,.daterangepicker:before{content:none}.daterangepicker .calendar.single{margin:0 0 4px}.daterangepicker .calendar.single .calendar-table{width:224px;padding:0 0 4px!important}.daterangepicker .calendar.single .calendar-table thead tr:first-child th{padding:8px 5px}.daterangepicker .calendar.single .calendar-table thead th{border-radius:0}.daterangepicker.picker_1{color:#fff;background:#34495E}.daterangepicker.picker_1 .calendar-table{background:#34495E}.daterangepicker.picker_1 .calendar-table thead tr{background:#213345}.daterangepicker.picker_1 .calendar-table thead tr:first-child{background:#1ABB9C}.daterangepicker.picker_1 .calendar-table td.off{background:#34495E;color:#999}.daterangepicker.picker_1 .calendar-table td.available:hover{color:#34495E}.daterangepicker.picker_2 .calendar-table thead tr{color:#1ABB9C}.daterangepicker.picker_2 .calendar-table thead tr:first-child{color:#73879C}.daterangepicker.picker_3 .calendar-table thead tr:first-child{color:#fff;background:#1ABB9C}.daterangepicker.picker_4 .calendar-table thead tr:first-child{color:#fff;background:#34495E}.daterangepicker.picker_4 .calendar-table td,.daterangepicker.picker_4 .calendar-table td.off{background:#ECF0F1;border:1px solid #fff;border-radius:0}.daterangepicker.picker_4 .calendar-table td.active{background:#34495E}.calendar-exibit .show-calendar{float:none;display:block;position:relative;background-color:#fff;border:1px solid #ccc;margin-bottom:20px;border:1px solid rgba(0,0,0,.15);overflow:hidden}.calendar-exibit .show-calendar .calendar{margin:0 0 4px}.calendar-exibit .show-calendar.picker_1{background:#34495E}.calendar-exibit .calendar-table{padding:0 0 4px}.left_col{background:#2A3F54}.nav-sm .container.body .col-md-3.left_col{min-height:100%;width:70px;padding:0;z-index:9999;position:absolute}.nav-sm .container.body .col-md-3.left_col.menu_fixed{position:fixed;height:100%}.nav-sm .container.body .col-md-3.left_col .mCSB_container,.nav-sm .container.body .col-md-3.left_col .mCustomScrollBox{overflow:visible}.overflow_hidden,.sidebar-widget,.site_title,.tile,.weather-days .col-sm-2,.x_title h2,table.tile_info td p{overflow:hidden}.nav-sm .hidden-small{visibility:hidden}.nav-sm .container.body .right_col{padding:10px 20px;margin-left:70px;z-index:2}.nav-sm .navbar.nav_title{width:70px}.nav-sm .navbar.nav_title a span{display:none}.nav-sm .navbar.nav_title a i{font-size:27px;margin:13px 0 0 3px}.site_title i{border:1px solid #EAEAEA;padding:5px 6px;border-radius:50%}.nav-sm .main_container .top_nav{display:block;margin-left:70px;z-index:2}.nav-sm .nav.side-menu li a{text-align:center!important;font-weight:400;font-size:10px;padding:10px 5px}.nav-sm .nav.child_menu li.active,.nav-sm .nav.side-menu li.active-sm{border-right:5px solid #1ABB9C}.nav-sm .nav.side-menu li.active-sm ul ul,.nav-sm ul.nav.child_menu ul{position:static;width:200px;background:0 0}.nav-sm>.nav.side-menu>li.active-sm>a{color:#1ABB9C!important}.nav-sm .nav.side-menu li a i.toggle-up{display:none!important}.nav-sm .menu_section h3,.nav-sm .profile,.nav-sm .menu_section span.fa{display:none}.nav-sm .nav.side-menu li a i{font-size:25px!important;text-align:center;width:100%!important;margin-bottom:5px}.nav-sm ul.nav.child_menu{left:100%;position:absolute;top:0;width:210px;z-index:4000;background:#3E5367;display:none}.nav-sm ul.nav.child_menu li{padding:0 10px}.nav-sm ul.nav.child_menu li a{text-align:left!important}.menu_section{margin-bottom:35px}.menu_section h3{padding-left:15px;color:#fff;text-transform:uppercase;letter-spacing:.5px;font-weight:700;font-size:11px;margin-bottom:0;margin-top:0;text-shadow:1px 1px #000}.menu_section>ul{margin-top:10px}.profile_pic{width:35%;float:left}.img-circle.profile_img{width:70%;background:#fff;margin-left:15%;z-index:1000;position:inherit;margin-top:20px;border:1px solid rgba(52,73,94,.44);padding:4px}.profile_info{padding:25px 10px 10px;width:65%;float:left}.profile_info span{font-size:13px;line-height:30px;color:#BAB8B8}.profile_info h2{font-size:14px;color:#ECF0F1;margin:0;font-weight:300}.profile.img_2{text-align:center}.profile.img_2 .profile_pic{width:100%}.profile.img_2 .profile_pic .img-circle.profile_img{width:50%;margin:10px 0 0}.profile.img_2 .profile_info{padding:15px 10px 0;width:100%;margin-bottom:10px;float:left}.main_menu span.fa{float:right;text-align:center;margin-top:5px;font-size:10px;min-width:inherit;color:#C4CFDA}.active a span.fa{text-align:right!important;margin-right:4px}.nav-sm .menu_section{margin:0}.nav-sm li li span.fa{display:inline-block}.nav_menu{float:left;background:#EDEDED;border-bottom:1px solid #D9DEE4;margin-bottom:10px;width:100%;position:relative}@media (min-width:480px){.nav_menu{position:static}}.nav-md .container.body .col-md-3.left_col{min-height:100%;width:230px;padding:0;position:absolute;display:-ms-flexbox;display:flex;z-index:1}.nav-md .container.body .col-md-3.left_col.menu_fixed{height:100%;position:fixed}body .container.body .right_col{background:#F7F7F7}.nav-md .container.body .right_col{padding:10px 20px 0;margin-left:230px}.nav_title{width:230px;float:left;background:#2A3F54;border-radius:0;height:57px}@media (max-width:991px){.nav-md .container.body .right_col,.nav-md .container.body .top_nav{width:100%;margin:0}.nav-md .container.body .col-md-3.left_col{display:none}.nav-md .container.body .right_col{width:100%;padding-right:0}.right_col{padding:10px!important}}@media (max-width:1200px){.x_title h2{width:62%;font-size:17px}.graph,.tile{zoom:85%;height:inherit}}@media (max-width:1270px) and (min-width:192px){.x_title h2 small{display:none}}.left_col .mCSB_scrollTools{width:6px}.left_col .mCSB_dragger{max-height:400px!important}.blue{color:#3498DB}.purple{color:#9B59B6}.green{color:#1ABB9C}.aero{color:#9CC2CB}.red{color:#E74C3C}.dark{color:#34495E}.border-blue{border-color:#3498DB!important}.border-purple{border-color:#9B59B6!important}.border-green{border-color:#1ABB9C!important}.border-aero{border-color:#9CC2CB!important}.border-red{border-color:#E74C3C!important}.border-dark{border-color:#34495E!important}.bg-white{background:#fff!important;border:1px solid #fff!important;color:#73879C}.bg-green{background:#1ABB9C!important;border:1px solid #1ABB9C!important;color:#fff}.bg-red{background:#E74C3C!important;border:1px solid #E74C3C!important;color:#fff}.bg-blue{background:#3498DB!important;border:1px solid #3498DB!important;color:#fff}.bg-orange{background:#F39C12!important;border:1px solid #F39C12!important;color:#fff}.bg-purple{background:#9B59B6!important;border:1px solid #9B59B6!important;color:#fff}.bg-blue-sky{background:#50C1CF!important;border:1px solid #50C1CF!important;color:#fff}.container{width:100%;padding:0}.top_nav .nav .open>a,.top_nav .nav .open>a:focus,.top_nav .nav .open>a:hover,.top_nav .nav>li>a:focus,.top_nav .nav>li>a:hover{background:#D9DEE4}body{color:#73879C;background:#2A3F54;font-family:"Helvetica Neue",Roboto,Arial,"Droid Sans",sans-serif;font-size:13px;font-weight:400;line-height:1.471}.main_container .top_nav{display:block;margin-left:230px}.no-padding{padding:0!important}.page-title{width:100%;height:65px;padding:10px 0}.page-title .title_left{width:45%;float:left;display:block}.page-title .title_left h3{margin:9px 0}.page-title .title_right{width:55%;float:left;display:block}.page-title .title_right .pull-right{margin:10px 0}.fixed_height_320{height:320px}.fixed_height_390{height:390px}.fixed_height_200{height:200px}.progress-bar-dark{background-color:#34495E!important}.progress-bar-gray{background-color:#BDC3C7!important}table.no-margin .progress{margin-bottom:0}.main_content{padding:10px 20px}.col-md-55{width:50%;margin-bottom:10px}@media (min-width:768px){.col-md-55{width:20%}}@media (min-width:992px){.col-md-55{width:20%}}@media (min-width:1200px){.col-md-55{width:20%}}@media (min-width:192px) and (max-width:1270px){table.tile_info span.right{margin-right:7px;float:left}}.center-margin{margin:0 auto;float:none!important}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-55,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;float:left;padding-right:10px;padding-left:10px}.row{margin-right:-10px;margin-left:-10px}.grid_slider .col-md-6{padding:0 40px}.h1,.h2,.h3,h1,h2,h3{margin-top:10px;margin-bottom:10px}a{color:#5A738E}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus,:active,:focus,:visited,a,a:active,a:focus,a:visited{outline:0}.navbar{margin-bottom:0}.navbar-header{background:#34495E}.navbar-right{margin-right:0}.top_nav .navbar-right{margin:0;width:70%;float:right}.top_nav .navbar-right li{display:inline-block;float:right;position:static}@media (min-width:480px){.top_nav .navbar-right li{position:relative}}.top_nav .dropdown-menu li{width:100%}.top_nav .dropdown-menu li a{width:100%;padding:12px 20px}.top_nav li a i{font-size:15px}.navbar-static-top{position:fixed;top:0;width:100%}.sidebar-header{border-bottom:0;margin-top:46px}.sidebar-header:first-of-type{margin-top:0}.nav.side-menu>li{position:relative;display:block;cursor:pointer}.nav.side-menu>li>a{margin-bottom:6px}.nav.side-menu>li>a:hover{color:#F2F5F7!important}.nav.side-menu>li>a:hover,.nav>li>a:focus{text-decoration:none;background:0 0}.nav.child_menu{display:none}.nav.child_menu li.active,.nav.child_menu li:hover{background-color:rgba(255,255,255,.06)}.nav.child_menu li{padding-left:36px}.nav-md ul.nav.child_menu li:before{background:#425668;bottom:auto;content:"";height:8px;left:23px;margin-top:15px;position:absolute;right:auto;width:8px;z-index:1;border-radius:50%}.nav-md ul.nav.child_menu li:after{border-left:1px solid #425668;bottom:0;content:"";left:27px;position:absolute;top:0}.nav.top_menu>li>a,.nav>li>a{position:relative;display:block}.nav.child_menu>li>a,.nav.side-menu>li>a{color:#E7E7E7;font-weight:500}.nav li li.current-page a,.nav.child_menu li li a.active,.nav.child_menu li li a:hover{color:#fff}.nav.child_menu li li.active,.nav.child_menu li li:hover{background:0 0}.nav>li>a{padding:13px 15px 12px}.nav.side-menu>li.active,.nav.side-menu>li.current-page{border-right:5px solid #1ABB9C}.nav li.current-page{background:rgba(255,255,255,.05)}.nav li li li.current-page{background:0 0}.navbar-brand,.navbar-nav>li>a,.site_title{color:#ECF0F1!important;margin-left:0!important}.nav.side-menu>li.active>a{text-shadow:rgba(0,0,0,.25) 0 -1px 0;background:linear-gradient(#334556,#2C4257),#2A3F54;box-shadow:rgba(0,0,0,.25) 0 1px 0,inset rgba(255,255,255,.16) 0 1px 0}.navbar-brand,.navbar-nav>li>a{font-weight:500;line-height:32px}.site_title{font-weight:400;font-size:22px;width:100%;line-height:59px;display:block;height:55px;margin:0;padding-left:10px}.nav.navbar-nav>li>a{color:#515356!important}.nav.top_menu>li>a{padding:10px 15px;color:#34495E!important}.nav>li>a:focus,.nav>li>a:hover{background-color:transparent}.top_search{padding:0}.top_search .form-control{box-shadow:inset 0 1px 0 rgba(0,0,0,.075);border-radius:25px 0 0 25px;padding-left:20px;border:1px solid rgba(221,226,232,.49)}.top_search .form-control:focus{border:1px solid rgba(221,226,232,.49);border-right:0}.top_search .input-group-btn button{border-radius:0 25px 25px 0;border:1px solid rgba(221,226,232,.49);border-left:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);color:#93A2B2;margin-bottom:0!important}.tiles,.top_tiles{margin-bottom:0}.toggle{float:left;margin:0;padding-top:16px;width:70px}.toggle a{padding:15px 15px 0;margin:0;cursor:pointer}.toggle a i{font-size:26px}.nav.child_menu>li>a{color:rgba(255,255,255,.75);font-size:12px;padding:9px}.panel_toolbox{float:right;min-width:70px}.panel_toolbox>li{float:left;cursor:pointer}.panel_toolbox>li>a{padding:5px;color:#C5C7CB;font-size:14px}.panel_toolbox>li>a:hover{background:#F5F7FA}.line_30{line-height:30px}.main_menu_side{padding:0}.bs-docs-sidebar .nav>li>a{display:block;padding:4px 6px}footer{background:#fff;padding:15px 20px;display:block}.nav-sm footer{margin-left:70px}.footer_fixed footer{position:fixed;left:0;bottom:0;width:100%}.degrees:after,.x_content,.x_panel{position:relative}@media (min-width:768px){.footer_fixed .nav-sm footer,.footer_fixed footer{margin-left:0}}.tile-stats.sparkline{padding:10px;text-align:center}.jqstooltip{background:#34495E!important;width:30px!important;height:22px!important}.tooltip{display:block!important}.tiles{border-top:1px solid #ccc;margin-top:15px;padding-top:5px}.top_tiles .tile h2{font-size:30px;line-height:30px;margin:3px 0 7px;font-weight:700}article.media{width:100%}*,:after,:before{box-sizing:border-box}#integration-list{width:100%;margin:0 auto;display:table}#integration-list ul{padding:0;margin:20px 0;color:#555}#integration-list ul>li{list-style:none;border-top:1px solid #ddd;display:block;padding:15px;overflow:hidden}#integration-list ul:last-child{border-bottom:1px solid #ddd}#integration-list ul>li:hover{background:#efefef}.expand{display:block;color:#555;cursor:pointer}.expand h2{width:85%;float:left}h2{font-size:18px;font-weight:400}#left,#right{display:table}#sup{display:table-cell;vertical-align:middle;width:80%}.detail a{color:#C0392B;border:1px solid #C0392B;padding:6px 10px 5px;font-size:13px;margin-right:7px}.detail{margin:10px 0;display:none;line-height:22px;height:150px}.detail span{margin:0}.right-arrow{width:10px;float:right;font-weight:700;font-size:20px}.accordion .panel{margin-bottom:5px;border-radius:0;border-bottom:1px solid #efefef}.x_panel,.x_title{margin-bottom:10px}.accordion .panel-heading{background:#F2F5F7;padding:13px;width:100%;display:block}.accordion .panel:hover{background:#F2F5F7}.x_panel{width:100%;padding:10px 17px;display:inline-block;background:#fff;border:1px solid #E6E9ED;-webkit-column-break-inside:avoid;-moz-column-break-inside:avoid;column-break-inside:avoid;opacity:1;transition:all .2s ease}.x_title{border-bottom:2px solid #E6E9ED;padding:1px 5px 6px}.x_title .filter{width:40%;float:right}.x_content,table.tile td ul li a,table.tile_info{width:100%}.x_title h2{margin:5px 0 6px;float:left;display:block}.x_title h2 small{margin-left:10px}.x_title span{color:#BDBDBD}.x_content{padding:0 5px 6px;float:left;clear:both;margin-top:5px}.x_content h4{font-size:16px;font-weight:500}legend{padding-bottom:7px}.demo-placeholder{height:280px}.profile_details:nth-child(3n){clear:both}.profile_details .profile_view{display:inline-block;padding:10px 0 0;background:#fff}.profile_details .profile_view .divider{border-top:1px solid #e5e5e5;padding-top:5px;margin-top:5px}.profile_details .profile_view .ratings{margin-bottom:0;text-align:left;font-size:16px}.profile_details .profile_view .bottom{background:#F2F5F7;padding:9px 0;border-top:1px solid #E6E9ED}.profile_details .profile_view .left{margin-top:20px}.profile_details .profile_view .left p{margin-bottom:3px}.profile_details .profile_view .right{margin-top:0;padding:10px}.profile_details .profile_view .img-circle{border:1px solid #E6E9ED;padding:2px}.profile_details .profile_view h2{margin:5px 0}.profile_details .profile_view .brief{margin:0;font-weight:300}.profile_details .profile_left{background:#fff}.pagination.pagination-split li{display:inline-block;margin-right:3px}.pagination.pagination-split li a{border-radius:4px;color:#768399;-moz-border-radius:4px;-webkit-border-radius:4px}table.tile h3,table.tile h4,table.tile span{font-weight:700;vertical-align:middle!important}table.tile td,table.tile th{text-align:center}table.tile th{border-bottom:1px solid #E6ECEE}table.tile td{padding:5px 0}table.tile td ul{text-align:left;padding-left:0}table.tile td ul li{list-style:none;width:100%}table.tile td ul li a big{right:0;float:right;margin-right:13px}table.tile_info td{text-align:left;padding:1px;font-size:15px}table.tile_info td p{margin:0;line-height:28px}table.tile_info td i{margin-right:8px;font-size:17px;float:left;width:18px;line-height:28px}table.tile_info td:first-child{width:83%}td span{line-height:28px}.error-number{font-size:90px;line-height:90px;margin:20px 0}.col-middle{margin-top:5%}.mid_center{width:370px;margin:0 auto;text-align:center;padding:10px 20px}h3.degrees{font-size:22px;font-weight:400;text-align:center}.degrees:after{content:"o";top:-12px;font-size:13px;font-weight:300}.daily-weather .day{font-size:14px;border-top:2px solid rgba(115,135,156,.36);text-align:center;border-bottom:2px solid rgba(115,135,156,.36);padding:5px 0}.weather-days .col-sm-2{width:16.66666667%}.weather .row{margin-bottom:0}.bulk-actions{display:none}table.countries_list{width:100%}table.countries_list td{padding:0 10px;line-height:30px;border-top:1px solid #eee}.dataTables_paginate a{padding:6px 9px!important;background:#ddd!important;border-color:#ddd!important}.paging_full_numbers a.paginate_active{background-color:rgba(38,185,154,.59)!important;border-color:rgba(38,185,154,.59)!important}a.DTTT_button,button.DTTT_button,div.DTTT_button{border:1px solid #E7E7E7!important;background:#E7E7E7!important;box-shadow:none!important}table.jambo_table{border:1px solid rgba(221,221,221,.78)}table.jambo_table thead{background:rgba(52,73,94,.94);color:#ECF0F1}table.jambo_table tbody tr:hover td{background:rgba(38,185,154,.07);border-top:1px solid rgba(38,185,154,.11);border-bottom:1px solid rgba(38,185,154,.11)}table.jambo_table tbody tr.selected{background:rgba(38,185,154,.16)}table.jambo_table tbody tr.selected td{border-top:1px solid rgba(38,185,154,.4);border-bottom:1px solid rgba(38,185,154,.4)}.dataTables_wrapper{position:relative;clear:both;zoom:1}.dataTables_processing{position:absolute;top:50%;left:50%;width:250px;height:30px;margin-left:-125px;margin-top:-15px;padding:14px 0 2px;border:1px solid #ddd;text-align:center;color:#999;font-size:14px;background-color:#fff}td.details,td.group{background-color:#d1cfd0}.dataTables_length{width:40%;float:left}.dataTables_filter{width:50%;float:right;text-align:right}.dataTables_info{width:60%;float:left}.dataTables_paginate{float:right;text-align:right}.dataTables_empty,table.display td.center{text-align:center}table.dataTable td.focus,table.dataTable th.focus{outline:#1ABB9C solid 2px!important;outline-offset:-1px}.paging_full_numbers a:active,table.display thead td:active,table.display thead th:active{outline:0}table.display{margin:0 auto;clear:both;width:100%}table.display thead th{padding:8px 18px 8px 10px;border-bottom:1px solid #000;font-weight:700;cursor:pointer}table.display tfoot th{padding:3px 18px 3px 10px;border-top:1px solid #000;font-weight:700}table.display tr.heading2 td{border-bottom:1px solid #aaa}table.display td{padding:3px 10px}.dataTables_scroll{clear:both}.dataTables_scrollBody{-webkit-overflow-scrolling:touch}.top .dataTables_info{float:none}.clear{clear:both}tfoot input{margin:.5em 0;width:100%;color:#444}tfoot input.search_init{color:#999}td.group{border-bottom:2px solid #A19B9E;border-top:2px solid #A19B9E}td.details{border:2px solid #A19B9E}.example_alt_pagination div.dataTables_info{width:40%}.paging_full_numbers{width:400px;height:22px;line-height:22px}.paging_full_numbers a.paginate_active,.paging_full_numbers a.paginate_button{border:1px solid #aaa;-webkit-border-radius:5px;-moz-border-radius:5px;padding:2px 5px;margin:0 3px;cursor:pointer}.paging_full_numbers a.paginate_button{background-color:#ddd}.paging_full_numbers a.paginate_button:hover{background-color:#ccc;text-decoration:none!important}.login_content .btn-default:hover,.login_content a,.tagsinput span.tag a,.tile-stats>.dash-box-footer,.tile:hover,.view a.info,span.tag{text-decoration:none}table.display tr.even.row_selected td{background-color:#B0BED9}table.display tr.odd.row_selected td{background-color:#9FAFD1}div.box{height:100px;padding:10px;overflow:auto;border:1px solid #8080FF;background-color:#E5E5FF}ul.msg_list li{background:#f7f7f7;padding:5px;display:-ms-flexbox;display:flex;margin:6px 6px 0;width:96%!important}ul.msg_list li:last-child{margin-bottom:6px;padding:10px}ul.msg_list li a{padding:3px 5px!important}ul.msg_list li a .image img{border-radius:2px;-webkit-border-radius:2px;float:left;margin-right:10px;width:11%}ul.msg_list li a .time{font-size:11px;font-style:italic;font-weight:700;position:absolute;right:35px}ul.msg_list li a .message{display:block!important;font-size:11px}.dropdown-menu.msg_list span{white-space:normal}.tile_count .tile_stats_count,ul.quick-list li{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dropdown-menu{box-shadow:none;display:none;float:left;font-size:12px;left:0;list-style:none;padding:0;position:absolute;text-shadow:none;top:100%;z-index:9998;border:1px solid #D9DEE4;border-top-left-radius:0;border-top-right-radius:0}.dropdown-menu>li>a{color:#5A738E}.navbar-nav .open .dropdown-menu{position:absolute;background:#fff;margin-top:0;border:1px solid #D9DEE4;-webkit-box-shadow:none;right:0;left:auto;width:220px}.navbar-nav .open .dropdown-menu.msg_list{width:300px}.info-number .badge{font-size:10px;font-weight:400;line-height:13px;padding:2px 6px;position:absolute;right:2px;top:8px}ul.to_do{padding:0}ul.to_do li{background:#f3f3f3;border-radius:3px;position:relative;padding:7px;margin-bottom:5px;list-style:none}ul.to_do p{margin:0}.dashboard-widget{background:#f6f6f6;border-top:5px solid #79C3DF;border-radius:3px;padding:5px 10px 10px}.dashboard-widget .dashboard-widget-title{font-weight:400;border-bottom:1px solid #c1cdcd;margin:0 0 10px;padding-bottom:5px;padding-left:40px;line-height:30px}.dashboard-widget .dashboard-widget-title i{font-size:100%;margin-left:-35px;margin-right:10px;color:#33a1c9;padding:3px 6px;border:1px solid #abd9ea;border-radius:5px;background:#fff}ul.quick-list{width:45%;padding-left:0;display:inline-block}ul.quick-list li{padding-left:10px;list-style:none;margin:0;padding-bottom:6px;padding-top:4px}ul.quick-list li i{padding-right:10px;color:#757679}.dashboard-widget-content{padding-top:9px}.dashboard-widget-content .sidebar-widget{width:50%;display:inline-block;vertical-align:top;background:#fff;border:1px solid #abd9ea;border-radius:5px;text-align:center;float:right;padding:2px;margin-top:10px}.widget_summary{width:100%;display:-ms-inline-flexbox;display:inline-flex}.widget_summary .w_left{float:left;text-align:left}.widget_summary .w_center{float:left}.widget_summary .w_right{float:left;text-align:right}.widget_summary .w_right span{font-size:20px}.w_20{width:20%}.w_25{width:25%}.w_55{width:55%}h5.graph_title{text-align:left;margin-left:10px}h5.graph_title i{margin-right:10px;font-size:17px}span.right{float:right;font-size:14px!important}.tile_info a{text-overflow:ellipsis}.sidebar-footer{bottom:0;clear:both;display:block;padding:5px 0 0;position:fixed;width:230px;background:#2A3F54;z-index:999}.sidebar-footer a{padding:7px 0 3px;text-align:center;width:25%;font-size:17px;display:block;float:left;background:#172D44;cursor:pointer}.sidebar-footer a:hover{background:#425567}.tile_count{margin-bottom:20px;margin-top:20px}.tile_count .tile_stats_count{border-bottom:1px solid #D9DEE4;padding:0 10px 0 20px;position:relative}.tile_count .tile_stats_count:before{content:"";position:absolute;left:0;height:65px;border-left:2px solid #ADB2B5;margin-top:10px}@media (min-width:992px){footer{margin-left:230px}.tile_count .tile_stats_count{margin-bottom:10px;border-bottom:0;padding-bottom:10px}.tile_count .tile_stats_count:first-child:before{border-left:0}}.tile_count .tile_stats_count .count{font-size:30px;line-height:47px;font-weight:600}@media (min-width:768px){.tile_count .tile_stats_count .count{font-size:40px}}@media (min-width:992px) and (max-width:1100px){.tile_count .tile_stats_count .count{font-size:30px}}.tile_count .tile_stats_count span{font-size:12px}@media (min-width:768px){.tile_count .tile_stats_count span{font-size:13px}}.tile_count .tile_stats_count .count_bottom i{width:12px}.dashboard_graph{background:#fff;padding:7px 10px}.dashboard_graph .col-md-3,.dashboard_graph .col-md-9{padding:0}a.user-profile{color:#5E6974!important}.user-profile img{width:29px;height:29px;border-radius:50%;margin-right:10px}ul.top_profiles{height:330px;width:100%}ul.top_profiles li{margin:0;padding:3px 5px}ul.top_profiles li:nth-child(odd){background-color:#eee}.media .profile_thumb{border:1px solid;width:50px;height:50px;margin:5px 10px 5px 0;border-radius:50%;padding:9px 12px}.media .profile_thumb i{font-size:30px}.media .date{background:#ccc;width:52px;margin-right:10px;border-radius:10px;padding:5px}.media .date .day,.media .date .month{margin:0;text-align:center;color:#fff}.media .date .day{font-size:27px;line-height:27px;font-weight:700}.event .media-body a.title{font-weight:700}.event .media-body p{margin-bottom:0}h4.graph_title{margin:7px;text-align:center}.fontawesome-icon-list .fa-hover a:hover{background-color:#ddd;color:#fff;text-decoration:none}.fontawesome-icon-list .fa-hover a{display:block;line-height:32px;height:32px;padding-left:10px;border-radius:4px}.fontawesome-icon-list .fa-hover a:hover .fa{font-size:28px;vertical-align:-6px}.fontawesome-icon-list .fa-hover a .fa{width:32px;font-size:16px;display:inline-block;text-align:right;margin-right:10px}.main_menu .fa{width:26px;opacity:.99;display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;font-size:18px;-moz-osx-font-smoothing:grayscale}.tile-stats{position:relative;display:block;margin-bottom:12px;border:1px solid #E4E4E4;-webkit-border-radius:5px;overflow:hidden;padding-bottom:5px;-webkit-background-clip:padding-box;-moz-border-radius:5px;-moz-background-clip:padding;border-radius:5px;background:#FFF;transition:all .3s ease-in-out}.tile-stats:hover .icon i{animation-name:transformAnimation;animation-duration:.5s;animation-iteration-count:1;color:rgba(58,58,58,.41);animation-timing-function:ease;animation-fill-mode:forwards;-webkit-animation-name:transformAnimation;-webkit-animation-duration:.5s;-webkit-animation-iteration-count:1;-webkit-animation-timing-function:ease;-webkit-animation-fill-mode:forwards;-moz-animation-name:transformAnimation;-moz-animation-duration:.5s;-moz-animation-iteration-count:1;-moz-animation-timing-function:ease;-moz-animation-fill-mode:forwards}.tile-stats .icon{width:20px;height:20px;color:#BAB8B8;position:absolute;right:53px;top:22px;z-index:1}.tile-stats .icon i{margin:0;font-size:60px;line-height:0;vertical-align:bottom;padding:0}.tile-stats .count{font-size:38px;font-weight:700;line-height:1.65857}.tile-stats .count,.tile-stats h3,.tile-stats p{position:relative;margin:0 0 0 10px;z-index:5;padding:0}.tile-stats h3{color:#BAB8B8}.tile-stats p{margin-top:5px;font-size:12px}.tile-stats>.dash-box-footer{position:relative;text-align:center;margin-top:5px;padding:3px 0;color:#fff;color:rgba(255,255,255,.8);display:block;z-index:10;background:rgba(0,0,0,.1)}.tile-stats>.dash-box-footer:hover{color:#fff;background:rgba(0,0,0,.15)}table.tile_info{padding:10px 15px}table.tile_info span.right{margin-right:0;float:right;position:absolute;right:4%}.tile_header{border-bottom:transparent;padding:7px 15px;margin-bottom:15px;background:#E7E7E7}.tile_head h4{margin-top:0;margin-bottom:5px}.tiles-bottom{padding:5px 10px;margin-top:10px;background:rgba(194,194,194,.3);text-align:left}a.star{color:#428bca!important}.mail_content{background:#FFF;border-radius:4px;margin-top:20px;min-height:500px;padding:10px 11px;width:100%}.list-btn-mail{margin-bottom:15px}.list-btn-mail.active{border-bottom:1px solid #39B3D7;padding:0 0 14px}.list-btn-mail>i{float:left;font-size:18px;font-style:normal;width:33px}.list-btn-mail>.cn{background:#39B3D7;border-radius:12px;color:#FFF;float:right;font-style:normal;padding:0 5px}.byline,.view p{font-style:italic}.button-mail{margin:0 0 15px!important;text-align:left;width:100%}.btn,.buttons,.modal-footer .btn+.btn,button{margin-bottom:5px;margin-right:5px}.btn-group .btn,.btn-group-vertical .btn{margin-bottom:0;margin-right:0}.mail_list_column,.mail_view{border-left:1px solid #DBDBDB}.mail_list{width:100%;border-bottom:1px solid #DBDBDB;margin-bottom:2px;display:inline-block}.mail_list .left{width:5%;float:left;margin-right:3%}.mail_list .right{width:90%;float:left}.mail_list h3{font-size:15px;font-weight:700;margin:0 0 6px}.mail_list h3 small{float:right;color:#ADABAB;font-size:11px;line-height:20px}.mail_list .badge{padding:3px 6px;font-size:8px;background:#BAB7B7}@media (max-width:767px){.mail_list{margin-bottom:5px;display:inline-block}}.mail_heading h4{font-size:18px;border-bottom:1px solid #ddd;padding-bottom:10px;margin-top:20px}.attachment{margin-top:30px}.attachment ul{width:100%;list-style:none;padding-left:0;display:inline-block;margin-bottom:30px}.attachment ul li{float:left;width:150px;margin-right:10px;margin-bottom:10px}.attachment ul li img{height:150px;border:1px solid #ddd;padding:5px;margin-bottom:10px}.attachment ul li span{float:right}.attachment .file-name{float:left}.attachment .links{width:100%;display:inline-block}.compose{padding:0;position:fixed;bottom:0;right:0;background:#fff;border:1px solid #D9DEE4;border-right:0;border-bottom:0;border-top-left-radius:5px;z-index:9999;display:none}.compose .compose-header{padding:5px;background:#169F85;color:#fff;border-top-left-radius:5px}.compose .compose-header .close{text-shadow:0 1px 0 #fff;line-height:.8}.compose .compose-body .editor.btn-toolbar{margin:0}.compose .compose-body .editor-wrapper{height:100%;min-height:50px;max-height:180px;border-radius:0;border-left:none;border-right:none;overflow:auto}.compose .compose-footer{padding:10px}.editor.btn-toolbar{zoom:1;background:#F7F7F7;margin:5px 2px;padding:3px 0;border:1px solid #EFEFEF}.input-group{margin-bottom:10px}.ln_solid{border-top:1px solid #e5e5e5;color:#fff;background-color:#fff;height:1px;margin:20px 0}span.section{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}.form-control{border-radius:0;width:100%}.form-horizontal .control-label{padding-top:8px}.form-control:focus{border-color:#CCD0D7;box-shadow:none!important}legend{font-size:18px;color:inherit}.form-horizontal .form-group{margin-right:0;margin-left:0}.form-control-feedback{margin-top:8px;height:23px;color:#bbb;line-height:24px;font-size:15px}.form-control-feedback.left{border-right:1px solid #ccc;left:13px}.form-control-feedback.right{border-left:1px solid #ccc;right:13px}.form-control.has-feedback-left{padding-left:45px}.form-control.has-feedback-right{padding-right:45px}.form-group{margin-bottom:10px}.validate{margin-top:10px}.invalid-form-error-message{margin-top:10px;padding:5px}.invalid-form-error-message.filled{border-left:2px solid #E74C3C}p.parsley-success{color:#468847;background-color:#DFF0D8;border:1px solid #D6E9C6}p.parsley-error{color:#B94A48;background-color:#F2DEDE;border:1px solid #EED3D7}ul.parsley-errors-list{list-style:none;color:#E74C3C;padding-left:0}input.parsley-error,select.parsley-error,textarea.parsley-error{background:#FAEDEC;border:1px solid #E85445}.btn-group .parsley-errors-list{display:none}.bad input,.bad select,.bad textarea{border:1px solid #CE5454;box-shadow:0 0 4px -2px #CE5454;position:relative;left:0;-moz-animation:.7s 1 shake linear;-webkit-animation:.7s 1 shake linear}.item input,.item textarea{transition:.42s}.item .alert{float:left;margin:0 0 0 20px;padding:3px 10px;color:#FFF;border-radius:3px 4px 4px 3px;background-color:#CE5454;max-width:170px;white-space:pre;position:relative;left:-15px;opacity:0;z-index:1;transition:.15s ease-out}.item .alert::after{content:'';display:block;height:0;width:0;border-color:transparent #CE5454 transparent transparent;border-style:solid;border-width:11px 7px;position:absolute;left:-13px;top:1px}.item.bad .alert{left:0;opacity:1}.inl-bl{display:inline-block}.well .markup{background:#fff;color:#777;position:relative;padding:45px 15px 15px;margin:15px 0 0;border-radius:0 0 4px 4px;box-shadow:none}.well .markup::after{content:"Example";position:absolute;top:15px;left:15px;font-size:12px;font-weight:700;color:#bbb;text-transform:uppercase;letter-spacing:1px}.autocomplete-suggestions{border:1px solid #e4e4e4;background:#F4F4F4;cursor:default;overflow:auto}.autocomplete-suggestion{padding:2px 5px;font-size:1.2em;white-space:nowrap;overflow:hidden}.autocomplete-selected{background:#f0f0f0}.autocomplete-suggestions strong{color:#39f;font-weight:bolder}.btn{border-radius:3px}a.btn-danger,a.btn-primary,a.btn-success,a.btn-warning{color:#fff}.btn-success{background:#26B99A;border:1px solid #169F85}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{background:#169F85}.btn-dark{color:#E9EDEF;background-color:#4B5F71;border-color:#364B5F}.btn-dark.active,.btn-dark:active,.btn-dark:focus,.btn-dark:hover,.open .dropdown-toggle.btn-dark{color:#FFF;background-color:#394D5F;border-color:#394D5F}.btn-round{border-radius:30px}.btn.btn-app{position:relative;padding:15px 5px;margin:0 0 10px 10px;min-width:80px;height:60px;box-shadow:none;border-radius:0;text-align:center;color:#666;border:1px solid #ddd;background-color:#fafafa;font-size:12px}.btn.btn-app>.fa,.btn.btn-app>.glyphicon,.btn.btn-app>.ion{font-size:20px;display:block}.btn.btn-app:hover{background:#f4f4f4;color:#444;border-color:#aaa}.btn.btn-app:active,.btn.btn-app:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.btn-app>.badge{position:absolute;top:-3px;right:-10px;font-size:10px;font-weight:400}textarea{padding:10px;vertical-align:top;width:200px}textarea:focus{outline-style:solid;outline-width:2px}.btn_{display:inline-block;padding:3px 9px;margin-bottom:0;font-size:14px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333;text-shadow:0 1px 1px rgba(255,255,255,.75);background-color:#f5f5f5;background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;filter:progid: DXImageTransform.Microsoft.gradient(enabled=false);border:1px solid #ccc;border-bottom-color:#b3b3b3;border-radius:4px;box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.bs-glyphicons{margin:0 -10px 20px;overflow:hidden}.bs-glyphicons-list{padding-left:0;list-style:none}.bs-glyphicons li{float:left;width:25%;height:115px;padding:10px;font-size:10px;line-height:1.4;text-align:center;background-color:#f9f9f9;border:1px solid #fff}.bs-glyphicons .glyphicon{margin-top:5px;margin-bottom:10px;font-size:24px}.bs-glyphicons .glyphicon-class{display:block;text-align:center;word-wrap:break-word}.bs-glyphicons li:hover{color:#fff;background-color:#1ABB9C}@media (min-width:768px){.bs-glyphicons{margin-right:0;margin-left:0}.bs-glyphicons li{width:12.5%;font-size:12px}}.tagsinput{border:1px solid #CCC;background:#FFF;padding:6px 6px 0;width:300px;overflow-y:auto}span.tag{-moz-border-radius:2px;-webkit-border-radius:2px;display:block;float:left;padding:5px 9px;background:#1ABB9C;color:#F1F6F7;margin-right:5px;font-weight:500;margin-bottom:5px;font-family:helvetica}span.tag a{color:#F1F6F7!important}.tagsinput span.tag a{font-weight:700;color:#82ad2b;font-size:11px}.tagsinput input{width:80px;margin:0;font-family:helvetica;font-size:13px;border:1px solid transparent;padding:3px;background:0 0;color:#000;outline:0}.tagsinput div{display:block;float:left}.social-body,.social-sidebar,ul.bar_tabs.right li{float:right}.tags_clear{clear:both;width:100%;height:0}.not_valid{background:#FBD8DB!important;color:#90111A!important}ul.bar_tabs{overflow:visible;background:#F5F7FA;height:25px;margin:21px 0 14px;padding-left:14px;position:relative;z-index:1;width:100%;border-bottom:1px solid #E6E9ED}ul.bar_tabs>li{border:1px solid #E6E9ED;color:#333!important;margin-top:-17px;margin-left:8px;background:#fff;border-bottom:none;border-radius:4px 4px 0 0}ul.bar_tabs>li.active{border-right:6px solid #D3D6DA;border-top:0;margin-top:-15px}ul.bar_tabs>li a{padding:10px 17px;background:#F5F7FA;margin:0;border-top-right-radius:0}ul.bar_tabs>li a:hover{border:1px solid transparent}ul.bar_tabs>li.active a{border-bottom:none}ul.bar_tabs.right{padding-right:14px}a:focus{outline:0}ul.timeline li{position:relative;border-bottom:1px solid #e8e8e8;clear:both}.timeline .block{margin:0 0 0 105px;border-left:3px solid #e8e8e8;overflow:visible;padding:10px 15px}.timeline.widget{min-width:0;max-width:inherit}.timeline.widget .block{margin-left:5px}.timeline .tags{position:absolute;top:15px;left:0;width:84px}.timeline .tag{display:block;height:30px;font-size:13px;padding:8px}.timeline .tag span{display:block;overflow:hidden;width:100%;white-space:nowrap;text-overflow:ellipsis}.tag{line-height:1;background:#1ABB9C;color:#fff!important}.tag:after{content:" ";height:30px;width:0;position:absolute;left:100%;top:0;margin:0;pointer-events:none;border-top:14px solid transparent;border-bottom:14px solid transparent;border-left:11px solid #1ABB9C}.timeline h2.title{position:relative;font-size:16px;margin:0}.timeline h2.title:before{content:"";position:absolute;left:-23px;top:3px;display:block;width:14px;height:14px;border:3px solid #d2d3d2;border-radius:14px;background:#f9f9f9}.timeline .byline{padding:.25em 0}.byline{font-size:.9375em;line-height:1.3;color:#aab6aa}ul.social li{border:0}.social-sidebar{background:#EDEDED;width:22%}.social-body{border:1px solid #ccc;width:78%}.thumb img{width:50px;height:50px;border-radius:50%}.chat .thumb img{width:27px;height:27px;border-radius:50%}.chat .status{float:left;margin:16px 0 0 -16px;font-size:14px;font-weight:700;width:12px;height:12px;display:block;border:2px solid #FFF;z-index:12312;border-radius:50%}.chart,.percent{display:inline-block}.chat .status.online{background:#1ABB9C}.chat .status.away{background:#F39C12}.chat .status.offline{background:#ccc}.chat .media-body{padding-top:5px}.dashboard_graph .x_title{padding:5px 5px 7px}.dashboard_graph .x_title h3{margin:0;font-weight:400}.chart{position:relative;width:110px;height:110px;margin-top:5px;margin-bottom:5px;text-align:center}.chart canvas{position:absolute;top:0;left:0}.percent{line-height:110px;z-index:2;font-size:18px}.percent:after{content:'%';margin-left:.1em;font-size:.8em}.angular{margin-top:100px}.angular .chart{margin-top:0}.widget{min-width:250px;max-width:310px}.widget_tally_box .btn-group button{text-align:center;color:inherit;font-weight:500;background-color:#f5f5f5;border:1px solid #e7e7e7}ul.widget_tally,ul.widget_tally li{width:100%}ul.widget_tally li{padding:2px 10px 4px;border-bottom:1px solid #ECECEC}ul.widget_tally .month{width:70%;float:left}ul.widget_tally .count{width:30%;float:left;text-align:right}.pie_bg{border-bottom:1px solid rgba(101,204,182,.16);border-radius:4px;filter:progid: DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);filter:progid: DXImageTransform.Microsoft.gradient(enabled=false);padding-bottom:10px;box-shadow:0 4px 6px -6px #222}.widget_tally_box .flex{display:-ms-flexbox;display:flex}ul.widget_profile_box{width:100%;height:42px;padding:3px;background:#ececec;margin-top:40px;margin-left:1px}ul.widget_profile_box li:first-child{width:25%;float:left}ul.widget_profile_box li:first-child a{float:left}ul.widget_profile_box li:last-child{width:25%;float:right}ul.widget_profile_box li:last-child a{float:right}ul.widget_profile_box li a{font-size:22px;text-align:center;width:35px;height:35px;border:1px solid rgba(52,73,94,.44);display:block;border-radius:50%;padding:0}ul.widget_profile_box li a:hover{color:#1ABB9C!important;border:1px solid #26b99a}ul.widget_profile_box li .profile_img{width:85px;height:85px;margin:-28px 0 0}.widget_tally_box p,.widget_tally_box span{text-align:center}.widget_tally_box .name{text-align:center;margin:25px}.widget_tally_box .name_title{text-align:center;margin:5px}.widget_tally_box ul.legend{margin:0}.widget_tally_box ul.legend p,.widget_tally_box ul.legend span{text-align:left}.widget_tally_box ul.legend li .icon{font-size:20px;float:left;width:14px}.widget_tally_box ul.legend li .name{font-size:14px;margin:5px 0 0 14px;text-overflow:ellipsis;float:left}.widget_tally_box ul.legend p{display:inline-block;margin:0}.widget_tally_box ul.verticle_bars li{height:140px;width:23%}.widget .verticle_bars li .progress.vertical.progress_wide{width:65%}ul.count2{width:100%;margin-left:1px;border:1px solid #ddd;border-left:0;border-right:0;padding:10px 0}ul.count2 li{width:30%;text-align:center}ul.count2 li h3{font-weight:400;margin:0}ul.count2 li span{font-weight:300}.divider{border-bottom:1px solid #ddd;margin:10px}.divider-dashed{border-top:1px dashed #e7eaec;background-color:#fff;height:1px;margin:10px 0}ul.messages{padding:0;list-style:none}.tasks li,ul.messages li{border-bottom:1px dotted #e6e6e6;padding:8px 0}img.avatar,ul.messages li img.avatar{height:32px;width:32px;float:left;display:inline-block;border-radius:2px;padding:2px;background:#f7f7f7;border:1px solid #e6e6e6}ul.messages li .message_date{float:right;text-align:right}ul.messages li .message_wrapper{margin-left:50px;margin-right:40px}ul.messages li .message_wrapper h4.heading{font-weight:600;margin:0 0 10px;cursor:pointer;line-height:100%}ul.messages li .message_wrapper blockquote{padding:0 10px;margin:0;border-left:5px solid #eee}ul.user_data li{margin-bottom:6px}ul.user_data li p{margin-bottom:0}ul.user_data li .progress{width:90%}.project_progress .progress{margin-bottom:3px!important;margin-top:5px}.projects .list-inline{margin:0}.profile_title{background:#F5F7FA;border:0;padding:7px 0;display:-ms-flexbox;display:flex}ul.stats-overview{border-bottom:1px solid #e8e8e8;padding-bottom:10px;margin-bottom:10px}ul.stats-overview li{display:inline-block;text-align:center;padding:0 15px;width:30%;font-size:14px;border-right:1px solid #e8e8e8}ul.stats-overview li:last-child{border-right:0}ul.stats-overview li .name{font-size:12px}ul.stats-overview li .value{font-size:14px;font-weight:700;display:block}ul.stats-overview li:first-child{padding-left:0}ul.project_files li{margin-bottom:5px}ul.project_files li a i{width:20px}.project_detail p{margin-bottom:10px}.project_detail p.title{font-weight:700;margin-bottom:0}.avatar img{border-radius:50%;max-width:45px}.pricing{background:#fff}.pricing .title{background:#1ABB9C;height:110px;color:#fff;padding:15px 0 0;text-align:center}.pricing .title h2{text-transform:capitalize;font-size:18px;border-radius:5px 5px 0 0;margin:0;font-weight:400}.notifications a,.tabbed_notifications h2,.view .tools,.view a.info{text-transform:uppercase}.pricing .title h1{font-size:30px;margin:12px}.pricing .title span{background:rgba(51,51,51,.28);padding:2px 5px}.pricing_features{background:#FAFAFA;padding:20px 15px;min-height:230px;font-size:13.5px}.pricing_features ul li{margin-top:10px}.pricing_footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;text-align:center;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.pricing_footer p{font-size:13px;padding:10px 0 2px;display:block}.ui-ribbon-container{position:relative}.ui-ribbon-container .ui-ribbon-wrapper{position:absolute;overflow:hidden;width:85px;height:88px;top:-3px;right:-3px}.ui-ribbon-container.ui-ribbon-primary .ui-ribbon{background-color:#5b90bf}.ui-ribbon-container .ui-ribbon{position:relative;display:block;text-align:center;font-size:15px;font-weight:700;color:#fff;transform:rotate(45deg);padding:7px 0;left:-5px;top:15px;width:120px;line-height:20px;background-color:#555;box-shadow:0 0 3px rgba(0,0,0,.3)}.ui-ribbon-container.ui-ribbon-primary .ui-ribbon:after,.ui-ribbon-container.ui-ribbon-primary .ui-ribbon:before{border-top:2px solid #5b90bf}.ui-ribbon-container .ui-ribbon:before{left:0;bottom:-1px;right:0}.ui-ribbon-container .ui-ribbon:after,.ui-ribbon-container .ui-ribbon:before{position:absolute;content:" ";line-height:0;border-top:2px solid #555;border-left:2px solid transparent;border-right:2px solid transparent}.thumbnail .image{height:120px;overflow:hidden}.caption{padding:9px 5px;background:#F7F7F7}.caption p{margin-bottom:5px}.thumbnail{height:190px;overflow:hidden}.view{overflow:hidden;position:relative;text-align:center;box-shadow:1px 1px 2px #e6e6e6;cursor:default}.dropdown-menu a,.voiceBtn{cursor:pointer}.view .content,.view .mask{position:absolute;width:100%;overflow:hidden;top:0;left:0}.sideways,.view .tools,.view img,.view p{position:relative}.view img{display:block}.view .tools{color:#fff;text-align:center;font-size:17px;padding:3px;background:rgba(0,0,0,.35);margin:43px 0 0}.mask.no-caption .tools{margin:90px 0 0}.view .tools a{display:inline-block;color:#FFF;font-size:18px;font-weight:400;padding:0 4px}.view p{font-family:Georgia,serif;font-size:12px;color:#fff;padding:10px 20px 20px;text-align:center}.view a.info{display:inline-block;padding:7px 14px;background:#000;color:#fff;box-shadow:0 0 1px #000}.view-first img{transition:all .2s linear}.view-first .mask{opacity:0;background-color:rgba(0,0,0,.5);transition:all .4s ease-in-out}.view-first .tools{transform:translateY(-100px);opacity:0;transition:all .2s ease-in-out}.view-first p{transform:translateY(100px);opacity:0;transition:all .2s linear}.view-first:hover img{transform:scale(1.1)}.view-first:hover .mask{opacity:1}.view-first:hover .tools,.view-first:hover p{opacity:1;transform:translateY(0)}.view-first:hover p{transition-delay:.1s}.form-group.has-feedback span{display:block!important}.form-group .btn{margin-bottom:-6px}.input-group-btn .btn{margin-bottom:0} .input-group.date .input-group-addon{border-radius:0px!important;background-color:#ffff!important}/*! + * bootstrap-vertical-tabs - v1.2.1 + * https://dbtek.github.io/bootstrap-vertical-tabs + * 2014-11-07 + * Copyright (c) 2014 İsmail Demirbilek + * License: MIT + */.tabs-left,.tabs-right{border-bottom:none;padding-top:2px}.tabs-left{border-right:1px solid #F7F7F7}.tabs-right{border-left:1px solid #F7F7F7}.tabs-left>li,.tabs-right>li{float:none;margin-bottom:2px}.alignleft,.left{float:left}.tabs-left>li{margin-right:-1px}.tabs-left>li>a,.tabs-right>li>a{margin-right:0;background:#F7F7F7;overflow:hidden;text-overflow:ellipsis}.tabs-right>li{margin-left:-1px}.tabs-left>li.active>a,.tabs-left>li.active>a:focus,.tabs-left>li.active>a:hover{border-bottom-color:#F7F7F7;border-right-color:transparent}.tabs-right>li.active>a,.tabs-right>li.active>a:focus,.tabs-right>li.active>a:hover{border-bottom:1px solid #F7F7F7;border-left-color:transparent}.tabs-left>li>a{border-radius:4px 0 0 4px;display:block}.tabs-right>li>a{border-radius:0 4px 4px 0}.sideways{margin-top:50px;border:none}.sideways>li{height:20px;width:120px;margin-bottom:100px}.sideways>li>a{border-bottom:1px solid #ddd;border-right-color:transparent;text-align:center;border-radius:4px 4px 0 0}.sideways>li.active>a,.sideways>li.active>a:focus,.sideways>li.active>a:hover{border-bottom-color:transparent;border-right-color:#ddd;border-left-color:#ddd}.sideways.tabs-left{left:-50px}.sideways.tabs-right{right:-50px}.sideways.tabs-right>li{transform:rotate(90deg)}.sideways.tabs-left>li{transform:rotate(-90deg)}.morris-hover{position:absolute;z-index:1000}.morris-hover.morris-default-style{padding:6px;color:#666;background:rgba(243,242,243,.8);border:2px solid rgba(195,194,196,.8);font-family:sans-serif;font-size:12px;text-align:center}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:700;margin:.25em 0}.morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:.1em 0}.price{font-size:40px;font-weight:400;color:#26B99A;margin:0}.prod_title{border-bottom:1px solid #DFDFDF;padding-bottom:5px;margin:30px 0;font-size:20px;font-weight:400}.product-image img{width:90%}.prod_color li{margin:0 10px}.prod_color li p{margin-bottom:0}.prod_size li{padding:0}.prod_color .color{width:25px;height:25px;border:2px solid rgba(51,51,51,.28)!important;padding:2px;border-radius:50px}.product_gallery a{width:100px;height:100px;float:left;margin:10px;border:1px solid #e5e5e5}.product_gallery a img{width:100%;margin-top:15px}.product_price{margin:20px 0;padding:5px 10px;background-color:#FFF;text-align:left;border:2px dashed #E0E0E0}.price-tax{font-size:18px}.product_social{margin:20px 0}.product_social ul li a i{font-size:35px}.login{background:#F7F7F7}.login .fa-paw{font-size:26px}a.hiddenanchor{display:none}.login_wrapper{right:0;margin:5% auto 0;max-width:350px;position:relative}.cropper .docs-cropped .modal-body>canvas,.cropper .docs-cropped .modal-body>img,.cropper .img-container>img,.cropper .img-preview>img{max-width:100%}.login_form,.registration_form{position:absolute;top:0;width:100%}.registration_form{z-index:21;opacity:0;width:100%}.login_form{z-index:22}#signin:target~.login_wrapper .login_form,#signup:target~.login_wrapper .registration_form{z-index:22;animation-name:fadeInLeft;animation-delay:.1s}#signin:target~.login_wrapper .registration_form,#signup:target~.login_wrapper .login_form{animation-name:fadeOutLeft}.animate{-webkit-animation-duration:.5s;-webkit-animation-timing-function:ease;-webkit-animation-fill-mode:both;-moz-animation-duration:.5s;-moz-animation-timing-function:ease;-moz-animation-fill-mode:both;-o-animation-duration:.5s;-o-animation-timing-function:ease;-o-animation-fill-mode:both;-ms-animation-duration:.5s;-ms-animation-timing-function:ease;-ms-animation-fill-mode:both;animation-duration:.5s;animation-timing-function:ease;animation-fill-mode:both}.login_box{padding:20px;margin:auto}.alignleft{margin-right:15px}.alignright{float:right;margin-left:15px}.clearfix:after,form:after{content:".";display:block;height:0;clear:both;visibility:hidden}.login_content{margin:0 auto;padding:25px 0 0;position:relative;text-align:center;text-shadow:0 1px 0 #fff;min-width:280px}.login_content a:hover{text-decoration:underline}.login_content h1{font:400 25px Helvetica,Arial,sans-serif;letter-spacing:-.05em;line-height:20px;margin:10px 0 30px}.login_content h1:after,.login_content h1:before{content:"";height:1px;position:absolute;top:10px;width:20%}.login_content h1:after{background:#7e7e7e;background:linear-gradient(left,#7e7e7e 0,#fff 100%);right:0}.login_content h1:before{background:#7e7e7e;background:linear-gradient(right,#7e7e7e 0,#fff 100%);left:0}.login_content form{margin:20px 0;position:relative}.login_content form input[type=text],.login_content form input[type=email],.login_content form input[type=password]{border-radius:3px;-ms-box-shadow:0 1px 0 #fff,0 -2px 5px rgba(0,0,0,.08) inset;-o-box-shadow:0 1px 0 #fff,0 -2px 5px rgba(0,0,0,.08) inset;box-shadow:0 1px 0 #fff,0 -2px 5px rgba(0,0,0,.08) inset;border:1px solid #c8c8c8;color:#777;margin:0 0 20px;width:100%}.login_content form input[type=text]:focus,.login_content form input[type=email]:focus,.login_content form input[type=password]:focus{-ms-box-shadow:0 0 2px #ed1c24 inset;-o-box-shadow:0 0 2px #ed1c24 inset;box-shadow:0 0 2px #A97AAD inset;background-color:#fff;border:1px solid #A878AF;outline:0}#username{background-position:10px 10px!important}#password{background-position:10px -53px!important}.login_content form div a{font-size:12px;margin:10px 15px 0 0}.reset_pass{margin-top:10px!important}.login_content div .reset_pass{margin-top:13px!important;margin-right:39px;float:right}.separator{border-top:1px solid #D8D8D8;margin-top:10px;padding-top:10px}.button{background:#f7f9fa;background:linear-gradient(top,#f7f9fa 0,#f0f0f0 100%);filter:progid: DXImageTransform.Microsoft.gradient( startColorstr='#f7f9fa', endColorstr='#f0f0f0', GradientType=0);-ms-box-shadow:0 1px 2px rgba(0,0,0,.1) inset;-o-box-shadow:0 1px 2px rgba(0,0,0,.1) inset;box-shadow:0 1px 2px rgba(0,0,0,.1) inset;border-radius:0 0 5px 5px;border-top:1px solid #CFD5D9;padding:15px 0}#content form .submit,.login_content form input[type=submit]{float:left;margin-left:38px}.button a{background:url(http://cssdeck.com/uploads/media/items/8/8bcLQqF.png) 0 -112px no-repeat;color:#7E7E7E;font-size:17px;padding:2px 0 2px 40px;text-decoration:none;transition:all .3s ease}.button a:hover{background-position:0 -135px;color:#00aeef}header{width:100%}#nprogress .bar{background:#1ABB9C}#nprogress .peg{box-shadow:0 0 10px #1ABB9C,0 0 5px #1ABB9C}#nprogress .spinner-icon{border-top-color:#1ABB9C;border-left-color:#1ABB9C}.editor-wrapper{min-height:250px;background-color:#fff;border-collapse:separate;border:1px solid #ccc;padding:4px;box-sizing:content-box;box-shadow:rgba(0,0,0,.07451) 0 1px 1px 0 inset;overflow:scroll;outline:0;border-radius:3px}.voiceBtn{width:20px;color:transparent;background-color:transparent;transform:scale(2,2);-webkit-transform:scale(2,2);-moz-transform:scale(2,2);border:transparent;box-shadow:none;-webkit-box-shadow:none}div[data-role=editor-toolbar]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select2-container--default .select2-selection--multiple,.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #ccc;border-radius:0;min-height:38px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#73879C;padding-top:5px}.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding-top:3px}.select2-container--default .select2-selection--single .select2-selection__arrow{height:36px}.select2-container--default .select2-selection--multiple .select2-selection__choice,.select2-container--default .select2-selection--multiple .select2-selection__clear{margin-top:2px;border:none;border-radius:0;padding:3px 5px}.select2-container--default.select2-container--focus .select2-selection--multiple{border:1px solid #ccc}.switchery{width:32px;height:20px}.switchery>small{width:20px;height:20px}fieldset{border:none;margin:0;padding:0}.cropper .img-container,.cropper .img-preview{background-color:#f7f7f7;width:100%;text-align:center}.cropper .img-container{min-height:200px;max-height:516px;margin-bottom:20px}.cropper .docs-data>.input-group,.cropper .docs-toggles>.btn,.cropper .docs-toggles>.btn-group,.cropper .docs-toggles>.dropdown,.cropper .img-preview{margin-bottom:10px}@media (min-width:768px){.cropper .img-container{min-height:516px}}.cropper .docs-preview{margin-right:-15px}.cropper .img-preview{float:left;margin-right:10px;overflow:hidden}.cropper .preview-lg{width:263px;height:148px}.cropper .preview-md{width:139px;height:78px}.cropper .preview-sm{width:69px;height:39px}.cropper .preview-xs{width:35px;height:20px;margin-right:0}.cropper .docs-data>.input-group>label{min-width:80px}.cropper .docs-data>.input-group>span{min-width:50px}.cropper .docs-buttons>.btn,.cropper .docs-buttons>.btn-group,.cropper .docs-buttons>.form-control{margin-right:5px;margin-bottom:10px}.cropper .docs-tooltip{display:block;margin:-6px -12px;padding:6px 12px}.cropper .docs-tooltip>.icon{margin:0 -3px;vertical-align:top}.cropper .tooltip-inner{white-space:normal}.cropper .btn-toggle .tooltip-inner,.cropper .btn-upload .tooltip-inner{white-space:nowrap}.cropper .btn-toggle{padding:6px}.cropper .btn-toggle>.docs-tooltip{margin:-6px;padding:6px}@media (max-width:400px){.cropper .btn-group-crop{margin-right:-15px!important}.cropper .btn-group-crop>.btn{padding-left:5px;padding-right:5px}.cropper .btn-group-crop .docs-tooltip{margin-left:-5px;margin-right:-5px;padding-left:5px;padding-right:5px}}.cropper .docs-options .dropdown-menu{width:100%}.cropper .docs-options .dropdown-menu>li{padding:3px 20px}.cropper .docs-options .dropdown-menu>li:hover{background-color:#f7f7f7}.cropper .docs-options .dropdown-menu>li>label{display:block}.cropper .docs-cropped .modal-body{text-align:center}.cropper .docs-diagram .modal-dialog{max-width:352px}.cropper .docs-cropped canvas{max-width:100%}.form_wizard .stepContainer{display:block;position:relative;margin:0;padding:0;border:0 solid #CCC;overflow-x:hidden}.wizard_horizontal ul.wizard_steps{display:table;list-style:none;position:relative;width:100%;margin:0 0 20px}.wizard_horizontal ul.wizard_steps li{display:table-cell;text-align:center}.wizard_horizontal ul.wizard_steps li a,.wizard_horizontal ul.wizard_steps li:hover{display:block;position:relative;-moz-opacity:1;filter:alpha(opacity=100);opacity:1;color:#666}.wizard_horizontal ul.wizard_steps li a:before{content:"";position:absolute;height:4px;background:#ccc;top:20px;width:100%;z-index:4;left:0}.wizard_horizontal ul.wizard_steps li a.disabled .step_no{background:#ccc}.wizard_horizontal ul.wizard_steps li a .step_no{width:40px;height:40px;line-height:40px;border-radius:100px;display:block;margin:0 auto 5px;font-size:16px;text-align:center;position:relative;z-index:5}.step_no,.wizard_horizontal ul.wizard_steps li a.selected:before{background:#34495E;color:#fff}.wizard_horizontal ul.wizard_steps li a.done .step_no,.wizard_horizontal ul.wizard_steps li a.done:before{background:#1ABB9C;color:#fff}.wizard_horizontal ul.wizard_steps li:first-child a:before{left:50%}.wizard_horizontal ul.wizard_steps li:last-child a:before{right:50%;width:50%;left:auto}.wizard_verticle .stepContainer{width:80%;float:left;padding:0 10px}.actionBar{width:100%;border-top:1px solid #ddd;padding:10px 5px;text-align:right;margin-top:10px}.actionBar .buttonDisabled{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.actionBar a{margin:0 3px}.wizard_verticle .wizard_content{width:80%;float:left;padding-left:20px}.wizard_verticle ul.wizard_steps{display:table;list-style:none;position:relative;width:20%;float:left;margin:0 0 20px}.wizard_verticle ul.wizard_steps li{display:list-item;text-align:center}.wizard_verticle ul.wizard_steps li a{height:80px}.wizard_verticle ul.wizard_steps li a:first-child{margin-top:20px}.wizard_verticle ul.wizard_steps li a,.wizard_verticle ul.wizard_steps li:hover{display:block;position:relative;-moz-opacity:1;filter:alpha(opacity=100);opacity:1;color:#666}.wizard_verticle ul.wizard_steps li a:before{content:"";position:absolute;height:100%;background:#ccc;top:20px;width:4px;z-index:4;left:49%}.wizard_verticle ul.wizard_steps li a.disabled .step_no{background:#ccc}.wizard_verticle ul.wizard_steps li a .step_no{width:40px;height:40px;line-height:40px;border-radius:100px;display:block;margin:0 auto 5px;font-size:16px;text-align:center;position:relative;z-index:5}.progress.progress_sm,.progress.progress_sm .progress-bar{height:10px!important}.step_no,.wizard_verticle ul.wizard_steps li a.selected:before{background:#34495E;color:#fff}.wizard_verticle ul.wizard_steps li a.done .step_no,.wizard_verticle ul.wizard_steps li a.done:before{background:#1ABB9C;color:#fff}.wizard_verticle ul.wizard_steps li:first-child a:before{left:49%}.wizard_verticle ul.wizard_steps li:last-child a:before{left:49%;left:auto;width:0}.form_wizard .loader,.form_wizard .msgBox{display:none}.progress{border-radius:0}.progress-bar-info{background-color:#3498DB}.progress-bar-success{background-color:#26B99A}.progress_summary .progress{margin:5px 0 12px!important}.progress_summary .row{margin-bottom:5px}.progress_summary .row .col-xs-2{padding:0}.progress_summary .data span,.progress_summary .more_info span{text-align:right;float:right}.progress_summary p{margin-bottom:3px;width:100%}.progress_title .left{float:left;text-align:left}.progress_title .right{float:right;text-align:right;font-weight:300}.progress.progress_sm{border-radius:0;margin-bottom:18px}.dashboard_graph p{margin:0 0 4px}ul.verticle_bars{width:100%}ul.verticle_bars li{width:23%;height:200px;margin:0}.progress.vertical.progress_wide{width:35px}.alert-success{color:#fff;background-color:rgba(38,185,154,.88);border-color:rgba(38,185,154,.88)}.alert-info{color:#E9EDEF;background-color:rgba(52,152,219,.88);border-color:rgba(52,152,219,.88)}.alert-warning{color:#E9EDEF;background-color:rgba(243,156,18,.88);border-color:rgba(243,156,18,.88)}.alert-danger,.alert-error{color:#E9EDEF;background-color:rgba(231,76,60,.88);border-color:rgba(231,76,60,.88)}.ui-pnotify.dark .ui-pnotify-container{color:#E9EDEF;background-color:rgba(52,73,94,.88);border-color:rgba(52,73,94,.88)}.custom-notifications{position:fixed;margin:15px;right:0;float:right;width:400px;z-index:4000;bottom:0}ul.notifications{float:right;display:block;margin-bottom:7px;padding:0;width:100%}.notifications li{float:right;margin:3px;width:36px;box-shadow:3px 3px 3px rgba(0,0,0,.3)}.notifications li:last-child{margin-left:0}.notifications a{display:block;text-align:center;text-decoration:none;padding:9px 8px}.tabbed_notifications .text{padding:5px 15px;height:140px;border-radius:7px;box-shadow:6px 6px 6px rgba(0,0,0,.3)}.tabbed_notifications div p{display:inline-block}.tabbed_notifications h2{font-weight:700;width:80%;float:left;height:20px;text-overflow:ellipsis;overflow:hidden;display:block}.tabbed_notifications .close{padding:5px;color:#E9EDEF;float:right;opacity:1}.fc-state-default{background:#f5f5f5;color:#73879C}.fc-state-active,.fc-state-down{color:#333;background:#ccc}.dropzone{min-height:300px;border:1px solid #e5e5e5}.main_menu .label{line-height:11px;margin-top:4px}@media (max-width:460px){.dataTables_wrapper .col-sm-6{width:100%;margin-bottom:5px}.dataTables_wrapper .col-sm-6 .dataTables_filter{float:none}}@media (max-width:767px){.dataTables_length{float:none}}.daterangepicker.xdisplay{width:228px}.dataTables_wrapper>.row{overflow:auto!important} diff --git a/public/assets/build/images/back_disabled.png b/public/assets/build/images/back_disabled.png new file mode 100755 index 0000000..881de79 Binary files /dev/null and b/public/assets/build/images/back_disabled.png differ diff --git a/public/assets/build/images/back_enabled.png b/public/assets/build/images/back_enabled.png new file mode 100755 index 0000000..c608682 Binary files /dev/null and b/public/assets/build/images/back_enabled.png differ diff --git a/public/assets/build/images/back_enabled_hover.png b/public/assets/build/images/back_enabled_hover.png new file mode 100755 index 0000000..d300f10 Binary files /dev/null and b/public/assets/build/images/back_enabled_hover.png differ diff --git a/public/assets/build/images/forward_disabled.png b/public/assets/build/images/forward_disabled.png new file mode 100755 index 0000000..6a6ded7 Binary files /dev/null and b/public/assets/build/images/forward_disabled.png differ diff --git a/public/assets/build/images/forward_enabled.png b/public/assets/build/images/forward_enabled.png new file mode 100755 index 0000000..a4e6b53 Binary files /dev/null and b/public/assets/build/images/forward_enabled.png differ diff --git a/public/assets/build/images/forward_enabled_hover.png b/public/assets/build/images/forward_enabled_hover.png new file mode 100755 index 0000000..fc46c5e Binary files /dev/null and b/public/assets/build/images/forward_enabled_hover.png differ diff --git a/public/assets/build/images/loading.gif b/public/assets/build/images/loading.gif new file mode 100755 index 0000000..2e4f98c Binary files /dev/null and b/public/assets/build/images/loading.gif differ diff --git a/public/assets/build/js/custom.js b/public/assets/build/js/custom.js new file mode 100755 index 0000000..05996f2 --- /dev/null +++ b/public/assets/build/js/custom.js @@ -0,0 +1,5046 @@ +/** + * Resize function without multiple trigger + * + * Usage: + * $(window).smartresize(function(){ + * // code here + * }); + */ +(function($,sr){ + // debouncing function from John Hann + // http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/ + var debounce = function (func, threshold, execAsap) { + var timeout; + + return function debounced () { + var obj = this, args = arguments; + function delayed () { + if (!execAsap) + func.apply(obj, args); + timeout = null; + } + + if (timeout) + clearTimeout(timeout); + else if (execAsap) + func.apply(obj, args); + + timeout = setTimeout(delayed, threshold || 100); + }; + }; + + // smartresize + jQuery.fn[sr] = function(fn){ return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); }; + +})(jQuery,'smartresize'); +/** + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +var CURRENT_URL = window.location.href.split('#')[0].split('?')[0], + $BODY = $('body'), + $MENU_TOGGLE = $('#menu_toggle'), + $SIDEBAR_MENU = $('#sidebar-menu'), + $SIDEBAR_FOOTER = $('.sidebar-footer'), + $LEFT_COL = $('.left_col'), + $RIGHT_COL = $('.right_col'), + $NAV_MENU = $('.nav_menu'), + $FOOTER = $('footer'); + + + +// Sidebar +function init_sidebar() { +// TODO: This is some kind of easy fix, maybe we can improve this +var setContentHeight = function () { + // reset height + $RIGHT_COL.css('min-height', $(window).height()); + + var bodyHeight = $BODY.outerHeight(), + footerHeight = $BODY.hasClass('footer_fixed') ? -10 : $FOOTER.height(), + leftColHeight = $LEFT_COL.eq(1).height() + $SIDEBAR_FOOTER.height(), + contentHeight = bodyHeight < leftColHeight ? leftColHeight : bodyHeight; + + // normalize content + contentHeight -= $NAV_MENU.height() + footerHeight; + + $RIGHT_COL.css('min-height', contentHeight); +}; + + $SIDEBAR_MENU.find('a').on('click', function(ev) { + console.log('clicked - sidebar_menu'); + var $li = $(this).parent(); + + if ($li.is('.active')) { + $li.removeClass('active active-sm'); + $('ul:first', $li).slideUp(function() { + setContentHeight(); + }); + } else { + // prevent closing menu if we are on child menu + if (!$li.parent().is('.child_menu')) { + $SIDEBAR_MENU.find('li').removeClass('active active-sm'); + $SIDEBAR_MENU.find('li ul').slideUp(); + }else + { + if ( $BODY.is( ".nav-sm" ) ) + { + $li.parent().find( "li" ).removeClass( "active active-sm" ); + $li.parent().find( "li ul" ).slideUp(); + } + } + $li.addClass('active'); + + $('ul:first', $li).slideDown(function() { + setContentHeight(); + }); + } + }); + +// toggle small or large menu +$MENU_TOGGLE.on('click', function() { + console.log('clicked - menu toggle'); + + if ($BODY.hasClass('nav-md')) { + $SIDEBAR_MENU.find('li.active ul').hide(); + $SIDEBAR_MENU.find('li.active').addClass('active-sm').removeClass('active'); + } else { + $SIDEBAR_MENU.find('li.active-sm ul').show(); + $SIDEBAR_MENU.find('li.active-sm').addClass('active').removeClass('active-sm'); + } + + $BODY.toggleClass('nav-md nav-sm'); + + setContentHeight(); + + $('.dataTable').each ( function () { $(this).dataTable().fnDraw(); }); +}); + + // check active menu + $SIDEBAR_MENU.find('a[href="' + CURRENT_URL + '"]').parent('li').addClass('current-page'); + + $SIDEBAR_MENU.find('a').filter(function () { + return this.href == CURRENT_URL; + }).parent('li').addClass('current-page').parents('ul').slideDown(function() { + setContentHeight(); + }).parent().addClass('active'); + + // recompute content when resizing + $(window).smartresize(function(){ + setContentHeight(); + }); + + setContentHeight(); + + // fixed sidebar + if ($.fn.mCustomScrollbar) { + $('.menu_fixed').mCustomScrollbar({ + autoHideScrollbar: true, + theme: 'minimal', + mouseWheel:{ preventDefault: true } + }); + } +}; +// /Sidebar + + var randNum = function() { + return (Math.floor(Math.random() * (1 + 40 - 20))) + 20; + }; + + +// Panel toolbox +$(document).ready(function() { + $('.collapse-link').on('click', function() { + var $BOX_PANEL = $(this).closest('.x_panel'), + $ICON = $(this).find('i'), + $BOX_CONTENT = $BOX_PANEL.find('.x_content'); + + // fix for some div with hardcoded fix class + if ($BOX_PANEL.attr('style')) { + $BOX_CONTENT.slideToggle(200, function(){ + $BOX_PANEL.removeAttr('style'); + }); + } else { + $BOX_CONTENT.slideToggle(200); + $BOX_PANEL.css('height', 'auto'); + } + + $ICON.toggleClass('fa-chevron-up fa-chevron-down'); + }); + + $('.close-link').click(function () { + var $BOX_PANEL = $(this).closest('.x_panel'); + + $BOX_PANEL.remove(); + }); +}); +// /Panel toolbox + +// Tooltip +$(document).ready(function() { + $('[data-toggle="tooltip"]').tooltip({ + container: 'body' + }); +}); +// /Tooltip + +// Progressbar +if ($(".progress .progress-bar")[0]) { + $('.progress .progress-bar').progressbar(); +} +// /Progressbar + +// Switchery +$(document).ready(function() { + if ($(".js-switch")[0]) { + var elems = Array.prototype.slice.call(document.querySelectorAll('.js-switch')); + elems.forEach(function (html) { + var switchery = new Switchery(html, { + color: '#26B99A' + }); + }); + } +}); +// /Switchery + + +// iCheck +$(document).ready(function() { + if ($("input.flat")[0]) { + $(document).ready(function () { + $('input.flat').iCheck({ + checkboxClass: 'icheckbox_flat-green', + radioClass: 'iradio_flat-green' + }); + }); + } +}); +// /iCheck + +// Table +$('table input').on('ifChecked', function () { + checkState = ''; + $(this).parent().parent().parent().addClass('selected'); + countChecked(); +}); +$('table input').on('ifUnchecked', function () { + checkState = ''; + $(this).parent().parent().parent().removeClass('selected'); + countChecked(); +}); + +var checkState = ''; + +$('.bulk_action input').on('ifChecked', function () { + checkState = ''; + $(this).parent().parent().parent().addClass('selected'); + countChecked(); +}); +$('.bulk_action input').on('ifUnchecked', function () { + checkState = ''; + $(this).parent().parent().parent().removeClass('selected'); + countChecked(); +}); +$('.bulk_action input#check-all').on('ifChecked', function () { + checkState = 'all'; + countChecked(); +}); +$('.bulk_action input#check-all').on('ifUnchecked', function () { + checkState = 'none'; + countChecked(); +}); + +function countChecked() { + if (checkState === 'all') { + $(".bulk_action input[name='table_records']").iCheck('check'); + } + if (checkState === 'none') { + $(".bulk_action input[name='table_records']").iCheck('uncheck'); + } + + var checkCount = $(".bulk_action input[name='table_records']:checked").length; + + if (checkCount) { + $('.column-title').hide(); + $('.bulk-actions').show(); + $('.action-cnt').html(checkCount + ' Records Selected'); + } else { + $('.column-title').show(); + $('.bulk-actions').hide(); + } +} + + + +// Accordion +$(document).ready(function() { + $(".expand").on("click", function () { + $(this).next().slideToggle(200); + $expand = $(this).find(">:first-child"); + + if ($expand.text() == "+") { + $expand.text("-"); + } else { + $expand.text("+"); + } + }); +}); + +// NProgress +if (typeof NProgress != 'undefined') { + $(document).ready(function () { + NProgress.start(); + }); + + $(window).load(function () { + NProgress.done(); + }); +} + + + //hover and retain popover when on popover content + var originalLeave = $.fn.popover.Constructor.prototype.leave; + $.fn.popover.Constructor.prototype.leave = function(obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type); + var container, timeout; + + originalLeave.call(this, obj); + + if (obj.currentTarget) { + container = $(obj.currentTarget).siblings('.popover'); + timeout = self.timeout; + container.one('mouseenter', function() { + //We entered the actual popover – call off the dogs + clearTimeout(timeout); + //Let's monitor popover content instead + container.one('mouseleave', function() { + $.fn.popover.Constructor.prototype.leave.call(self, self); + }); + }); + } + }; + + $('body').popover({ + selector: '[data-popover]', + trigger: 'click hover', + delay: { + show: 50, + hide: 400 + } + }); + + + function gd(year, month, day) { + return new Date(year, month - 1, day).getTime(); + } + + + function init_flot_chart(){ + + if( typeof ($.plot) === 'undefined'){ return; } + + console.log('init_flot_chart'); + + + + var arr_data1 = [ + [gd(2012, 1, 1), 17], + [gd(2012, 1, 2), 74], + [gd(2012, 1, 3), 6], + [gd(2012, 1, 4), 39], + [gd(2012, 1, 5), 20], + [gd(2012, 1, 6), 85], + [gd(2012, 1, 7), 7] + ]; + + var arr_data2 = [ + [gd(2012, 1, 1), 82], + [gd(2012, 1, 2), 23], + [gd(2012, 1, 3), 66], + [gd(2012, 1, 4), 9], + [gd(2012, 1, 5), 119], + [gd(2012, 1, 6), 6], + [gd(2012, 1, 7), 9] + ]; + + var arr_data3 = [ + [0, 1], + [1, 9], + [2, 6], + [3, 10], + [4, 5], + [5, 17], + [6, 6], + [7, 10], + [8, 7], + [9, 11], + [10, 35], + [11, 9], + [12, 12], + [13, 5], + [14, 3], + [15, 4], + [16, 9] + ]; + + var chart_plot_02_data = []; + + var chart_plot_03_data = [ + [0, 1], + [1, 9], + [2, 6], + [3, 10], + [4, 5], + [5, 17], + [6, 6], + [7, 10], + [8, 7], + [9, 11], + [10, 35], + [11, 9], + [12, 12], + [13, 5], + [14, 3], + [15, 4], + [16, 9] + ]; + + + for (var i = 0; i < 30; i++) { + chart_plot_02_data.push([new Date(Date.today().add(i).days()).getTime(), randNum() + i + i + 10]); + } + + + var chart_plot_01_settings = { + series: { + lines: { + show: false, + fill: true + }, + splines: { + show: true, + tension: 0.4, + lineWidth: 1, + fill: 0.4 + }, + points: { + radius: 0, + show: true + }, + shadowSize: 2 + }, + grid: { + verticalLines: true, + hoverable: true, + clickable: true, + tickColor: "#d5d5d5", + borderWidth: 1, + color: '#fff' + }, + colors: ["rgba(38, 185, 154, 0.38)", "rgba(3, 88, 106, 0.38)"], + xaxis: { + tickColor: "rgba(51, 51, 51, 0.06)", + mode: "time", + tickSize: [1, "day"], + //tickLength: 10, + axisLabel: "Date", + axisLabelUseCanvas: true, + axisLabelFontSizePixels: 12, + axisLabelFontFamily: 'Verdana, Arial', + axisLabelPadding: 10 + }, + yaxis: { + ticks: 8, + tickColor: "rgba(51, 51, 51, 0.06)", + }, + tooltip: false + } + + var chart_plot_02_settings = { + grid: { + show: true, + aboveData: true, + color: "#3f3f3f", + labelMargin: 10, + axisMargin: 0, + borderWidth: 0, + borderColor: null, + minBorderMargin: 5, + clickable: true, + hoverable: true, + autoHighlight: true, + mouseActiveRadius: 100 + }, + series: { + lines: { + show: true, + fill: true, + lineWidth: 2, + steps: false + }, + points: { + show: true, + radius: 4.5, + symbol: "circle", + lineWidth: 3.0 + } + }, + legend: { + position: "ne", + margin: [0, -25], + noColumns: 0, + labelBoxBorderColor: null, + labelFormatter: function(label, series) { + return label + '  '; + }, + width: 40, + height: 1 + }, + colors: ['#96CA59', '#3F97EB', '#72c380', '#6f7a8a', '#f7cb38', '#5a8022', '#2c7282'], + shadowSize: 0, + tooltip: true, + tooltipOpts: { + content: "%s: %y.0", + xDateFormat: "%d/%m", + shifts: { + x: -30, + y: -50 + }, + defaultTheme: false + }, + yaxis: { + min: 0 + }, + xaxis: { + mode: "time", + minTickSize: [1, "day"], + timeformat: "%d/%m/%y", + min: chart_plot_02_data[0][0], + max: chart_plot_02_data[20][0] + } + }; + + var chart_plot_03_settings = { + series: { + curvedLines: { + apply: true, + active: true, + monotonicFit: true + } + }, + colors: ["#26B99A"], + grid: { + borderWidth: { + top: 0, + right: 0, + bottom: 1, + left: 1 + }, + borderColor: { + bottom: "#7F8790", + left: "#7F8790" + } + } + }; + + + if ($("#chart_plot_01").length){ + console.log('Plot1'); + + $.plot( $("#chart_plot_01"), [ arr_data1, arr_data2 ], chart_plot_01_settings ); + } + + + if ($("#chart_plot_02").length){ + console.log('Plot2'); + + $.plot( $("#chart_plot_02"), + [{ + label: "Email Sent", + data: chart_plot_02_data, + lines: { + fillColor: "rgba(150, 202, 89, 0.12)" + }, + points: { + fillColor: "#fff" } + }], chart_plot_02_settings); + + } + + if ($("#chart_plot_03").length){ + console.log('Plot3'); + + + $.plot($("#chart_plot_03"), [{ + label: "Registrations", + data: chart_plot_03_data, + lines: { + fillColor: "rgba(150, 202, 89, 0.12)" + }, + points: { + fillColor: "#fff" + } + }], chart_plot_03_settings); + + }; + + } + + + /* STARRR */ + + function init_starrr() { + + if( typeof (starrr) === 'undefined'){ return; } + console.log('init_starrr'); + + $(".stars").starrr(); + + $('.stars-existing').starrr({ + rating: 4 + }); + + $('.stars').on('starrr:change', function (e, value) { + $('.stars-count').html(value); + }); + + $('.stars-existing').on('starrr:change', function (e, value) { + $('.stars-count-existing').html(value); + }); + + }; + + + function init_JQVmap(){ + + //console.log('check init_JQVmap [' + typeof (VectorCanvas) + '][' + typeof (jQuery.fn.vectorMap) + ']' ); + + if(typeof (jQuery.fn.vectorMap) === 'undefined'){ return; } + + console.log('init_JQVmap'); + + if ($('#world-map-gdp').length ){ + + $('#world-map-gdp').vectorMap({ + map: 'world_en', + backgroundColor: null, + color: '#ffffff', + hoverOpacity: 0.7, + selectedColor: '#666666', + enableZoom: true, + showTooltip: true, + values: sample_data, + scaleColors: ['#E6F2F0', '#149B7E'], + normalizeFunction: 'polynomial' + }); + + } + + if ($('#usa_map').length ){ + + $('#usa_map').vectorMap({ + map: 'usa_en', + backgroundColor: null, + color: '#ffffff', + hoverOpacity: 0.7, + selectedColor: '#666666', + enableZoom: true, + showTooltip: true, + values: sample_data, + scaleColors: ['#E6F2F0', '#149B7E'], + normalizeFunction: 'polynomial' + }); + + } + + }; + + + function init_skycons(){ + + if( typeof (Skycons) === 'undefined'){ return; } + console.log('init_skycons'); + + var icons = new Skycons({ + "color": "#73879C" + }), + list = [ + "clear-day", "clear-night", "partly-cloudy-day", + "partly-cloudy-night", "cloudy", "rain", "sleet", "snow", "wind", + "fog" + ], + i; + + for (i = list.length; i--;) + icons.set(list[i], list[i]); + + icons.play(); + + } + + + function init_chart_doughnut(){ + + if( typeof (Chart) === 'undefined'){ return; } + + console.log('init_chart_doughnut'); + + if ($('.canvasDoughnut').length){ + + var chart_doughnut_settings = { + type: 'doughnut', + tooltipFillColor: "rgba(51, 51, 51, 0.55)", + data: { + labels: [ + "Symbian", + "Blackberry", + "Other", + "Android", + "IOS" + ], + datasets: [{ + data: [15, 20, 30, 10, 30], + backgroundColor: [ + "#BDC3C7", + "#9B59B6", + "#E74C3C", + "#26B99A", + "#3498DB" + ], + hoverBackgroundColor: [ + "#CFD4D8", + "#B370CF", + "#E95E4F", + "#36CAAB", + "#49A9EA" + ] + }] + }, + options: { + legend: false, + responsive: false + } + } + + $('.canvasDoughnut').each(function(){ + + var chart_element = $(this); + var chart_doughnut = new Chart( chart_element, chart_doughnut_settings); + + }); + + } + + } + + function init_gauge() { + + if( typeof (Gauge) === 'undefined'){ return; } + + console.log('init_gauge [' + $('.gauge-chart').length + ']'); + + console.log('init_gauge'); + + + var chart_gauge_settings = { + lines: 12, + angle: 0, + lineWidth: 0.4, + pointer: { + length: 0.75, + strokeWidth: 0.042, + color: '#1D212A' + }, + limitMax: 'false', + colorStart: '#1ABC9C', + colorStop: '#1ABC9C', + strokeColor: '#F0F3F3', + generateGradient: true + }; + + + if ($('#chart_gauge_01').length){ + + var chart_gauge_01_elem = document.getElementById('chart_gauge_01'); + var chart_gauge_01 = new Gauge(chart_gauge_01_elem).setOptions(chart_gauge_settings); + + } + + + if ($('#gauge-text').length){ + + chart_gauge_01.maxValue = 6000; + chart_gauge_01.animationSpeed = 32; + chart_gauge_01.set(3200); + chart_gauge_01.setTextField(document.getElementById("gauge-text")); + + } + + if ($('#chart_gauge_02').length){ + + var chart_gauge_02_elem = document.getElementById('chart_gauge_02'); + var chart_gauge_02 = new Gauge(chart_gauge_02_elem).setOptions(chart_gauge_settings); + + } + + + if ($('#gauge-text2').length){ + + chart_gauge_02.maxValue = 9000; + chart_gauge_02.animationSpeed = 32; + chart_gauge_02.set(2400); + chart_gauge_02.setTextField(document.getElementById("gauge-text2")); + + } + + + } + + /* SPARKLINES */ + + function init_sparklines() { + + if(typeof (jQuery.fn.sparkline) === 'undefined'){ return; } + console.log('init_sparklines'); + + + $(".sparkline_one").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 4, 5, 6, 3, 5, 4, 5, 4, 5, 4, 3, 4, 5, 6, 7, 5, 4, 3, 5, 6], { + type: 'bar', + height: '125', + barWidth: 13, + colorMap: { + '7': '#a1a1a1' + }, + barSpacing: 2, + barColor: '#26B99A' + }); + + + $(".sparkline_two").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 7, 5, 4, 3, 5, 6], { + type: 'bar', + height: '40', + barWidth: 9, + colorMap: { + '7': '#a1a1a1' + }, + barSpacing: 2, + barColor: '#26B99A' + }); + + + $(".sparkline_three").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 7, 5, 4, 3, 5, 6], { + type: 'line', + width: '200', + height: '40', + lineColor: '#26B99A', + fillColor: 'rgba(223, 223, 223, 0.57)', + lineWidth: 2, + spotColor: '#26B99A', + minSpotColor: '#26B99A' + }); + + + $(".sparkline11").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 6, 2, 4, 3, 4, 5, 4, 5, 4, 3], { + type: 'bar', + height: '40', + barWidth: 8, + colorMap: { + '7': '#a1a1a1' + }, + barSpacing: 2, + barColor: '#26B99A' + }); + + + $(".sparkline22").sparkline([2, 4, 3, 4, 7, 5, 4, 3, 5, 6, 2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 6], { + type: 'line', + height: '40', + width: '200', + lineColor: '#26B99A', + fillColor: '#ffffff', + lineWidth: 3, + spotColor: '#34495E', + minSpotColor: '#34495E' + }); + + + $(".sparkline_bar").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 4, 5, 6, 3, 5], { + type: 'bar', + colorMap: { + '7': '#a1a1a1' + }, + barColor: '#26B99A' + }); + + + $(".sparkline_area").sparkline([5, 6, 7, 9, 9, 5, 3, 2, 2, 4, 6, 7], { + type: 'line', + lineColor: '#26B99A', + fillColor: '#26B99A', + spotColor: '#4578a0', + minSpotColor: '#728fb2', + maxSpotColor: '#6d93c4', + highlightSpotColor: '#ef5179', + highlightLineColor: '#8ba8bf', + spotRadius: 2.5, + width: 85 + }); + + + $(".sparkline_line").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 4, 5, 6, 3, 5], { + type: 'line', + lineColor: '#26B99A', + fillColor: '#ffffff', + width: 85, + spotColor: '#34495E', + minSpotColor: '#34495E' + }); + + + $(".sparkline_pie").sparkline([1, 1, 2, 1], { + type: 'pie', + sliceColors: ['#26B99A', '#ccc', '#75BCDD', '#D66DE2'] + }); + + + $(".sparkline_discreet").sparkline([4, 6, 7, 7, 4, 3, 2, 1, 4, 4, 2, 4, 3, 7, 8, 9, 7, 6, 4, 3], { + type: 'discrete', + barWidth: 3, + lineColor: '#26B99A', + width: '85', + }); + + + }; + + + /* AUTOCOMPLETE */ + + function init_autocomplete() { + + if( typeof ($.fn.autocomplete) === 'undefined'){ return; } + console.log('init_autocomplete'); + + var countries = { AD:"Andorra",A2:"Andorra Test",AE:"United Arab Emirates",AF:"Afghanistan",AG:"Antigua and Barbuda",AI:"Anguilla",AL:"Albania",AM:"Armenia",AN:"Netherlands Antilles",AO:"Angola",AQ:"Antarctica",AR:"Argentina",AS:"American Samoa",AT:"Austria",AU:"Australia",AW:"Aruba",AX:"Åland Islands",AZ:"Azerbaijan",BA:"Bosnia and Herzegovina",BB:"Barbados",BD:"Bangladesh",BE:"Belgium",BF:"Burkina Faso",BG:"Bulgaria",BH:"Bahrain",BI:"Burundi",BJ:"Benin",BL:"Saint Barthélemy",BM:"Bermuda",BN:"Brunei",BO:"Bolivia",BQ:"British Antarctic Territory",BR:"Brazil",BS:"Bahamas",BT:"Bhutan",BV:"Bouvet Island",BW:"Botswana",BY:"Belarus",BZ:"Belize",CA:"Canada",CC:"Cocos [Keeling] Islands",CD:"Congo - Kinshasa",CF:"Central African Republic",CG:"Congo - Brazzaville",CH:"Switzerland",CI:"Côte d’Ivoire",CK:"Cook Islands",CL:"Chile",CM:"Cameroon",CN:"China",CO:"Colombia",CR:"Costa Rica",CS:"Serbia and Montenegro",CT:"Canton and Enderbury Islands",CU:"Cuba",CV:"Cape Verde",CX:"Christmas Island",CY:"Cyprus",CZ:"Czech Republic",DD:"East Germany",DE:"Germany",DJ:"Djibouti",DK:"Denmark",DM:"Dominica",DO:"Dominican Republic",DZ:"Algeria",EC:"Ecuador",EE:"Estonia",EG:"Egypt",EH:"Western Sahara",ER:"Eritrea",ES:"Spain",ET:"Ethiopia",FI:"Finland",FJ:"Fiji",FK:"Falkland Islands",FM:"Micronesia",FO:"Faroe Islands",FQ:"French Southern and Antarctic Territories",FR:"France",FX:"Metropolitan France",GA:"Gabon",GB:"United Kingdom",GD:"Grenada",GE:"Georgia",GF:"French Guiana",GG:"Guernsey",GH:"Ghana",GI:"Gibraltar",GL:"Greenland",GM:"Gambia",GN:"Guinea",GP:"Guadeloupe",GQ:"Equatorial Guinea",GR:"Greece",GS:"South Georgia and the South Sandwich Islands",GT:"Guatemala",GU:"Guam",GW:"Guinea-Bissau",GY:"Guyana",HK:"Hong Kong SAR China",HM:"Heard Island and McDonald Islands",HN:"Honduras",HR:"Croatia",HT:"Haiti",HU:"Hungary",ID:"Indonesia",IE:"Ireland",IL:"Israel",IM:"Isle of Man",IN:"India",IO:"British Indian Ocean Territory",IQ:"Iraq",IR:"Iran",IS:"Iceland",IT:"Italy",JE:"Jersey",JM:"Jamaica",JO:"Jordan",JP:"Japan",JT:"Johnston Island",KE:"Kenya",KG:"Kyrgyzstan",KH:"Cambodia",KI:"Kiribati",KM:"Comoros",KN:"Saint Kitts and Nevis",KP:"North Korea",KR:"South Korea",KW:"Kuwait",KY:"Cayman Islands",KZ:"Kazakhstan",LA:"Laos",LB:"Lebanon",LC:"Saint Lucia",LI:"Liechtenstein",LK:"Sri Lanka",LR:"Liberia",LS:"Lesotho",LT:"Lithuania",LU:"Luxembourg",LV:"Latvia",LY:"Libya",MA:"Morocco",MC:"Monaco",MD:"Moldova",ME:"Montenegro",MF:"Saint Martin",MG:"Madagascar",MH:"Marshall Islands",MI:"Midway Islands",MK:"Macedonia",ML:"Mali",MM:"Myanmar [Burma]",MN:"Mongolia",MO:"Macau SAR China",MP:"Northern Mariana Islands",MQ:"Martinique",MR:"Mauritania",MS:"Montserrat",MT:"Malta",MU:"Mauritius",MV:"Maldives",MW:"Malawi",MX:"Mexico",MY:"Malaysia",MZ:"Mozambique",NA:"Namibia",NC:"New Caledonia",NE:"Niger",NF:"Norfolk Island",NG:"Nigeria",NI:"Nicaragua",NL:"Netherlands",NO:"Norway",NP:"Nepal",NQ:"Dronning Maud Land",NR:"Nauru",NT:"Neutral Zone",NU:"Niue",NZ:"New Zealand",OM:"Oman",PA:"Panama",PC:"Pacific Islands Trust Territory",PE:"Peru",PF:"French Polynesia",PG:"Papua New Guinea",PH:"Philippines",PK:"Pakistan",PL:"Poland",PM:"Saint Pierre and Miquelon",PN:"Pitcairn Islands",PR:"Puerto Rico",PS:"Palestinian Territories",PT:"Portugal",PU:"U.S. Miscellaneous Pacific Islands",PW:"Palau",PY:"Paraguay",PZ:"Panama Canal Zone",QA:"Qatar",RE:"Réunion",RO:"Romania",RS:"Serbia",RU:"Russia",RW:"Rwanda",SA:"Saudi Arabia",SB:"Solomon Islands",SC:"Seychelles",SD:"Sudan",SE:"Sweden",SG:"Singapore",SH:"Saint Helena",SI:"Slovenia",SJ:"Svalbard and Jan Mayen",SK:"Slovakia",SL:"Sierra Leone",SM:"San Marino",SN:"Senegal",SO:"Somalia",SR:"Suriname",ST:"São Tomé and Príncipe",SU:"Union of Soviet Socialist Republics",SV:"El Salvador",SY:"Syria",SZ:"Swaziland",TC:"Turks and Caicos Islands",TD:"Chad",TF:"French Southern Territories",TG:"Togo",TH:"Thailand",TJ:"Tajikistan",TK:"Tokelau",TL:"Timor-Leste",TM:"Turkmenistan",TN:"Tunisia",TO:"Tonga",TR:"Turkey",TT:"Trinidad and Tobago",TV:"Tuvalu",TW:"Taiwan",TZ:"Tanzania",UA:"Ukraine",UG:"Uganda",UM:"U.S. Minor Outlying Islands",US:"United States",UY:"Uruguay",UZ:"Uzbekistan",VA:"Vatican City",VC:"Saint Vincent and the Grenadines",VD:"North Vietnam",VE:"Venezuela",VG:"British Virgin Islands",VI:"U.S. Virgin Islands",VN:"Vietnam",VU:"Vanuatu",WF:"Wallis and Futuna",WK:"Wake Island",WS:"Samoa",YD:"People's Democratic Republic of Yemen",YE:"Yemen",YT:"Mayotte",ZA:"South Africa",ZM:"Zambia",ZW:"Zimbabwe",ZZ:"Unknown or Invalid Region" }; + + var countriesArray = $.map(countries, function(value, key) { + return { + value: value, + data: key + }; + }); + + // initialize autocomplete with custom appendTo + $('#autocomplete-custom-append').autocomplete({ + lookup: countriesArray + }); + + }; + + /* AUTOSIZE */ + + function init_autosize() { + + if(typeof $.fn.autosize !== 'undefined'){ + + autosize($('.resizable_textarea')); + + } + + }; + + /* PARSLEY */ + + function init_parsley() { + + if( typeof (parsley) === 'undefined'){ return; } + console.log('init_parsley'); + + $/*.listen*/('parsley:field:validate', function() { + validateFront(); + }); + $('#demo-form .btn').on('click', function() { + $('#demo-form').parsley().validate(); + validateFront(); + }); + var validateFront = function() { + if (true === $('#demo-form').parsley().isValid()) { + $('.bs-callout-info').removeClass('hidden'); + $('.bs-callout-warning').addClass('hidden'); + } else { + $('.bs-callout-info').addClass('hidden'); + $('.bs-callout-warning').removeClass('hidden'); + } + }; + + $/*.listen*/('parsley:field:validate', function() { + validateFront(); + }); + $('#demo-form2 .btn').on('click', function() { + $('#demo-form2').parsley().validate(); + validateFront(); + }); + var validateFront = function() { + if (true === $('#demo-form2').parsley().isValid()) { + $('.bs-callout-info').removeClass('hidden'); + $('.bs-callout-warning').addClass('hidden'); + } else { + $('.bs-callout-info').addClass('hidden'); + $('.bs-callout-warning').removeClass('hidden'); + } + }; + + try { + hljs.initHighlightingOnLoad(); + } catch (err) {} + + }; + + + /* INPUTS */ + + function onAddTag(tag) { + alert("Added a tag: " + tag); + } + + function onRemoveTag(tag) { + alert("Removed a tag: " + tag); + } + + function onChangeTag(input, tag) { + alert("Changed a tag: " + tag); + } + + //tags input + function init_TagsInput() { + + if(typeof $.fn.tagsInput !== 'undefined'){ + + $('#tags_1').tagsInput({ + width: 'auto' + }); + + } + + }; + + /* SELECT2 */ + + function init_select2() { + + if( typeof (select2) === 'undefined'){ return; } + console.log('init_toolbox'); + + $(".select2_single").select2({ + placeholder: "Select a state", + allowClear: true + }); + $(".select2_group").select2({}); + $(".select2_multiple").select2({ + maximumSelectionLength: 4, + placeholder: "With Max Selection limit 4", + allowClear: true + }); + + }; + + /* WYSIWYG EDITOR */ + + function init_wysiwyg() { + + if( typeof ($.fn.wysiwyg) === 'undefined'){ return; } + console.log('init_wysiwyg'); + + function init_ToolbarBootstrapBindings() { + var fonts = ['Serif', 'Sans', 'Arial', 'Arial Black', 'Courier', + 'Courier New', 'Comic Sans MS', 'Helvetica', 'Impact', 'Lucida Grande', 'Lucida Sans', 'Tahoma', 'Times', + 'Times New Roman', 'Verdana' + ], + fontTarget = $('[title=Font]').siblings('.dropdown-menu'); + $.each(fonts, function(idx, fontName) { + fontTarget.append($('
  • ' + fontName + '
  • ')); + }); + $('a[title]').tooltip({ + container: 'body' + }); + $('.dropdown-menu input').click(function() { + return false; + }) + .change(function() { + $(this).parent('.dropdown-menu').siblings('.dropdown-toggle').dropdown('toggle'); + }) + .keydown('esc', function() { + this.value = ''; + $(this).change(); + }); + + $('[data-role=magic-overlay]').each(function() { + var overlay = $(this), + target = $(overlay.data('target')); + overlay.css('opacity', 0).css('position', 'absolute').offset(target.offset()).width(target.outerWidth()).height(target.outerHeight()); + }); + + if ("onwebkitspeechchange" in document.createElement("input")) { + var editorOffset = $('#editor').offset(); + + $('.voiceBtn').css('position', 'absolute').offset({ + top: editorOffset.top, + left: editorOffset.left + $('#editor').innerWidth() - 35 + }); + } else { + $('.voiceBtn').hide(); + } + } + + function showErrorAlert(reason, detail) { + var msg = ''; + if (reason === 'unsupported-file-type') { + msg = "Unsupported format " + detail; + } else { + console.log("error uploading file", reason, detail); + } + $('
    ' + + 'File upload error ' + msg + '
    ').prependTo('#alerts'); + } + + $('.editor-wrapper').each(function(){ + var id = $(this).attr('id'); //editor-one + + $(this).wysiwyg({ + toolbarSelector: '[data-target="#' + id + '"]', + fileUploadError: showErrorAlert + }); + }); + + + window.prettyPrint; + prettyPrint(); + + }; + + /* CROPPER */ + + function init_cropper() { + + + if( typeof ($.fn.cropper) === 'undefined'){ return; } + console.log('init_cropper'); + + var $image = $('#image'); + var $download = $('#download'); + var $dataX = $('#dataX'); + var $dataY = $('#dataY'); + var $dataHeight = $('#dataHeight'); + var $dataWidth = $('#dataWidth'); + var $dataRotate = $('#dataRotate'); + var $dataScaleX = $('#dataScaleX'); + var $dataScaleY = $('#dataScaleY'); + var options = { + aspectRatio: 16 / 9, + preview: '.img-preview', + crop: function (e) { + $dataX.val(Math.round(e.x)); + $dataY.val(Math.round(e.y)); + $dataHeight.val(Math.round(e.height)); + $dataWidth.val(Math.round(e.width)); + $dataRotate.val(e.rotate); + $dataScaleX.val(e.scaleX); + $dataScaleY.val(e.scaleY); + } + }; + + + // Tooltip + $('[data-toggle="tooltip"]').tooltip(); + + + // Cropper + $image.on({ + 'build.cropper': function (e) { + console.log(e.type); + }, + 'built.cropper': function (e) { + console.log(e.type); + }, + 'cropstart.cropper': function (e) { + console.log(e.type, e.action); + }, + 'cropmove.cropper': function (e) { + console.log(e.type, e.action); + }, + 'cropend.cropper': function (e) { + console.log(e.type, e.action); + }, + 'crop.cropper': function (e) { + console.log(e.type, e.x, e.y, e.width, e.height, e.rotate, e.scaleX, e.scaleY); + }, + 'zoom.cropper': function (e) { + console.log(e.type, e.ratio); + } + }).cropper(options); + + + // Buttons + if (!$.isFunction(document.createElement('canvas').getContext)) { + $('button[data-method="getCroppedCanvas"]').prop('disabled', true); + } + + if (typeof document.createElement('cropper').style.transition === 'undefined') { + $('button[data-method="rotate"]').prop('disabled', true); + $('button[data-method="scale"]').prop('disabled', true); + } + + + // Download + if (typeof $download[0].download === 'undefined') { + $download.addClass('disabled'); + } + + + // Options + $('.docs-toggles').on('change', 'input', function () { + var $this = $(this); + var name = $this.attr('name'); + var type = $this.prop('type'); + var cropBoxData; + var canvasData; + + if (!$image.data('cropper')) { + return; + } + + if (type === 'checkbox') { + options[name] = $this.prop('checked'); + cropBoxData = $image.cropper('getCropBoxData'); + canvasData = $image.cropper('getCanvasData'); + + options.built = function () { + $image.cropper('setCropBoxData', cropBoxData); + $image.cropper('setCanvasData', canvasData); + }; + } else if (type === 'radio') { + options[name] = $this.val(); + } + + $image.cropper('destroy').cropper(options); + }); + + + // Methods + $('.docs-buttons').on('click', '[data-method]', function () { + var $this = $(this); + var data = $this.data(); + var $target; + var result; + + if ($this.prop('disabled') || $this.hasClass('disabled')) { + return; + } + + if ($image.data('cropper') && data.method) { + data = $.extend({}, data); // Clone a new one + + if (typeof data.target !== 'undefined') { + $target = $(data.target); + + if (typeof data.option === 'undefined') { + try { + data.option = JSON.parse($target.val()); + } catch (e) { + console.log(e.message); + } + } + } + + result = $image.cropper(data.method, data.option, data.secondOption); + + switch (data.method) { + case 'scaleX': + case 'scaleY': + $(this).data('option', -data.option); + break; + + case 'getCroppedCanvas': + if (result) { + + // Bootstrap's Modal + $('#getCroppedCanvasModal').modal().find('.modal-body').html(result); + + if (!$download.hasClass('disabled')) { + $download.attr('href', result.toDataURL()); + } + } + + break; + } + + if ($.isPlainObject(result) && $target) { + try { + $target.val(JSON.stringify(result)); + } catch (e) { + console.log(e.message); + } + } + + } + }); + + // Keyboard + $(document.body).on('keydown', function (e) { + if (!$image.data('cropper') || this.scrollTop > 300) { + return; + } + + switch (e.which) { + case 37: + e.preventDefault(); + $image.cropper('move', -1, 0); + break; + + case 38: + e.preventDefault(); + $image.cropper('move', 0, -1); + break; + + case 39: + e.preventDefault(); + $image.cropper('move', 1, 0); + break; + + case 40: + e.preventDefault(); + $image.cropper('move', 0, 1); + break; + } + }); + + // Import image + var $inputImage = $('#inputImage'); + var URL = window.URL || window.webkitURL; + var blobURL; + + if (URL) { + $inputImage.change(function () { + var files = this.files; + var file; + + if (!$image.data('cropper')) { + return; + } + + if (files && files.length) { + file = files[0]; + + if (/^image\/\w+$/.test(file.type)) { + blobURL = URL.createObjectURL(file); + $image.one('built.cropper', function () { + + // Revoke when load complete + URL.revokeObjectURL(blobURL); + }).cropper('reset').cropper('replace', blobURL); + $inputImage.val(''); + } else { + window.alert('Please choose an image file.'); + } + } + }); + } else { + $inputImage.prop('disabled', true).parent().addClass('disabled'); + } + + + }; + + /* CROPPER --- end */ + + /* KNOB */ + + function init_knob() { + + if( typeof ($.fn.knob) === 'undefined'){ return; } + console.log('init_knob'); + + $(".knob").knob({ + change: function(value) { + //console.log("change : " + value); + }, + release: function(value) { + //console.log(this.$.attr('value')); + console.log("release : " + value); + }, + cancel: function() { + console.log("cancel : ", this); + }, + /*format : function (value) { + return value + '%'; + },*/ + draw: function() { + + // "tron" case + if (this.$.data('skin') == 'tron') { + + this.cursorExt = 0.3; + + var a = this.arc(this.cv) // Arc + , + pa // Previous arc + , r = 1; + + this.g.lineWidth = this.lineWidth; + + if (this.o.displayPrevious) { + pa = this.arc(this.v); + this.g.beginPath(); + this.g.strokeStyle = this.pColor; + this.g.arc(this.xy, this.xy, this.radius - this.lineWidth, pa.s, pa.e, pa.d); + this.g.stroke(); + } + + this.g.beginPath(); + this.g.strokeStyle = r ? this.o.fgColor : this.fgColor; + this.g.arc(this.xy, this.xy, this.radius - this.lineWidth, a.s, a.e, a.d); + this.g.stroke(); + + this.g.lineWidth = 2; + this.g.beginPath(); + this.g.strokeStyle = this.o.fgColor; + this.g.arc(this.xy, this.xy, this.radius - this.lineWidth + 1 + this.lineWidth * 2 / 3, 0, 2 * Math.PI, false); + this.g.stroke(); + + return false; + } + } + + }); + + // Example of infinite knob, iPod click wheel + var v, up = 0, + down = 0, + i = 0, + $idir = $("div.idir"), + $ival = $("div.ival"), + incr = function() { + i++; + $idir.show().html("+").fadeOut(); + $ival.html(i); + }, + decr = function() { + i--; + $idir.show().html("-").fadeOut(); + $ival.html(i); + }; + $("input.infinite").knob({ + min: 0, + max: 20, + stopper: false, + change: function() { + if (v > this.cv) { + if (up) { + decr(); + up = 0; + } else { + up = 1; + down = 0; + } + } else { + if (v < this.cv) { + if (down) { + incr(); + down = 0; + } else { + down = 1; + up = 0; + } + } + } + v = this.cv; + } + }); + + }; + + /* INPUT MASK */ + + function init_InputMask() { + + if( typeof ($.fn.inputmask) === 'undefined'){ return; } + console.log('init_InputMask'); + + $(":input").inputmask(); + + }; + + /* COLOR PICKER */ + + function init_ColorPicker() { + + if( typeof ($.fn.colorpicker) === 'undefined'){ return; } + console.log('init_ColorPicker'); + + $('.demo1').colorpicker(); + $('.demo2').colorpicker(); + + $('#demo_forceformat').colorpicker({ + format: 'rgba', + horizontal: true + }); + + $('#demo_forceformat3').colorpicker({ + format: 'rgba', + }); + + $('.demo-auto').colorpicker(); + + }; + + + /* ION RANGE SLIDER */ + + function init_IonRangeSlider() { + + if( typeof ($.fn.ionRangeSlider) === 'undefined'){ return; } + console.log('init_IonRangeSlider'); + + $("#range_27").ionRangeSlider({ + type: "double", + min: 1000000, + max: 2000000, + grid: true, + force_edges: true + }); + $("#range").ionRangeSlider({ + hide_min_max: true, + keyboard: true, + min: 0, + max: 5000, + from: 1000, + to: 4000, + type: 'double', + step: 1, + prefix: "$", + grid: true + }); + $("#range_25").ionRangeSlider({ + type: "double", + min: 1000000, + max: 2000000, + grid: true + }); + $("#range_26").ionRangeSlider({ + type: "double", + min: 0, + max: 10000, + step: 500, + grid: true, + grid_snap: true + }); + $("#range_31").ionRangeSlider({ + type: "double", + min: 0, + max: 100, + from: 30, + to: 70, + from_fixed: true + }); + $(".range_min_max").ionRangeSlider({ + type: "double", + min: 0, + max: 100, + from: 30, + to: 70, + max_interval: 50 + }); + $(".range_time24").ionRangeSlider({ + min: +moment().subtract(12, "hours").format("X"), + max: +moment().format("X"), + from: +moment().subtract(6, "hours").format("X"), + grid: true, + force_edges: true, + prettify: function(num) { + var m = moment(num, "X"); + return m.format("Do MMMM, HH:mm"); + } + }); + + }; + + + /* DATERANGEPICKER */ + + function init_daterangepicker() { + + if( typeof ($.fn.daterangepicker) === 'undefined'){ return; } + console.log('init_daterangepicker'); + + var cb = function(start, end, label) { + console.log(start.toISOString(), end.toISOString(), label); + $('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')); + }; + + var optionSet1 = { + startDate: moment().subtract(29, 'days'), + endDate: moment(), + minDate: '01/01/2012', + maxDate: '12/31/2015', + dateLimit: { + days: 60 + }, + showDropdowns: true, + showWeekNumbers: true, + timePicker: false, + timePickerIncrement: 1, + timePicker12Hour: true, + ranges: { + 'Today': [moment(), moment()], + 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], + 'Last 7 Days': [moment().subtract(6, 'days'), moment()], + 'Last 30 Days': [moment().subtract(29, 'days'), moment()], + 'This Month': [moment().startOf('month'), moment().endOf('month')], + 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] + }, + opens: 'left', + buttonClasses: ['btn btn-default'], + applyClass: 'btn-small btn-primary', + cancelClass: 'btn-small', + format: 'MM/DD/YYYY', + separator: ' to ', + locale: { + applyLabel: 'Submit', + cancelLabel: 'Clear', + fromLabel: 'From', + toLabel: 'To', + customRangeLabel: 'Custom', + daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], + firstDay: 1 + } + }; + + $('#reportrange span').html(moment().subtract(29, 'days').format('MMMM D, YYYY') + ' - ' + moment().format('MMMM D, YYYY')); + $('#reportrange').daterangepicker(optionSet1, cb); + $('#reportrange').on('show.daterangepicker', function() { + console.log("show event fired"); + }); + $('#reportrange').on('hide.daterangepicker', function() { + console.log("hide event fired"); + }); + $('#reportrange').on('apply.daterangepicker', function(ev, picker) { + console.log("apply event fired, start/end dates are " + picker.startDate.format('MMMM D, YYYY') + " to " + picker.endDate.format('MMMM D, YYYY')); + }); + $('#reportrange').on('cancel.daterangepicker', function(ev, picker) { + console.log("cancel event fired"); + }); + $('#options1').click(function() { + $('#reportrange').data('daterangepicker').setOptions(optionSet1, cb); + }); + $('#options2').click(function() { + $('#reportrange').data('daterangepicker').setOptions(optionSet2, cb); + }); + $('#destroy').click(function() { + $('#reportrange').data('daterangepicker').remove(); + }); + + } + + function init_daterangepicker_right() { + + if( typeof ($.fn.daterangepicker) === 'undefined'){ return; } + console.log('init_daterangepicker_right'); + + var cb = function(start, end, label) { + console.log(start.toISOString(), end.toISOString(), label); + $('#reportrange_right span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')); + }; + + var optionSet1 = { + startDate: moment().subtract(29, 'days'), + endDate: moment(), + minDate: '01/01/2012', + maxDate: '12/31/2020', + dateLimit: { + days: 60 + }, + showDropdowns: true, + showWeekNumbers: true, + timePicker: false, + timePickerIncrement: 1, + timePicker12Hour: true, + ranges: { + 'Today': [moment(), moment()], + 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], + 'Last 7 Days': [moment().subtract(6, 'days'), moment()], + 'Last 30 Days': [moment().subtract(29, 'days'), moment()], + 'This Month': [moment().startOf('month'), moment().endOf('month')], + 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] + }, + opens: 'right', + buttonClasses: ['btn btn-default'], + applyClass: 'btn-small btn-primary', + cancelClass: 'btn-small', + format: 'MM/DD/YYYY', + separator: ' to ', + locale: { + applyLabel: 'Submit', + cancelLabel: 'Clear', + fromLabel: 'From', + toLabel: 'To', + customRangeLabel: 'Custom', + daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], + firstDay: 1 + } + }; + + $('#reportrange_right span').html(moment().subtract(29, 'days').format('MMMM D, YYYY') + ' - ' + moment().format('MMMM D, YYYY')); + + $('#reportrange_right').daterangepicker(optionSet1, cb); + + $('#reportrange_right').on('show.daterangepicker', function() { + console.log("show event fired"); + }); + $('#reportrange_right').on('hide.daterangepicker', function() { + console.log("hide event fired"); + }); + $('#reportrange_right').on('apply.daterangepicker', function(ev, picker) { + console.log("apply event fired, start/end dates are " + picker.startDate.format('MMMM D, YYYY') + " to " + picker.endDate.format('MMMM D, YYYY')); + }); + $('#reportrange_right').on('cancel.daterangepicker', function(ev, picker) { + console.log("cancel event fired"); + }); + + $('#options1').click(function() { + $('#reportrange_right').data('daterangepicker').setOptions(optionSet1, cb); + }); + + $('#options2').click(function() { + $('#reportrange_right').data('daterangepicker').setOptions(optionSet2, cb); + }); + + $('#destroy').click(function() { + $('#reportrange_right').data('daterangepicker').remove(); + }); + + } + + function init_daterangepicker_single_call() { + + if( typeof ($.fn.daterangepicker) === 'undefined'){ return; } + console.log('init_daterangepicker_single_call'); + + $('#single_cal1').daterangepicker({ + singleDatePicker: true, + singleClasses: "picker_1" + }, function(start, end, label) { + console.log(start.toISOString(), end.toISOString(), label); + }); + $('#single_cal2').daterangepicker({ + singleDatePicker: true, + singleClasses: "picker_2" + }, function(start, end, label) { + console.log(start.toISOString(), end.toISOString(), label); + }); + $('#single_cal3').daterangepicker({ + singleDatePicker: true, + singleClasses: "picker_3" + }, function(start, end, label) { + console.log(start.toISOString(), end.toISOString(), label); + }); + $('#single_cal4').daterangepicker({ + singleDatePicker: true, + singleClasses: "picker_4" + }, function(start, end, label) { + console.log(start.toISOString(), end.toISOString(), label); + }); + + + } + + + function init_daterangepicker_reservation() { + + if( typeof ($.fn.daterangepicker) === 'undefined'){ return; } + console.log('init_daterangepicker_reservation'); + + $('#reservation').daterangepicker(null, function(start, end, label) { + console.log(start.toISOString(), end.toISOString(), label); + }); + + $('#reservation-time').daterangepicker({ + timePicker: true, + timePickerIncrement: 30, + locale: { + format: 'MM/DD/YYYY h:mm A' + } + }); + + } + + /* SMART WIZARD */ + + function init_SmartWizard() { + + if( typeof ($.fn.smartWizard) === 'undefined'){ return; } + console.log('init_SmartWizard'); + + $('#wizard').smartWizard(); + + $('#wizard_verticle').smartWizard({ + transitionEffect: 'slide' + }); + + $('.buttonNext').addClass('btn btn-success'); + $('.buttonPrevious').addClass('btn btn-primary'); + $('.buttonFinish').addClass('btn btn-default'); + + }; + + + /* VALIDATOR */ + + function init_validator () { + + if( typeof (validator) === 'undefined'){ return; } + console.log('init_validator'); + + // initialize the validator function + validator.message.date = 'not a real date'; + + // validate a field on "blur" event, a 'select' on 'change' event & a '.reuired' classed multifield on 'keyup': + $('form') + .on('blur', 'input[required], input.optional, select.required', validator.checkField) + .on('change', 'select.required', validator.checkField) + .on('keypress', 'input[required][pattern]', validator.keypress); + + $('.multi.required').on('keyup blur', 'input', function() { + validator.checkField.apply($(this).siblings().last()[0]); + }); + + $('form').submit(function(e) { + e.preventDefault(); + var submit = true; + + // evaluate the form using generic validaing + if (!validator.checkAll($(this))) { + submit = false; + } + + if (submit) + this.submit(); + + return false; + }); + + }; + + /* PNotify */ + + function init_PNotify() { + + if( typeof (PNotify) === 'undefined'){ return; } + console.log('init_PNotify'); + }; + + + /* CUSTOM NOTIFICATION */ + + function init_CustomNotification() { + + console.log('run_customtabs'); + + if( typeof (CustomTabs) === 'undefined'){ return; } + console.log('init_CustomTabs'); + + var cnt = 10; + + TabbedNotification = function(options) { + var message = ""; + + if (!document.getElementById('custom_notifications')) { + alert('doesnt exists'); + } else { + $('#custom_notifications ul.notifications').append("
  • "); + $('#custom_notifications #notif-group').append(message); + cnt++; + CustomTabs(options); + } + }; + + CustomTabs = function(options) { + $('.tabbed_notifications > div').hide(); + $('.tabbed_notifications > div:first-of-type').show(); + $('#custom_notifications').removeClass('dsp_none'); + $('.notifications a').click(function(e) { + e.preventDefault(); + var $this = $(this), + tabbed_notifications = '#' + $this.parents('.notifications').data('tabbed_notifications'), + others = $this.closest('li').siblings().children('a'), + target = $this.attr('href'); + others.removeClass('active'); + $this.addClass('active'); + $(tabbed_notifications).children('div').hide(); + $(target).show(); + }); + }; + + CustomTabs(); + + var tabid = idname = ''; + + $(document).on('click', '.notification_close', function(e) { + idname = $(this).parent().parent().attr("id"); + tabid = idname.substr(-2); + $('#ntf' + tabid).remove(); + $('#ntlink' + tabid).parent().remove(); + $('.notifications a').first().addClass('active'); + $('#notif-group div').first().css('display', 'block'); + }); + + }; + + /* EASYPIECHART */ + + function init_EasyPieChart() { + + if( typeof ($.fn.easyPieChart) === 'undefined'){ return; } + console.log('init_EasyPieChart'); + + $('.chart').easyPieChart({ + easing: 'easeOutElastic', + delay: 3000, + barColor: '#26B99A', + trackColor: '#fff', + scaleColor: false, + lineWidth: 20, + trackWidth: 16, + lineCap: 'butt', + onStep: function(from, to, percent) { + $(this.el).find('.percent').text(Math.round(percent)); + } + }); + var chart = window.chart = $('.chart').data('easyPieChart'); + $('.js_update').on('click', function() { + chart.update(Math.random() * 200 - 100); + }); + + //hover and retain popover when on popover content + var originalLeave = $.fn.popover.Constructor.prototype.leave; + $.fn.popover.Constructor.prototype.leave = function(obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type); + var container, timeout; + + originalLeave.call(this, obj); + + if (obj.currentTarget) { + container = $(obj.currentTarget).siblings('.popover'); + timeout = self.timeout; + container.one('mouseenter', function() { + //We entered the actual popover – call off the dogs + clearTimeout(timeout); + //Let's monitor popover content instead + container.one('mouseleave', function() { + $.fn.popover.Constructor.prototype.leave.call(self, self); + }); + }); + } + }; + + $('body').popover({ + selector: '[data-popover]', + trigger: 'click hover', + delay: { + show: 50, + hide: 400 + } + }); + + }; + + + function init_charts() { + + console.log('run_charts typeof [' + typeof (Chart) + ']'); + + if( typeof (Chart) === 'undefined'){ return; } + + console.log('init_charts'); + + + Chart.defaults.global.legend = { + enabled: false + }; + + + + if ($('#canvas_line').length ){ + + var canvas_line_00 = new Chart(document.getElementById("canvas_line"), { + type: 'line', + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + }, + }); + + } + + + if ($('#canvas_line1').length ){ + + var canvas_line_01 = new Chart(document.getElementById("canvas_line1"), { + type: 'line', + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + }, + }); + + } + + + if ($('#canvas_line2').length ){ + + var canvas_line_02 = new Chart(document.getElementById("canvas_line2"), { + type: 'line', + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + }, + }); + + } + + + if ($('#canvas_line3').length ){ + + var canvas_line_03 = new Chart(document.getElementById("canvas_line3"), { + type: 'line', + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + }, + }); + + } + + + if ($('#canvas_line4').length ){ + + var canvas_line_04 = new Chart(document.getElementById("canvas_line4"), { + type: 'line', + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + }, + }); + + } + + + // Line chart + + if ($('#lineChart').length ){ + + var ctx = document.getElementById("lineChart"); + var lineChart = new Chart(ctx, { + type: 'line', + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(38, 185, 154, 0.31)", + borderColor: "rgba(38, 185, 154, 0.7)", + pointBorderColor: "rgba(38, 185, 154, 0.7)", + pointBackgroundColor: "rgba(38, 185, 154, 0.7)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointBorderWidth: 1, + data: [31, 74, 6, 39, 20, 85, 7] + }, { + label: "My Second dataset", + backgroundColor: "rgba(3, 88, 106, 0.3)", + borderColor: "rgba(3, 88, 106, 0.70)", + pointBorderColor: "rgba(3, 88, 106, 0.70)", + pointBackgroundColor: "rgba(3, 88, 106, 0.70)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(151,187,205,1)", + pointBorderWidth: 1, + data: [82, 23, 66, 9, 99, 4, 2] + }] + }, + }); + + } + + // Bar chart + + if ($('#mybarChart').length ){ + + var ctx = document.getElementById("mybarChart"); + var mybarChart = new Chart(ctx, { + type: 'bar', + data: { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [{ + label: '# of Votes', + backgroundColor: "#26B99A", + data: [51, 30, 40, 28, 92, 50, 45] + }, { + label: '# of Votes', + backgroundColor: "#03586A", + data: [41, 56, 25, 48, 72, 34, 12] + }] + }, + + options: { + scales: { + yAxes: [{ + ticks: { + beginAtZero: true + } + }] + } + } + }); + + } + + + // Doughnut chart + + if ($('#canvasDoughnut').length ){ + + var ctx = document.getElementById("canvasDoughnut"); + var data = { + labels: [ + "Dark Grey", + "Purple Color", + "Gray Color", + "Green Color", + "Blue Color" + ], + datasets: [{ + data: [120, 50, 140, 180, 100], + backgroundColor: [ + "#455C73", + "#9B59B6", + "#BDC3C7", + "#26B99A", + "#3498DB" + ], + hoverBackgroundColor: [ + "#34495E", + "#B370CF", + "#CFD4D8", + "#36CAAB", + "#49A9EA" + ] + + }] + }; + + var canvasDoughnut = new Chart(ctx, { + type: 'doughnut', + tooltipFillColor: "rgba(51, 51, 51, 0.55)", + data: data + }); + + } + + // Radar chart + + if ($('#canvasRadar').length ){ + + var ctx = document.getElementById("canvasRadar"); + var data = { + labels: ["Eating", "Drinking", "Sleeping", "Designing", "Coding", "Cycling", "Running"], + datasets: [{ + label: "My First dataset", + backgroundColor: "rgba(3, 88, 106, 0.2)", + borderColor: "rgba(3, 88, 106, 0.80)", + pointBorderColor: "rgba(3, 88, 106, 0.80)", + pointBackgroundColor: "rgba(3, 88, 106, 0.80)", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(220,220,220,1)", + data: [65, 59, 90, 81, 56, 55, 40] + }, { + label: "My Second dataset", + backgroundColor: "rgba(38, 185, 154, 0.2)", + borderColor: "rgba(38, 185, 154, 0.85)", + pointColor: "rgba(38, 185, 154, 0.85)", + pointStrokeColor: "#fff", + pointHighlightFill: "#fff", + pointHighlightStroke: "rgba(151,187,205,1)", + data: [28, 48, 40, 19, 96, 27, 100] + }] + }; + + var canvasRadar = new Chart(ctx, { + type: 'radar', + data: data, + }); + + } + + + // Pie chart + if ($('#pieChart').length ){ + + var ctx = document.getElementById("pieChart"); + var data = { + datasets: [{ + data: [120, 50, 140, 180, 100], + backgroundColor: [ + "#455C73", + "#9B59B6", + "#BDC3C7", + "#26B99A", + "#3498DB" + ], + label: 'My dataset' // for legend + }], + labels: [ + "Dark Gray", + "Purple", + "Gray", + "Green", + "Blue" + ] + }; + + var pieChart = new Chart(ctx, { + data: data, + type: 'pie', + otpions: { + legend: false + } + }); + + } + + + // PolarArea chart + + if ($('#polarArea').length ){ + + var ctx = document.getElementById("polarArea"); + var data = { + datasets: [{ + data: [120, 50, 140, 180, 100], + backgroundColor: [ + "#455C73", + "#9B59B6", + "#BDC3C7", + "#26B99A", + "#3498DB" + ], + label: 'My dataset' + }], + labels: [ + "Dark Gray", + "Purple", + "Gray", + "Green", + "Blue" + ] + }; + + var polarArea = new Chart(ctx, { + data: data, + type: 'polarArea', + options: { + scale: { + ticks: { + beginAtZero: true + } + } + } + }); + + } + } + + /* COMPOSE */ + + function init_compose() { + + if( typeof ($.fn.slideToggle) === 'undefined'){ return; } + console.log('init_compose'); + + $('#compose, .compose-close').click(function(){ + $('.compose').slideToggle(); + }); + + }; + + /* CALENDAR */ + + function init_calendar() { + + if( typeof ($.fn.fullCalendar) === 'undefined'){ return; } + console.log('init_calendar'); + + var date = new Date(), + d = date.getDate(), + m = date.getMonth(), + y = date.getFullYear(), + started, + categoryClass; + + var calendar = $('#calendar').fullCalendar({ + header: { + left: 'prev,next today', + center: 'title', + right: 'month,agendaWeek,agendaDay,listMonth' + }, + selectable: true, + selectHelper: true, + select: function(start, end, allDay) { + $('#fc_create').click(); + + started = start; + ended = end; + + $(".antosubmit").on("click", function() { + var title = $("#title").val(); + if (end) { + ended = end; + } + + categoryClass = $("#event_type").val(); + + if (title) { + calendar.fullCalendar('renderEvent', { + title: title, + start: started, + end: end, + allDay: allDay + }, + true // make the event "stick" + ); + } + + $('#title').val(''); + + calendar.fullCalendar('unselect'); + + $('.antoclose').click(); + + return false; + }); + }, + eventClick: function(calEvent, jsEvent, view) { + $('#fc_edit').click(); + $('#title2').val(calEvent.title); + + categoryClass = $("#event_type").val(); + + $(".antosubmit2").on("click", function() { + calEvent.title = $("#title2").val(); + + calendar.fullCalendar('updateEvent', calEvent); + $('.antoclose2').click(); + }); + + calendar.fullCalendar('unselect'); + }, + editable: true, + events: [{ + title: 'All Day Event', + start: new Date(y, m, 1) + }, { + title: 'Long Event', + start: new Date(y, m, d - 5), + end: new Date(y, m, d - 2) + }, { + title: 'Meeting', + start: new Date(y, m, d, 10, 30), + allDay: false + }, { + title: 'Lunch', + start: new Date(y, m, d + 14, 12, 0), + end: new Date(y, m, d, 14, 0), + allDay: false + }, { + title: 'Birthday Party', + start: new Date(y, m, d + 1, 19, 0), + end: new Date(y, m, d + 1, 22, 30), + allDay: false + }, { + title: 'Click for Google', + start: new Date(y, m, 28), + end: new Date(y, m, 29), + url: 'http://google.com/' + }] + }); + + }; + + /* DATA TABLES */ + + function init_DataTables() { + + console.log('run_datatables'); + + if( typeof ($.fn.DataTable) === 'undefined'){ return; } + console.log('init_DataTables'); + + var handleDataTableButtons = function() { + if ($("#datatable-buttons").length) { + $("#datatable-buttons").DataTable({ + dom: "Blfrtip", + buttons: [ + { + extend: "copy", + className: "btn-sm" + }, + { + extend: "csv", + className: "btn-sm" + }, + { + extend: "excel", + className: "btn-sm" + }, + { + extend: "pdfHtml5", + className: "btn-sm" + }, + { + extend: "print", + className: "btn-sm" + }, + ], + responsive: true + }); + } + }; + + TableManageButtons = function() { + "use strict"; + return { + init: function() { + handleDataTableButtons(); + } + }; + }(); + + $('#datatable').dataTable(); + + $('#datatable-keytable').DataTable({ + keys: true + }); + + $('#datatable-responsive').DataTable(); + + $('#datatable-scroller').DataTable({ + ajax: "js/datatables/json/scroller-demo.json", + deferRender: true, + scrollY: 380, + scrollCollapse: true, + scroller: true + }); + + $('#datatable-fixed-header').DataTable({ + fixedHeader: true + }); + + var $datatable = $('#datatable-checkbox'); + + $datatable.dataTable({ + 'order': [[ 1, 'asc' ]], + 'columnDefs': [ + { orderable: false, targets: [0] } + ] + }); + $datatable.on('draw.dt', function() { + $('checkbox input').iCheck({ + checkboxClass: 'icheckbox_flat-green' + }); + }); + + TableManageButtons.init(); + + }; + + /* CHART - MORRIS */ + + function init_morris_charts() { + + if( typeof (Morris) === 'undefined'){ return; } + console.log('init_morris_charts'); + + if ($('#graph_bar').length){ + + Morris.Bar({ + element: 'graph_bar', + data: [ + {device: 'iPhone 4', geekbench: 380}, + {device: 'iPhone 4S', geekbench: 655}, + {device: 'iPhone 3GS', geekbench: 275}, + {device: 'iPhone 5', geekbench: 1571}, + {device: 'iPhone 5S', geekbench: 655}, + {device: 'iPhone 6', geekbench: 2154}, + {device: 'iPhone 6 Plus', geekbench: 1144}, + {device: 'iPhone 6S', geekbench: 2371}, + {device: 'iPhone 6S Plus', geekbench: 1471}, + {device: 'Other', geekbench: 1371} + ], + xkey: 'device', + ykeys: ['geekbench'], + labels: ['Geekbench'], + barRatio: 0.4, + barColors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'], + xLabelAngle: 35, + hideHover: 'auto', + resize: true + }); + + } + + if ($('#graph_bar_group').length ){ + + Morris.Bar({ + element: 'graph_bar_group', + data: [ + {"period": "2016-10-01", "licensed": 807, "sorned": 660}, + {"period": "2016-09-30", "licensed": 1251, "sorned": 729}, + {"period": "2016-09-29", "licensed": 1769, "sorned": 1018}, + {"period": "2016-09-20", "licensed": 2246, "sorned": 1461}, + {"period": "2016-09-19", "licensed": 2657, "sorned": 1967}, + {"period": "2016-09-18", "licensed": 3148, "sorned": 2627}, + {"period": "2016-09-17", "licensed": 3471, "sorned": 3740}, + {"period": "2016-09-16", "licensed": 2871, "sorned": 2216}, + {"period": "2016-09-15", "licensed": 2401, "sorned": 1656}, + {"period": "2016-09-10", "licensed": 2115, "sorned": 1022} + ], + xkey: 'period', + barColors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'], + ykeys: ['licensed', 'sorned'], + labels: ['Licensed', 'SORN'], + hideHover: 'auto', + xLabelAngle: 60, + resize: true + }); + + } + + if ($('#graphx').length ){ + + Morris.Bar({ + element: 'graphx', + data: [ + {x: '2015 Q1', y: 2, z: 3, a: 4}, + {x: '2015 Q2', y: 3, z: 5, a: 6}, + {x: '2015 Q3', y: 4, z: 3, a: 2}, + {x: '2015 Q4', y: 2, z: 4, a: 5} + ], + xkey: 'x', + ykeys: ['y', 'z', 'a'], + barColors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'], + hideHover: 'auto', + labels: ['Y', 'Z', 'A'], + resize: true + }).on('click', function (i, row) { + console.log(i, row); + }); + + } + + if ($('#graph_area').length ){ + + Morris.Area({ + element: 'graph_area', + data: [ + {period: '2014 Q1', iphone: 2666, ipad: null, itouch: 2647}, + {period: '2014 Q2', iphone: 2778, ipad: 2294, itouch: 2441}, + {period: '2014 Q3', iphone: 4912, ipad: 1969, itouch: 2501}, + {period: '2014 Q4', iphone: 3767, ipad: 3597, itouch: 5689}, + {period: '2015 Q1', iphone: 6810, ipad: 1914, itouch: 2293}, + {period: '2015 Q2', iphone: 5670, ipad: 4293, itouch: 1881}, + {period: '2015 Q3', iphone: 4820, ipad: 3795, itouch: 1588}, + {period: '2015 Q4', iphone: 15073, ipad: 5967, itouch: 5175}, + {period: '2016 Q1', iphone: 10687, ipad: 4460, itouch: 2028}, + {period: '2016 Q2', iphone: 8432, ipad: 5713, itouch: 1791} + ], + xkey: 'period', + ykeys: ['iphone', 'ipad', 'itouch'], + lineColors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'], + labels: ['iPhone', 'iPad', 'iPod Touch'], + pointSize: 2, + hideHover: 'auto', + resize: true + }); + + } + + if ($('#graph_donut').length ){ + + Morris.Donut({ + element: 'graph_donut', + data: [ + {label: 'Jam', value: 25}, + {label: 'Frosted', value: 40}, + {label: 'Custard', value: 25}, + {label: 'Sugar', value: 10} + ], + colors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'], + formatter: function (y) { + return y + "%"; + }, + resize: true + }); + + } + + if ($('#graph_line').length ){ + + Morris.Line({ + element: 'graph_line', + xkey: 'year', + ykeys: ['value'], + labels: ['Value'], + hideHover: 'auto', + lineColors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'], + data: [ + {year: '2012', value: 20}, + {year: '2013', value: 10}, + {year: '2014', value: 5}, + {year: '2015', value: 5}, + {year: '2016', value: 20} + ], + resize: true + }); + + $MENU_TOGGLE.on('click', function() { + $(window).resize(); + }); + + } + + }; + + + + /* ECHRTS */ + + + function init_echarts() { + + if( typeof (echarts) === 'undefined'){ return; } + console.log('init_echarts'); + + + var theme = { + color: [ + '#26B99A', '#34495E', '#BDC3C7', '#3498DB', + '#9B59B6', '#8abb6f', '#759c6a', '#bfd3b7' + ], + + title: { + itemGap: 8, + textStyle: { + fontWeight: 'normal', + color: '#408829' + } + }, + + dataRange: { + color: ['#1f610a', '#97b58d'] + }, + + toolbox: { + color: ['#408829', '#408829', '#408829', '#408829'] + }, + + tooltip: { + backgroundColor: 'rgba(0,0,0,0.5)', + axisPointer: { + type: 'line', + lineStyle: { + color: '#408829', + type: 'dashed' + }, + crossStyle: { + color: '#408829' + }, + shadowStyle: { + color: 'rgba(200,200,200,0.3)' + } + } + }, + + dataZoom: { + dataBackgroundColor: '#eee', + fillerColor: 'rgba(64,136,41,0.2)', + handleColor: '#408829' + }, + grid: { + borderWidth: 0 + }, + + categoryAxis: { + axisLine: { + lineStyle: { + color: '#408829' + } + }, + splitLine: { + lineStyle: { + color: ['#eee'] + } + } + }, + + valueAxis: { + axisLine: { + lineStyle: { + color: '#408829' + } + }, + splitArea: { + show: true, + areaStyle: { + color: ['rgba(250,250,250,0.1)', 'rgba(200,200,200,0.1)'] + } + }, + splitLine: { + lineStyle: { + color: ['#eee'] + } + } + }, + timeline: { + lineStyle: { + color: '#408829' + }, + controlStyle: { + normal: {color: '#408829'}, + emphasis: {color: '#408829'} + } + }, + + k: { + itemStyle: { + normal: { + color: '#68a54a', + color0: '#a9cba2', + lineStyle: { + width: 1, + color: '#408829', + color0: '#86b379' + } + } + } + }, + map: { + itemStyle: { + normal: { + areaStyle: { + color: '#ddd' + }, + label: { + textStyle: { + color: '#c12e34' + } + } + }, + emphasis: { + areaStyle: { + color: '#99d2dd' + }, + label: { + textStyle: { + color: '#c12e34' + } + } + } + } + }, + force: { + itemStyle: { + normal: { + linkStyle: { + strokeColor: '#408829' + } + } + } + }, + chord: { + padding: 4, + itemStyle: { + normal: { + lineStyle: { + width: 1, + color: 'rgba(128, 128, 128, 0.5)' + }, + chordStyle: { + lineStyle: { + width: 1, + color: 'rgba(128, 128, 128, 0.5)' + } + } + }, + emphasis: { + lineStyle: { + width: 1, + color: 'rgba(128, 128, 128, 0.5)' + }, + chordStyle: { + lineStyle: { + width: 1, + color: 'rgba(128, 128, 128, 0.5)' + } + } + } + } + }, + gauge: { + startAngle: 225, + endAngle: -45, + axisLine: { + show: true, + lineStyle: { + color: [[0.2, '#86b379'], [0.8, '#68a54a'], [1, '#408829']], + width: 8 + } + }, + axisTick: { + splitNumber: 10, + length: 12, + lineStyle: { + color: 'auto' + } + }, + axisLabel: { + textStyle: { + color: 'auto' + } + }, + splitLine: { + length: 18, + lineStyle: { + color: 'auto' + } + }, + pointer: { + length: '90%', + color: 'auto' + }, + title: { + textStyle: { + color: '#333' + } + }, + detail: { + textStyle: { + color: 'auto' + } + } + }, + textStyle: { + fontFamily: 'Arial, Verdana, sans-serif' + } + }; + + + //echart Bar + + if ($('#mainb').length ){ + + var echartBar = echarts.init(document.getElementById('mainb'), theme); + + echartBar.setOption({ + title: { + text: 'Graph title', + subtext: 'Graph Sub-text' + }, + tooltip: { + trigger: 'axis' + }, + legend: { + data: ['sales', 'purchases'] + }, + toolbox: { + show: false + }, + calculable: false, + xAxis: [{ + type: 'category', + data: ['1?', '2?', '3?', '4?', '5?', '6?', '7?', '8?', '9?', '10?', '11?', '12?'] + }], + yAxis: [{ + type: 'value' + }], + series: [{ + name: 'sales', + type: 'bar', + data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3], + markPoint: { + data: [{ + type: 'max', + name: '???' + }, { + type: 'min', + name: '???' + }] + }, + markLine: { + data: [{ + type: 'average', + name: '???' + }] + } + }, { + name: 'purchases', + type: 'bar', + data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3], + markPoint: { + data: [{ + name: 'sales', + value: 182.2, + xAxis: 7, + yAxis: 183, + }, { + name: 'purchases', + value: 2.3, + xAxis: 11, + yAxis: 3 + }] + }, + markLine: { + data: [{ + type: 'average', + name: '???' + }] + } + }] + }); + + } + + + + + //echart Radar + + if ($('#echart_sonar').length ){ + + var echartRadar = echarts.init(document.getElementById('echart_sonar'), theme); + + echartRadar.setOption({ + title: { + text: 'Budget vs spending', + subtext: 'Subtitle' + }, + tooltip: { + trigger: 'item' + }, + legend: { + orient: 'vertical', + x: 'right', + y: 'bottom', + data: ['Allocated Budget', 'Actual Spending'] + }, + toolbox: { + show: true, + feature: { + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + polar: [{ + indicator: [{ + text: 'Sales', + max: 6000 + }, { + text: 'Administration', + max: 16000 + }, { + text: 'Information Techology', + max: 30000 + }, { + text: 'Customer Support', + max: 38000 + }, { + text: 'Development', + max: 52000 + }, { + text: 'Marketing', + max: 25000 + }] + }], + calculable: true, + series: [{ + name: 'Budget vs spending', + type: 'radar', + data: [{ + value: [4300, 10000, 28000, 35000, 50000, 19000], + name: 'Allocated Budget' + }, { + value: [5000, 14000, 28000, 31000, 42000, 21000], + name: 'Actual Spending' + }] + }] + }); + + } + + //echart Funnel + + if ($('#echart_pyramid').length ){ + + var echartFunnel = echarts.init(document.getElementById('echart_pyramid'), theme); + + echartFunnel.setOption({ + title: { + text: 'Echart Pyramid Graph', + subtext: 'Subtitle' + }, + tooltip: { + trigger: 'item', + formatter: "{a}
    {b} : {c}%" + }, + toolbox: { + show: true, + feature: { + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + legend: { + data: ['Something #1', 'Something #2', 'Something #3', 'Something #4', 'Something #5'], + orient: 'vertical', + x: 'left', + y: 'bottom' + }, + calculable: true, + series: [{ + name: '漏斗图', + type: 'funnel', + width: '40%', + data: [{ + value: 60, + name: 'Something #1' + }, { + value: 40, + name: 'Something #2' + }, { + value: 20, + name: 'Something #3' + }, { + value: 80, + name: 'Something #4' + }, { + value: 100, + name: 'Something #5' + }] + }] + }); + + } + + //echart Gauge + + if ($('#echart_gauge').length ){ + + var echartGauge = echarts.init(document.getElementById('echart_gauge'), theme); + + echartGauge.setOption({ + tooltip: { + formatter: "{a}
    {b} : {c}%" + }, + toolbox: { + show: true, + feature: { + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + series: [{ + name: 'Performance', + type: 'gauge', + center: ['50%', '50%'], + startAngle: 140, + endAngle: -140, + min: 0, + max: 100, + precision: 0, + splitNumber: 10, + axisLine: { + show: true, + lineStyle: { + color: [ + [0.2, 'lightgreen'], + [0.4, 'orange'], + [0.8, 'skyblue'], + [1, '#ff4500'] + ], + width: 30 + } + }, + axisTick: { + show: true, + splitNumber: 5, + length: 8, + lineStyle: { + color: '#eee', + width: 1, + type: 'solid' + } + }, + axisLabel: { + show: true, + formatter: function(v) { + switch (v + '') { + case '10': + return 'a'; + case '30': + return 'b'; + case '60': + return 'c'; + case '90': + return 'd'; + default: + return ''; + } + }, + textStyle: { + color: '#333' + } + }, + splitLine: { + show: true, + length: 30, + lineStyle: { + color: '#eee', + width: 2, + type: 'solid' + } + }, + pointer: { + length: '80%', + width: 8, + color: 'auto' + }, + title: { + show: true, + offsetCenter: ['-65%', -10], + textStyle: { + color: '#333', + fontSize: 15 + } + }, + detail: { + show: true, + backgroundColor: 'rgba(0,0,0,0)', + borderWidth: 0, + borderColor: '#ccc', + width: 100, + height: 40, + offsetCenter: ['-60%', 10], + formatter: '{value}%', + textStyle: { + color: 'auto', + fontSize: 30 + } + }, + data: [{ + value: 50, + name: 'Performance' + }] + }] + }); + + } + + //echart Line + + if ($('#echart_line').length ){ + + var echartLine = echarts.init(document.getElementById('echart_line'), theme); + + echartLine.setOption({ + title: { + text: 'Line Graph', + subtext: 'Subtitle' + }, + tooltip: { + trigger: 'axis' + }, + legend: { + x: 220, + y: 40, + data: ['Intent', 'Pre-order', 'Deal'] + }, + toolbox: { + show: true, + feature: { + magicType: { + show: true, + title: { + line: 'Line', + bar: 'Bar', + stack: 'Stack', + tiled: 'Tiled' + }, + type: ['line', 'bar', 'stack', 'tiled'] + }, + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + calculable: true, + xAxis: [{ + type: 'category', + boundaryGap: false, + data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] + }], + yAxis: [{ + type: 'value' + }], + series: [{ + name: 'Deal', + type: 'line', + smooth: true, + itemStyle: { + normal: { + areaStyle: { + type: 'default' + } + } + }, + data: [10, 12, 21, 54, 260, 830, 710] + }, { + name: 'Pre-order', + type: 'line', + smooth: true, + itemStyle: { + normal: { + areaStyle: { + type: 'default' + } + } + }, + data: [30, 182, 434, 791, 390, 30, 10] + }, { + name: 'Intent', + type: 'line', + smooth: true, + itemStyle: { + normal: { + areaStyle: { + type: 'default' + } + } + }, + data: [1320, 1132, 601, 234, 120, 90, 20] + }] + }); + + } + + //echart Scatter + + if ($('#echart_scatter').length ){ + + var echartScatter = echarts.init(document.getElementById('echart_scatter'), theme); + + echartScatter.setOption({ + title: { + text: 'Scatter Graph', + subtext: 'Heinz 2003' + }, + tooltip: { + trigger: 'axis', + showDelay: 0, + axisPointer: { + type: 'cross', + lineStyle: { + type: 'dashed', + width: 1 + } + } + }, + legend: { + data: ['Data2', 'Data1'] + }, + toolbox: { + show: true, + feature: { + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + xAxis: [{ + type: 'value', + scale: true, + axisLabel: { + formatter: '{value} cm' + } + }], + yAxis: [{ + type: 'value', + scale: true, + axisLabel: { + formatter: '{value} kg' + } + }], + series: [{ + name: 'Data1', + type: 'scatter', + tooltip: { + trigger: 'item', + formatter: function(params) { + if (params.value.length > 1) { + return params.seriesName + ' :
    ' + params.value[0] + 'cm ' + params.value[1] + 'kg '; + } else { + return params.seriesName + ' :
    ' + params.name + ' : ' + params.value + 'kg '; + } + } + }, + data: [ + [161.2, 51.6], + [167.5, 59.0], + [159.5, 49.2], + [157.0, 63.0], + [155.8, 53.6], + [170.0, 59.0], + [159.1, 47.6], + [166.0, 69.8], + [176.2, 66.8], + [160.2, 75.2], + [172.5, 55.2], + [170.9, 54.2], + [172.9, 62.5], + [153.4, 42.0], + [160.0, 50.0], + [147.2, 49.8], + [168.2, 49.2], + [175.0, 73.2], + [157.0, 47.8], + [167.6, 68.8], + [159.5, 50.6], + [175.0, 82.5], + [166.8, 57.2], + [176.5, 87.8], + [170.2, 72.8], + [174.0, 54.5], + [173.0, 59.8], + [179.9, 67.3], + [170.5, 67.8], + [160.0, 47.0], + [154.4, 46.2], + [162.0, 55.0], + [176.5, 83.0], + [160.0, 54.4], + [152.0, 45.8], + [162.1, 53.6], + [170.0, 73.2], + [160.2, 52.1], + [161.3, 67.9], + [166.4, 56.6], + [168.9, 62.3], + [163.8, 58.5], + [167.6, 54.5], + [160.0, 50.2], + [161.3, 60.3], + [167.6, 58.3], + [165.1, 56.2], + [160.0, 50.2], + [170.0, 72.9], + [157.5, 59.8], + [167.6, 61.0], + [160.7, 69.1], + [163.2, 55.9], + [152.4, 46.5], + [157.5, 54.3], + [168.3, 54.8], + [180.3, 60.7], + [165.5, 60.0], + [165.0, 62.0], + [164.5, 60.3], + [156.0, 52.7], + [160.0, 74.3], + [163.0, 62.0], + [165.7, 73.1], + [161.0, 80.0], + [162.0, 54.7], + [166.0, 53.2], + [174.0, 75.7], + [172.7, 61.1], + [167.6, 55.7], + [151.1, 48.7], + [164.5, 52.3], + [163.5, 50.0], + [152.0, 59.3], + [169.0, 62.5], + [164.0, 55.7], + [161.2, 54.8], + [155.0, 45.9], + [170.0, 70.6], + [176.2, 67.2], + [170.0, 69.4], + [162.5, 58.2], + [170.3, 64.8], + [164.1, 71.6], + [169.5, 52.8], + [163.2, 59.8], + [154.5, 49.0], + [159.8, 50.0], + [173.2, 69.2], + [170.0, 55.9], + [161.4, 63.4], + [169.0, 58.2], + [166.2, 58.6], + [159.4, 45.7], + [162.5, 52.2], + [159.0, 48.6], + [162.8, 57.8], + [159.0, 55.6], + [179.8, 66.8], + [162.9, 59.4], + [161.0, 53.6], + [151.1, 73.2], + [168.2, 53.4], + [168.9, 69.0], + [173.2, 58.4], + [171.8, 56.2], + [178.0, 70.6], + [164.3, 59.8], + [163.0, 72.0], + [168.5, 65.2], + [166.8, 56.6], + [172.7, 105.2], + [163.5, 51.8], + [169.4, 63.4], + [167.8, 59.0], + [159.5, 47.6], + [167.6, 63.0], + [161.2, 55.2], + [160.0, 45.0], + [163.2, 54.0], + [162.2, 50.2], + [161.3, 60.2], + [149.5, 44.8], + [157.5, 58.8], + [163.2, 56.4], + [172.7, 62.0], + [155.0, 49.2], + [156.5, 67.2], + [164.0, 53.8], + [160.9, 54.4], + [162.8, 58.0], + [167.0, 59.8], + [160.0, 54.8], + [160.0, 43.2], + [168.9, 60.5], + [158.2, 46.4], + [156.0, 64.4], + [160.0, 48.8], + [167.1, 62.2], + [158.0, 55.5], + [167.6, 57.8], + [156.0, 54.6], + [162.1, 59.2], + [173.4, 52.7], + [159.8, 53.2], + [170.5, 64.5], + [159.2, 51.8], + [157.5, 56.0], + [161.3, 63.6], + [162.6, 63.2], + [160.0, 59.5], + [168.9, 56.8], + [165.1, 64.1], + [162.6, 50.0], + [165.1, 72.3], + [166.4, 55.0], + [160.0, 55.9], + [152.4, 60.4], + [170.2, 69.1], + [162.6, 84.5], + [170.2, 55.9], + [158.8, 55.5], + [172.7, 69.5], + [167.6, 76.4], + [162.6, 61.4], + [167.6, 65.9], + [156.2, 58.6], + [175.2, 66.8], + [172.1, 56.6], + [162.6, 58.6], + [160.0, 55.9], + [165.1, 59.1], + [182.9, 81.8], + [166.4, 70.7], + [165.1, 56.8], + [177.8, 60.0], + [165.1, 58.2], + [175.3, 72.7], + [154.9, 54.1], + [158.8, 49.1], + [172.7, 75.9], + [168.9, 55.0], + [161.3, 57.3], + [167.6, 55.0], + [165.1, 65.5], + [175.3, 65.5], + [157.5, 48.6], + [163.8, 58.6], + [167.6, 63.6], + [165.1, 55.2], + [165.1, 62.7], + [168.9, 56.6], + [162.6, 53.9], + [164.5, 63.2], + [176.5, 73.6], + [168.9, 62.0], + [175.3, 63.6], + [159.4, 53.2], + [160.0, 53.4], + [170.2, 55.0], + [162.6, 70.5], + [167.6, 54.5], + [162.6, 54.5], + [160.7, 55.9], + [160.0, 59.0], + [157.5, 63.6], + [162.6, 54.5], + [152.4, 47.3], + [170.2, 67.7], + [165.1, 80.9], + [172.7, 70.5], + [165.1, 60.9], + [170.2, 63.6], + [170.2, 54.5], + [170.2, 59.1], + [161.3, 70.5], + [167.6, 52.7], + [167.6, 62.7], + [165.1, 86.3], + [162.6, 66.4], + [152.4, 67.3], + [168.9, 63.0], + [170.2, 73.6], + [175.2, 62.3], + [175.2, 57.7], + [160.0, 55.4], + [165.1, 104.1], + [174.0, 55.5], + [170.2, 77.3], + [160.0, 80.5], + [167.6, 64.5], + [167.6, 72.3], + [167.6, 61.4], + [154.9, 58.2], + [162.6, 81.8], + [175.3, 63.6], + [171.4, 53.4], + [157.5, 54.5], + [165.1, 53.6], + [160.0, 60.0], + [174.0, 73.6], + [162.6, 61.4], + [174.0, 55.5], + [162.6, 63.6], + [161.3, 60.9], + [156.2, 60.0], + [149.9, 46.8], + [169.5, 57.3], + [160.0, 64.1], + [175.3, 63.6], + [169.5, 67.3], + [160.0, 75.5], + [172.7, 68.2], + [162.6, 61.4], + [157.5, 76.8], + [176.5, 71.8], + [164.4, 55.5], + [160.7, 48.6], + [174.0, 66.4], + [163.8, 67.3] + ], + markPoint: { + data: [{ + type: 'max', + name: 'Max' + }, { + type: 'min', + name: 'Min' + }] + }, + markLine: { + data: [{ + type: 'average', + name: 'Mean' + }] + } + }, { + name: 'Data2', + type: 'scatter', + tooltip: { + trigger: 'item', + formatter: function(params) { + if (params.value.length > 1) { + return params.seriesName + ' :
    ' + params.value[0] + 'cm ' + params.value[1] + 'kg '; + } else { + return params.seriesName + ' :
    ' + params.name + ' : ' + params.value + 'kg '; + } + } + }, + data: [ + [174.0, 65.6], + [175.3, 71.8], + [193.5, 80.7], + [186.5, 72.6], + [187.2, 78.8], + [181.5, 74.8], + [184.0, 86.4], + [184.5, 78.4], + [175.0, 62.0], + [184.0, 81.6], + [180.0, 76.6], + [177.8, 83.6], + [192.0, 90.0], + [176.0, 74.6], + [174.0, 71.0], + [184.0, 79.6], + [192.7, 93.8], + [171.5, 70.0], + [173.0, 72.4], + [176.0, 85.9], + [176.0, 78.8], + [180.5, 77.8], + [172.7, 66.2], + [176.0, 86.4], + [173.5, 81.8], + [178.0, 89.6], + [180.3, 82.8], + [180.3, 76.4], + [164.5, 63.2], + [173.0, 60.9], + [183.5, 74.8], + [175.5, 70.0], + [188.0, 72.4], + [189.2, 84.1], + [172.8, 69.1], + [170.0, 59.5], + [182.0, 67.2], + [170.0, 61.3], + [177.8, 68.6], + [184.2, 80.1], + [186.7, 87.8], + [171.4, 84.7], + [172.7, 73.4], + [175.3, 72.1], + [180.3, 82.6], + [182.9, 88.7], + [188.0, 84.1], + [177.2, 94.1], + [172.1, 74.9], + [167.0, 59.1], + [169.5, 75.6], + [174.0, 86.2], + [172.7, 75.3], + [182.2, 87.1], + [164.1, 55.2], + [163.0, 57.0], + [171.5, 61.4], + [184.2, 76.8], + [174.0, 86.8], + [174.0, 72.2], + [177.0, 71.6], + [186.0, 84.8], + [167.0, 68.2], + [171.8, 66.1], + [182.0, 72.0], + [167.0, 64.6], + [177.8, 74.8], + [164.5, 70.0], + [192.0, 101.6], + [175.5, 63.2], + [171.2, 79.1], + [181.6, 78.9], + [167.4, 67.7], + [181.1, 66.0], + [177.0, 68.2], + [174.5, 63.9], + [177.5, 72.0], + [170.5, 56.8], + [182.4, 74.5], + [197.1, 90.9], + [180.1, 93.0], + [175.5, 80.9], + [180.6, 72.7], + [184.4, 68.0], + [175.5, 70.9], + [180.6, 72.5], + [177.0, 72.5], + [177.1, 83.4], + [181.6, 75.5], + [176.5, 73.0], + [175.0, 70.2], + [174.0, 73.4], + [165.1, 70.5], + [177.0, 68.9], + [192.0, 102.3], + [176.5, 68.4], + [169.4, 65.9], + [182.1, 75.7], + [179.8, 84.5], + [175.3, 87.7], + [184.9, 86.4], + [177.3, 73.2], + [167.4, 53.9], + [178.1, 72.0], + [168.9, 55.5], + [157.2, 58.4], + [180.3, 83.2], + [170.2, 72.7], + [177.8, 64.1], + [172.7, 72.3], + [165.1, 65.0], + [186.7, 86.4], + [165.1, 65.0], + [174.0, 88.6], + [175.3, 84.1], + [185.4, 66.8], + [177.8, 75.5], + [180.3, 93.2], + [180.3, 82.7], + [177.8, 58.0], + [177.8, 79.5], + [177.8, 78.6], + [177.8, 71.8], + [177.8, 116.4], + [163.8, 72.2], + [188.0, 83.6], + [198.1, 85.5], + [175.3, 90.9], + [166.4, 85.9], + [190.5, 89.1], + [166.4, 75.0], + [177.8, 77.7], + [179.7, 86.4], + [172.7, 90.9], + [190.5, 73.6], + [185.4, 76.4], + [168.9, 69.1], + [167.6, 84.5], + [175.3, 64.5], + [170.2, 69.1], + [190.5, 108.6], + [177.8, 86.4], + [190.5, 80.9], + [177.8, 87.7], + [184.2, 94.5], + [176.5, 80.2], + [177.8, 72.0], + [180.3, 71.4], + [171.4, 72.7], + [172.7, 84.1], + [172.7, 76.8], + [177.8, 63.6], + [177.8, 80.9], + [182.9, 80.9], + [170.2, 85.5], + [167.6, 68.6], + [175.3, 67.7], + [165.1, 66.4], + [185.4, 102.3], + [181.6, 70.5], + [172.7, 95.9], + [190.5, 84.1], + [179.1, 87.3], + [175.3, 71.8], + [170.2, 65.9], + [193.0, 95.9], + [171.4, 91.4], + [177.8, 81.8], + [177.8, 96.8], + [167.6, 69.1], + [167.6, 82.7], + [180.3, 75.5], + [182.9, 79.5], + [176.5, 73.6], + [186.7, 91.8], + [188.0, 84.1], + [188.0, 85.9], + [177.8, 81.8], + [174.0, 82.5], + [177.8, 80.5], + [171.4, 70.0], + [185.4, 81.8], + [185.4, 84.1], + [188.0, 90.5], + [188.0, 91.4], + [182.9, 89.1], + [176.5, 85.0], + [175.3, 69.1], + [175.3, 73.6], + [188.0, 80.5], + [188.0, 82.7], + [175.3, 86.4], + [170.5, 67.7], + [179.1, 92.7], + [177.8, 93.6], + [175.3, 70.9], + [182.9, 75.0], + [170.8, 93.2], + [188.0, 93.2], + [180.3, 77.7], + [177.8, 61.4], + [185.4, 94.1], + [168.9, 75.0], + [185.4, 83.6], + [180.3, 85.5], + [174.0, 73.9], + [167.6, 66.8], + [182.9, 87.3], + [160.0, 72.3], + [180.3, 88.6], + [167.6, 75.5], + [186.7, 101.4], + [175.3, 91.1], + [175.3, 67.3], + [175.9, 77.7], + [175.3, 81.8], + [179.1, 75.5], + [181.6, 84.5], + [177.8, 76.6], + [182.9, 85.0], + [177.8, 102.5], + [184.2, 77.3], + [179.1, 71.8], + [176.5, 87.9], + [188.0, 94.3], + [174.0, 70.9], + [167.6, 64.5], + [170.2, 77.3], + [167.6, 72.3], + [188.0, 87.3], + [174.0, 80.0], + [176.5, 82.3], + [180.3, 73.6], + [167.6, 74.1], + [188.0, 85.9], + [180.3, 73.2], + [167.6, 76.3], + [183.0, 65.9], + [183.0, 90.9], + [179.1, 89.1], + [170.2, 62.3], + [177.8, 82.7], + [179.1, 79.1], + [190.5, 98.2], + [177.8, 84.1], + [180.3, 83.2], + [180.3, 83.2] + ], + markPoint: { + data: [{ + type: 'max', + name: 'Max' + }, { + type: 'min', + name: 'Min' + }] + }, + markLine: { + data: [{ + type: 'average', + name: 'Mean' + }] + } + }] + }); + + } + + //echart Bar Horizontal + + if ($('#echart_bar_horizontal').length ){ + + var echartBar = echarts.init(document.getElementById('echart_bar_horizontal'), theme); + + echartBar.setOption({ + title: { + text: 'Bar Graph', + subtext: 'Graph subtitle' + }, + tooltip: { + trigger: 'axis' + }, + legend: { + x: 100, + data: ['2015', '2016'] + }, + toolbox: { + show: true, + feature: { + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + calculable: true, + xAxis: [{ + type: 'value', + boundaryGap: [0, 0.01] + }], + yAxis: [{ + type: 'category', + data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'] + }], + series: [{ + name: '2015', + type: 'bar', + data: [18203, 23489, 29034, 104970, 131744, 630230] + }, { + name: '2016', + type: 'bar', + data: [19325, 23438, 31000, 121594, 134141, 681807] + }] + }); + + } + + //echart Pie Collapse + + if ($('#echart_pie2').length ){ + + var echartPieCollapse = echarts.init(document.getElementById('echart_pie2'), theme); + + echartPieCollapse.setOption({ + tooltip: { + trigger: 'item', + formatter: "{a}
    {b} : {c} ({d}%)" + }, + legend: { + x: 'center', + y: 'bottom', + data: ['rose1', 'rose2', 'rose3', 'rose4', 'rose5', 'rose6'] + }, + toolbox: { + show: true, + feature: { + magicType: { + show: true, + type: ['pie', 'funnel'] + }, + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + calculable: true, + series: [{ + name: 'Area Mode', + type: 'pie', + radius: [25, 90], + center: ['50%', 170], + roseType: 'area', + x: '50%', + max: 40, + sort: 'ascending', + data: [{ + value: 10, + name: 'rose1' + }, { + value: 5, + name: 'rose2' + }, { + value: 15, + name: 'rose3' + }, { + value: 25, + name: 'rose4' + }, { + value: 20, + name: 'rose5' + }, { + value: 35, + name: 'rose6' + }] + }] + }); + + } + + //echart Donut + + if ($('#echart_donut').length ){ + + var echartDonut = echarts.init(document.getElementById('echart_donut'), theme); + + echartDonut.setOption({ + tooltip: { + trigger: 'item', + formatter: "{a}
    {b} : {c} ({d}%)" + }, + calculable: true, + legend: { + x: 'center', + y: 'bottom', + data: ['Direct Access', 'E-mail Marketing', 'Union Ad', 'Video Ads', 'Search Engine'] + }, + toolbox: { + show: true, + feature: { + magicType: { + show: true, + type: ['pie', 'funnel'], + option: { + funnel: { + x: '25%', + width: '50%', + funnelAlign: 'center', + max: 1548 + } + } + }, + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + series: [{ + name: 'Access to the resource', + type: 'pie', + radius: ['35%', '55%'], + itemStyle: { + normal: { + label: { + show: true + }, + labelLine: { + show: true + } + }, + emphasis: { + label: { + show: true, + position: 'center', + textStyle: { + fontSize: '14', + fontWeight: 'normal' + } + } + } + }, + data: [{ + value: 335, + name: 'Direct Access' + }, { + value: 310, + name: 'E-mail Marketing' + }, { + value: 234, + name: 'Union Ad' + }, { + value: 135, + name: 'Video Ads' + }, { + value: 1548, + name: 'Search Engine' + }] + }] + }); + + } + + //echart Pie + + if ($('#echart_pie').length ){ + + var echartPie = echarts.init(document.getElementById('echart_pie'), theme); + + echartPie.setOption({ + tooltip: { + trigger: 'item', + formatter: "{a}
    {b} : {c} ({d}%)" + }, + legend: { + x: 'center', + y: 'bottom', + data: ['Direct Access', 'E-mail Marketing', 'Union Ad', 'Video Ads', 'Search Engine'] + }, + toolbox: { + show: true, + feature: { + magicType: { + show: true, + type: ['pie', 'funnel'], + option: { + funnel: { + x: '25%', + width: '50%', + funnelAlign: 'left', + max: 1548 + } + } + }, + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + calculable: true, + series: [{ + name: '访问来源', + type: 'pie', + radius: '55%', + center: ['50%', '48%'], + data: [{ + value: 335, + name: 'Direct Access' + }, { + value: 310, + name: 'E-mail Marketing' + }, { + value: 234, + name: 'Union Ad' + }, { + value: 135, + name: 'Video Ads' + }, { + value: 1548, + name: 'Search Engine' + }] + }] + }); + + var dataStyle = { + normal: { + label: { + show: false + }, + labelLine: { + show: false + } + } + }; + + var placeHolderStyle = { + normal: { + color: 'rgba(0,0,0,0)', + label: { + show: false + }, + labelLine: { + show: false + } + }, + emphasis: { + color: 'rgba(0,0,0,0)' + } + }; + + } + + //echart Mini Pie + + if ($('#echart_mini_pie').length ){ + + var echartMiniPie = echarts.init(document.getElementById('echart_mini_pie'), theme); + + echartMiniPie .setOption({ + title: { + text: 'Chart #2', + subtext: 'From ExcelHome', + sublink: 'http://e.weibo.com/1341556070/AhQXtjbqh', + x: 'center', + y: 'center', + itemGap: 20, + textStyle: { + color: 'rgba(30,144,255,0.8)', + fontFamily: '微软雅黑', + fontSize: 35, + fontWeight: 'bolder' + } + }, + tooltip: { + show: true, + formatter: "{a}
    {b} : {c} ({d}%)" + }, + legend: { + orient: 'vertical', + x: 170, + y: 45, + itemGap: 12, + data: ['68%Something #1', '29%Something #2', '3%Something #3'], + }, + toolbox: { + show: true, + feature: { + mark: { + show: true + }, + dataView: { + show: true, + title: "Text View", + lang: [ + "Text View", + "Close", + "Refresh", + ], + readOnly: false + }, + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + series: [{ + name: '1', + type: 'pie', + clockWise: false, + radius: [105, 130], + itemStyle: dataStyle, + data: [{ + value: 68, + name: '68%Something #1' + }, { + value: 32, + name: 'invisible', + itemStyle: placeHolderStyle + }] + }, { + name: '2', + type: 'pie', + clockWise: false, + radius: [80, 105], + itemStyle: dataStyle, + data: [{ + value: 29, + name: '29%Something #2' + }, { + value: 71, + name: 'invisible', + itemStyle: placeHolderStyle + }] + }, { + name: '3', + type: 'pie', + clockWise: false, + radius: [25, 80], + itemStyle: dataStyle, + data: [{ + value: 3, + name: '3%Something #3' + }, { + value: 97, + name: 'invisible', + itemStyle: placeHolderStyle + }] + }] + }); + + } + + //echart Map + + if ($('#echart_world_map').length ){ + + var echartMap = echarts.init(document.getElementById('echart_world_map'), theme); + + + echartMap.setOption({ + title: { + text: 'World Population (2010)', + subtext: 'from United Nations, Total population, both sexes combined, as of 1 July (thousands)', + x: 'center', + y: 'top' + }, + tooltip: { + trigger: 'item', + formatter: function(params) { + var value = (params.value + '').split('.'); + value = value[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, '$1,') + '.' + value[1]; + return params.seriesName + '
    ' + params.name + ' : ' + value; + } + }, + toolbox: { + show: true, + orient: 'vertical', + x: 'right', + y: 'center', + feature: { + mark: { + show: true + }, + dataView: { + show: true, + title: "Text View", + lang: [ + "Text View", + "Close", + "Refresh", + ], + readOnly: false + }, + restore: { + show: true, + title: "Restore" + }, + saveAsImage: { + show: true, + title: "Save Image" + } + } + }, + dataRange: { + min: 0, + max: 1000000, + text: ['High', 'Low'], + realtime: false, + calculable: true, + color: ['#087E65', '#26B99A', '#CBEAE3'] + }, + series: [{ + name: 'World Population (2010)', + type: 'map', + mapType: 'world', + roam: false, + mapLocation: { + y: 60 + }, + itemStyle: { + emphasis: { + label: { + show: true + } + } + }, + data: [{ + name: 'Afghanistan', + value: 28397.812 + }, { + name: 'Angola', + value: 19549.124 + }, { + name: 'Albania', + value: 3150.143 + }, { + name: 'United Arab Emirates', + value: 8441.537 + }, { + name: 'Argentina', + value: 40374.224 + }, { + name: 'Armenia', + value: 2963.496 + }, { + name: 'French Southern and Antarctic Lands', + value: 268.065 + }, { + name: 'Australia', + value: 22404.488 + }, { + name: 'Austria', + value: 8401.924 + }, { + name: 'Azerbaijan', + value: 9094.718 + }, { + name: 'Burundi', + value: 9232.753 + }, { + name: 'Belgium', + value: 10941.288 + }, { + name: 'Benin', + value: 9509.798 + }, { + name: 'Burkina Faso', + value: 15540.284 + }, { + name: 'Bangladesh', + value: 151125.475 + }, { + name: 'Bulgaria', + value: 7389.175 + }, { + name: 'The Bahamas', + value: 66402.316 + }, { + name: 'Bosnia and Herzegovina', + value: 3845.929 + }, { + name: 'Belarus', + value: 9491.07 + }, { + name: 'Belize', + value: 308.595 + }, { + name: 'Bermuda', + value: 64.951 + }, { + name: 'Bolivia', + value: 716.939 + }, { + name: 'Brazil', + value: 195210.154 + }, { + name: 'Brunei', + value: 27.223 + }, { + name: 'Bhutan', + value: 716.939 + }, { + name: 'Botswana', + value: 1969.341 + }, { + name: 'Central African Republic', + value: 4349.921 + }, { + name: 'Canada', + value: 34126.24 + }, { + name: 'Switzerland', + value: 7830.534 + }, { + name: 'Chile', + value: 17150.76 + }, { + name: 'China', + value: 1359821.465 + }, { + name: 'Ivory Coast', + value: 60508.978 + }, { + name: 'Cameroon', + value: 20624.343 + }, { + name: 'Democratic Republic of the Congo', + value: 62191.161 + }, { + name: 'Republic of the Congo', + value: 3573.024 + }, { + name: 'Colombia', + value: 46444.798 + }, { + name: 'Costa Rica', + value: 4669.685 + }, { + name: 'Cuba', + value: 11281.768 + }, { + name: 'Northern Cyprus', + value: 1.468 + }, { + name: 'Cyprus', + value: 1103.685 + }, { + name: 'Czech Republic', + value: 10553.701 + }, { + name: 'Germany', + value: 83017.404 + }, { + name: 'Djibouti', + value: 834.036 + }, { + name: 'Denmark', + value: 5550.959 + }, { + name: 'Dominican Republic', + value: 10016.797 + }, { + name: 'Algeria', + value: 37062.82 + }, { + name: 'Ecuador', + value: 15001.072 + }, { + name: 'Egypt', + value: 78075.705 + }, { + name: 'Eritrea', + value: 5741.159 + }, { + name: 'Spain', + value: 46182.038 + }, { + name: 'Estonia', + value: 1298.533 + }, { + name: 'Ethiopia', + value: 87095.281 + }, { + name: 'Finland', + value: 5367.693 + }, { + name: 'Fiji', + value: 860.559 + }, { + name: 'Falkland Islands', + value: 49.581 + }, { + name: 'France', + value: 63230.866 + }, { + name: 'Gabon', + value: 1556.222 + }, { + name: 'United Kingdom', + value: 62066.35 + }, { + name: 'Georgia', + value: 4388.674 + }, { + name: 'Ghana', + value: 24262.901 + }, { + name: 'Guinea', + value: 10876.033 + }, { + name: 'Gambia', + value: 1680.64 + }, { + name: 'Guinea Bissau', + value: 10876.033 + }, { + name: 'Equatorial Guinea', + value: 696.167 + }, { + name: 'Greece', + value: 11109.999 + }, { + name: 'Greenland', + value: 56.546 + }, { + name: 'Guatemala', + value: 14341.576 + }, { + name: 'French Guiana', + value: 231.169 + }, { + name: 'Guyana', + value: 786.126 + }, { + name: 'Honduras', + value: 7621.204 + }, { + name: 'Croatia', + value: 4338.027 + }, { + name: 'Haiti', + value: 9896.4 + }, { + name: 'Hungary', + value: 10014.633 + }, { + name: 'Indonesia', + value: 240676.485 + }, { + name: 'India', + value: 1205624.648 + }, { + name: 'Ireland', + value: 4467.561 + }, { + name: 'Iran', + value: 240676.485 + }, { + name: 'Iraq', + value: 30962.38 + }, { + name: 'Iceland', + value: 318.042 + }, { + name: 'Israel', + value: 7420.368 + }, { + name: 'Italy', + value: 60508.978 + }, { + name: 'Jamaica', + value: 2741.485 + }, { + name: 'Jordan', + value: 6454.554 + }, { + name: 'Japan', + value: 127352.833 + }, { + name: 'Kazakhstan', + value: 15921.127 + }, { + name: 'Kenya', + value: 40909.194 + }, { + name: 'Kyrgyzstan', + value: 5334.223 + }, { + name: 'Cambodia', + value: 14364.931 + }, { + name: 'South Korea', + value: 51452.352 + }, { + name: 'Kosovo', + value: 97.743 + }, { + name: 'Kuwait', + value: 2991.58 + }, { + name: 'Laos', + value: 6395.713 + }, { + name: 'Lebanon', + value: 4341.092 + }, { + name: 'Liberia', + value: 3957.99 + }, { + name: 'Libya', + value: 6040.612 + }, { + name: 'Sri Lanka', + value: 20758.779 + }, { + name: 'Lesotho', + value: 2008.921 + }, { + name: 'Lithuania', + value: 3068.457 + }, { + name: 'Luxembourg', + value: 507.885 + }, { + name: 'Latvia', + value: 2090.519 + }, { + name: 'Morocco', + value: 31642.36 + }, { + name: 'Moldova', + value: 103.619 + }, { + name: 'Madagascar', + value: 21079.532 + }, { + name: 'Mexico', + value: 117886.404 + }, { + name: 'Macedonia', + value: 507.885 + }, { + name: 'Mali', + value: 13985.961 + }, { + name: 'Myanmar', + value: 51931.231 + }, { + name: 'Montenegro', + value: 620.078 + }, { + name: 'Mongolia', + value: 2712.738 + }, { + name: 'Mozambique', + value: 23967.265 + }, { + name: 'Mauritania', + value: 3609.42 + }, { + name: 'Malawi', + value: 15013.694 + }, { + name: 'Malaysia', + value: 28275.835 + }, { + name: 'Namibia', + value: 2178.967 + }, { + name: 'New Caledonia', + value: 246.379 + }, { + name: 'Niger', + value: 15893.746 + }, { + name: 'Nigeria', + value: 159707.78 + }, { + name: 'Nicaragua', + value: 5822.209 + }, { + name: 'Netherlands', + value: 16615.243 + }, { + name: 'Norway', + value: 4891.251 + }, { + name: 'Nepal', + value: 26846.016 + }, { + name: 'New Zealand', + value: 4368.136 + }, { + name: 'Oman', + value: 2802.768 + }, { + name: 'Pakistan', + value: 173149.306 + }, { + name: 'Panama', + value: 3678.128 + }, { + name: 'Peru', + value: 29262.83 + }, { + name: 'Philippines', + value: 93444.322 + }, { + name: 'Papua New Guinea', + value: 6858.945 + }, { + name: 'Poland', + value: 38198.754 + }, { + name: 'Puerto Rico', + value: 3709.671 + }, { + name: 'North Korea', + value: 1.468 + }, { + name: 'Portugal', + value: 10589.792 + }, { + name: 'Paraguay', + value: 6459.721 + }, { + name: 'Qatar', + value: 1749.713 + }, { + name: 'Romania', + value: 21861.476 + }, { + name: 'Russia', + value: 21861.476 + }, { + name: 'Rwanda', + value: 10836.732 + }, { + name: 'Western Sahara', + value: 514.648 + }, { + name: 'Saudi Arabia', + value: 27258.387 + }, { + name: 'Sudan', + value: 35652.002 + }, { + name: 'South Sudan', + value: 9940.929 + }, { + name: 'Senegal', + value: 12950.564 + }, { + name: 'Solomon Islands', + value: 526.447 + }, { + name: 'Sierra Leone', + value: 5751.976 + }, { + name: 'El Salvador', + value: 6218.195 + }, { + name: 'Somaliland', + value: 9636.173 + }, { + name: 'Somalia', + value: 9636.173 + }, { + name: 'Republic of Serbia', + value: 3573.024 + }, { + name: 'Suriname', + value: 524.96 + }, { + name: 'Slovakia', + value: 5433.437 + }, { + name: 'Slovenia', + value: 2054.232 + }, { + name: 'Sweden', + value: 9382.297 + }, { + name: 'Swaziland', + value: 1193.148 + }, { + name: 'Syria', + value: 7830.534 + }, { + name: 'Chad', + value: 11720.781 + }, { + name: 'Togo', + value: 6306.014 + }, { + name: 'Thailand', + value: 66402.316 + }, { + name: 'Tajikistan', + value: 7627.326 + }, { + name: 'Turkmenistan', + value: 5041.995 + }, { + name: 'East Timor', + value: 10016.797 + }, { + name: 'Trinidad and Tobago', + value: 1328.095 + }, { + name: 'Tunisia', + value: 10631.83 + }, { + name: 'Turkey', + value: 72137.546 + }, { + name: 'United Republic of Tanzania', + value: 44973.33 + }, { + name: 'Uganda', + value: 33987.213 + }, { + name: 'Ukraine', + value: 46050.22 + }, { + name: 'Uruguay', + value: 3371.982 + }, { + name: 'United States of America', + value: 312247.116 + }, { + name: 'Uzbekistan', + value: 27769.27 + }, { + name: 'Venezuela', + value: 236.299 + }, { + name: 'Vietnam', + value: 89047.397 + }, { + name: 'Vanuatu', + value: 236.299 + }, { + name: 'West Bank', + value: 13.565 + }, { + name: 'Yemen', + value: 22763.008 + }, { + name: 'South Africa', + value: 51452.352 + }, { + name: 'Zambia', + value: 13216.985 + }, { + name: 'Zimbabwe', + value: 13076.978 + }] + }] + }); + + } + + } + + + $(document).ready(function() { + + // init_sparklines(); + // init_flot_chart(); + init_sidebar(); + // init_wysiwyg(); + // init_InputMask(); + // init_JQVmap(); + // init_cropper(); + // init_knob(); + // init_IonRangeSlider(); + // init_ColorPicker(); + // init_TagsInput(); + // init_parsley(); + // init_daterangepicker(); + // init_daterangepicker_right(); + // init_daterangepicker_single_call(); + // init_daterangepicker_reservation(); + // init_SmartWizard(); + // init_EasyPieChart(); + // init_charts(); + // init_echarts(); + // init_morris_charts(); + // init_skycons(); + // init_select2(); + // init_validator(); + // init_DataTables(); + // init_chart_doughnut(); + // init_gauge(); + // init_PNotify(); + // init_starrr(); + // init_calendar(); + // init_compose(); + // init_CustomNotification(); + init_autosize(); + init_autocomplete(); + + }); + + diff --git a/public/assets/build/js/custom.min.js b/public/assets/build/js/custom.min.js new file mode 100755 index 0000000..f010e4b --- /dev/null +++ b/public/assets/build/js/custom.min.js @@ -0,0 +1,3 @@ +function init_sidebar(){var a=function(){$RIGHT_COL.css("min-height",$(window).height());var a=$BODY.outerHeight(),b=$BODY.hasClass("footer_fixed")?-10:$FOOTER.height(),c=$LEFT_COL.eq(1).height()+$SIDEBAR_FOOTER.height(),d=a File upload error '+c+" ").prependTo("#alerts")}"undefined"!=typeof $.fn.wysiwyg&&(console.log("init_wysiwyg"),$(".editor-wrapper").each(function(){var a=$(this).attr("id");$(this).wysiwyg({toolbarSelector:'[data-target="#'+a+'"]',fileUploadError:b})}),window.prettyPrint,prettyPrint())}function init_cropper(){if("undefined"!=typeof $.fn.cropper){console.log("init_cropper");var a=$("#image"),b=$("#download"),c=$("#dataX"),d=$("#dataY"),e=$("#dataHeight"),f=$("#dataWidth"),g=$("#dataRotate"),h=$("#dataScaleX"),i=$("#dataScaleY"),j={aspectRatio:16/9,preview:".img-preview",crop:function(a){c.val(Math.round(a.x)),d.val(Math.round(a.y)),e.val(Math.round(a.height)),f.val(Math.round(a.width)),g.val(a.rotate),h.val(a.scaleX),i.val(a.scaleY)}};$('[data-toggle="tooltip"]').tooltip(),a.on({"build.cropper":function(a){console.log(a.type)},"built.cropper":function(a){console.log(a.type)},"cropstart.cropper":function(a){console.log(a.type,a.action)},"cropmove.cropper":function(a){console.log(a.type,a.action)},"cropend.cropper":function(a){console.log(a.type,a.action)},"crop.cropper":function(a){console.log(a.type,a.x,a.y,a.width,a.height,a.rotate,a.scaleX,a.scaleY)},"zoom.cropper":function(a){console.log(a.type,a.ratio)}}).cropper(j),$.isFunction(document.createElement("canvas").getContext)||$('button[data-method="getCroppedCanvas"]').prop("disabled",!0),"undefined"==typeof document.createElement("cropper").style.transition&&($('button[data-method="rotate"]').prop("disabled",!0),$('button[data-method="scale"]').prop("disabled",!0)),"undefined"==typeof b[0].download&&b.addClass("disabled"),$(".docs-toggles").on("change","input",function(){var e,f,b=$(this),c=b.attr("name"),d=b.prop("type");a.data("cropper")&&("checkbox"===d?(j[c]=b.prop("checked"),e=a.cropper("getCropBoxData"),f=a.cropper("getCanvasData"),j.built=function(){a.cropper("setCropBoxData",e),a.cropper("setCanvasData",f)}):"radio"===d&&(j[c]=b.val()),a.cropper("destroy").cropper(j))}),$(".docs-buttons").on("click","[data-method]",function(){var e,f,c=$(this),d=c.data();if(!c.prop("disabled")&&!c.hasClass("disabled")&&a.data("cropper")&&d.method){if(d=$.extend({},d),"undefined"!=typeof d.target&&(e=$(d.target),"undefined"==typeof d.option))try{d.option=JSON.parse(e.val())}catch(a){console.log(a.message)}switch(f=a.cropper(d.method,d.option,d.secondOption),d.method){case"scaleX":case"scaleY":$(this).data("option",-d.option);break;case"getCroppedCanvas":f&&($("#getCroppedCanvasModal").modal().find(".modal-body").html(f),b.hasClass("disabled")||b.attr("href",f.toDataURL()))}if($.isPlainObject(f)&&e)try{e.val(JSON.stringify(f))}catch(a){console.log(a.message)}}}),$(document.body).on("keydown",function(b){if(a.data("cropper")&&!(this.scrollTop>300))switch(b.which){case 37:b.preventDefault(),a.cropper("move",-1,0);break;case 38:b.preventDefault(),a.cropper("move",0,-1);break;case 39:b.preventDefault(),a.cropper("move",1,0);break;case 40:b.preventDefault(),a.cropper("move",0,1)}});var m,k=$("#inputImage"),l=window.URL||window.webkitURL;l?k.change(function(){var c,b=this.files;a.data("cropper")&&b&&b.length&&(c=b[0],/^image\/\w+$/.test(c.type)?(m=l.createObjectURL(c),a.one("built.cropper",function(){l.revokeObjectURL(m)}).cropper("reset").cropper("replace",m),k.val("")):window.alert("Please choose an image file."))}):k.prop("disabled",!0).parent().addClass("disabled")}}function init_knob(){if("undefined"!=typeof $.fn.knob){console.log("init_knob"),$(".knob").knob({change:function(a){},release:function(a){console.log("release : "+a)},cancel:function(){console.log("cancel : ",this)},draw:function(){if("tron"==this.$.data("skin")){this.cursorExt=.3;var b,a=this.arc(this.cv),c=1;return this.g.lineWidth=this.lineWidth,this.o.displayPrevious&&(b=this.arc(this.v),this.g.beginPath(),this.g.strokeStyle=this.pColor,this.g.arc(this.xy,this.xy,this.radius-this.lineWidth,b.s,b.e,b.d),this.g.stroke()),this.g.beginPath(),this.g.strokeStyle=c?this.o.fgColor:this.fgColor,this.g.arc(this.xy,this.xy,this.radius-this.lineWidth,a.s,a.e,a.d),this.g.stroke(),this.g.lineWidth=2,this.g.beginPath(),this.g.strokeStyle=this.o.fgColor,this.g.arc(this.xy,this.xy,this.radius-this.lineWidth+1+2*this.lineWidth/3,0,2*Math.PI,!1),this.g.stroke(),!1}}});var a,b=0,c=0,d=0,e=$("div.idir"),f=$("div.ival"),g=function(){d++,e.show().html("+").fadeOut(),f.html(d)},h=function(){d--,e.show().html("-").fadeOut(),f.html(d)};$("input.infinite").knob({min:0,max:20,stopper:!1,change:function(){a>this.cv?b?(h(),b=0):(b=1,c=0):a