Initial commit of old code
|
@ -1,6 +1,502 @@
|
|||
composer.phar
|
||||
/vendor/
|
||||
# Created by https://www.gitignore.io/api/vim,phpunit,phpstorm+all,visualstudio,visualstudiocode
|
||||
# Edit at https://www.gitignore.io/?templates=vim,phpunit,phpstorm+all,visualstudio,visualstudiocode
|
||||
|
||||
# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control
|
||||
# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
|
||||
# composer.lock
|
||||
### PhpStorm+all ###
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
# User-specific stuff
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
|
||||
# Generated files
|
||||
.idea/**/contentModel.xml
|
||||
|
||||
# Sensitive or high-churn files
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
|
||||
# Gradle
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# Gradle and Maven with auto-import
|
||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||
# since they will be recreated, and may cause churn. Uncomment if using
|
||||
# auto-import.
|
||||
# .idea/modules.xml
|
||||
# .idea/*.iml
|
||||
# .idea/modules
|
||||
# *.iml
|
||||
# *.ipr
|
||||
|
||||
# CMake
|
||||
cmake-build-*/
|
||||
|
||||
# Mongo Explorer plugin
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
# File-based project format
|
||||
*.iws
|
||||
|
||||
# IntelliJ
|
||||
out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
# Editor-based Rest Client
|
||||
.idea/httpRequests
|
||||
|
||||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.ser
|
||||
|
||||
### PhpStorm+all Patch ###
|
||||
# Ignores the whole .idea folder and all .iml files
|
||||
# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360
|
||||
|
||||
.idea/
|
||||
|
||||
# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
|
||||
|
||||
*.iml
|
||||
modules.xml
|
||||
.idea/misc.xml
|
||||
*.ipr
|
||||
|
||||
# Sonarlint plugin
|
||||
.idea/sonarlint
|
||||
|
||||
### PHPUnit ###
|
||||
# Covers PHPUnit
|
||||
# Reference: https://phpunit.de/
|
||||
|
||||
# Generated files
|
||||
.phpunit.result.cache
|
||||
|
||||
# PHPUnit
|
||||
/app/phpunit.xml
|
||||
phpunit.xml
|
||||
|
||||
# Build data
|
||||
/build/
|
||||
|
||||
### Vim ###
|
||||
# Swap
|
||||
[._]*.s[a-v][a-z]
|
||||
[._]*.sw[a-p]
|
||||
[._]s[a-rt-v][a-z]
|
||||
[._]ss[a-gi-z]
|
||||
[._]sw[a-p]
|
||||
|
||||
# Session
|
||||
Session.vim
|
||||
Sessionx.vim
|
||||
|
||||
# Temporary
|
||||
.netrwhist
|
||||
*~
|
||||
|
||||
# Auto-generated tag files
|
||||
tags
|
||||
|
||||
# Persistent undo
|
||||
[._]*.un~
|
||||
|
||||
# Coc configuration directory
|
||||
.vim
|
||||
|
||||
### VisualStudioCode ###
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
|
||||
### VisualStudioCode Patch ###
|
||||
# Ignore all local history of files
|
||||
.history
|
||||
|
||||
### VisualStudio ###
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
##
|
||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||
|
||||
# User-specific files
|
||||
*.rsuser
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Mono auto generated files
|
||||
mono_crash.*
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
[Aa][Rr][Mm]/
|
||||
[Aa][Rr][Mm]64/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
[Ll]og/
|
||||
|
||||
# Visual Studio 2015/2017 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# Visual Studio 2017 auto generated files
|
||||
Generated\ Files/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUnit
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
nunit-*.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# Benchmark Results
|
||||
BenchmarkDotNet.Artifacts/
|
||||
|
||||
# .NET Core
|
||||
project.lock.json
|
||||
project.fragment.lock.json
|
||||
artifacts/
|
||||
|
||||
# StyleCop
|
||||
StyleCopReport.xml
|
||||
|
||||
# Files built by Visual Studio
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_h.h
|
||||
*.ilk
|
||||
*.obj
|
||||
*.iobj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.ipdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*_wpftmp.csproj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
*.VC.VC.opendb
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# Visual Studio Trace Files
|
||||
*.e2e
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# JustCode is a .NET coding add-in
|
||||
.JustCode
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# AxoCover is a Code Coverage Tool
|
||||
.axoCover/*
|
||||
!.axoCover/settings.json
|
||||
|
||||
# Visual Studio code coverage results
|
||||
*.coverage
|
||||
*.coveragexml
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||
# but database connection strings (with potential passwords) will be unencrypted
|
||||
*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||
# in these scripts will be unencrypted
|
||||
PublishScripts/
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# NuGet Symbol Packages
|
||||
*.snupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/[Pp]ackages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/[Pp]ackages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/[Pp]ackages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignorable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directories and files
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
Package.StoreAssociation.xml
|
||||
_pkginfo.txt
|
||||
*.appx
|
||||
*.appxbundle
|
||||
*.appxupload
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!?*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
~$*
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.jfm
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
orleans.codegen.cs
|
||||
|
||||
# Including strong name files can present a security risk
|
||||
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||
#*.snk
|
||||
|
||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||
#bower_components/
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
ServiceFabricBackup/
|
||||
*.rptproj.bak
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
*.ndf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
*.rptproj.rsuser
|
||||
*- [Bb]ackup.rdl
|
||||
*- [Bb]ackup ([0-9]).rdl
|
||||
*- [Bb]ackup ([0-9][0-9]).rdl
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
node_modules/
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||
*.vbw
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
paket-files/
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
|
||||
# CodeRush personal settings
|
||||
.cr/personal
|
||||
|
||||
# Python Tools for Visual Studio (PTVS)
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Cake - Uncomment if you are using it
|
||||
# tools/**
|
||||
# !tools/packages.config
|
||||
|
||||
# Tabs Studio
|
||||
*.tss
|
||||
|
||||
# Telerik's JustMock configuration file
|
||||
*.jmconfig
|
||||
|
||||
# BizTalk build output
|
||||
*.btp.cs
|
||||
*.btm.cs
|
||||
*.odx.cs
|
||||
*.xsd.cs
|
||||
|
||||
# OpenCover UI analysis results
|
||||
OpenCover/
|
||||
|
||||
# Azure Stream Analytics local run output
|
||||
ASALocalRun/
|
||||
|
||||
# MSBuild Binary and Structured Log
|
||||
*.binlog
|
||||
|
||||
# NVidia Nsight GPU debugger configuration file
|
||||
*.nvuser
|
||||
|
||||
# MFractors (Xamarin productivity tool) working folder
|
||||
.mfractor/
|
||||
|
||||
# Local History for Visual Studio
|
||||
.localhistory/
|
||||
|
||||
# BeatPulse healthcheck temp database
|
||||
healthchecksdb
|
||||
|
||||
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||
MigrationBackup/
|
||||
|
||||
# End of https://www.gitignore.io/api/vim,phpunit,composer,phpstorm+all,visualstudio,visualstudiocode
|
||||
|
||||
### Composer ###
|
||||
composer.phar
|
||||
/server/vendor/
|
||||
|
||||
*.zip
|
||||
|
||||
/server/error-log/*
|
||||
!/server/error-log/index.html
|
||||
|
||||
config.php
|
||||
|
||||
*password*
|
|
@ -0,0 +1,4 @@
|
|||
<?php
|
||||
require_once 'core.php';
|
||||
loadtemplate('anagrafica.html', ['titolo' => 'Anagrafica utente', 'dacontrollare' => ucwords(str_replace('_', ' ', urldecode($_GET['utente'])))]);
|
||||
?>
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
require_once 'core.php';
|
||||
$time = time();
|
||||
$nome = $utente->nome(true);
|
||||
$admin = $utente->admin();
|
||||
$phpsessid = $_COOKIE['PHPSESSID'];
|
||||
|
||||
if (isset($_COOKIE['chat']) && $_COOKIE['chat'] == true) {
|
||||
echo "<!-- Smartsupp Live Chat script -->
|
||||
<script type='text/javascript'>
|
||||
var _smartsupp = _smartsupp || {};
|
||||
_smartsupp.key = '7e1d39b8d1a7e234c56a2da730e9ce5b95508dbc';
|
||||
_smartsupp.ratingEnabled = true; // default value : false
|
||||
_smartsupp.ratingComment = true; // default value : false
|
||||
window.smartsupp||(function(d) {
|
||||
var s,c,o=smartsupp=function(){ o._.push(arguments)};o._=[];
|
||||
s=d.getElementsByTagName('script')[0];c=d.createElement('script');
|
||||
c.type='text/javascript';c.charset='utf-8';c.async=true;
|
||||
c.src='https://www.smartsuppchat.com/loader.js?';s.parentNode.insertBefore(c,s);
|
||||
})(document);
|
||||
</script>
|
||||
<script>
|
||||
// basic info
|
||||
smartsupp('email', '');
|
||||
smartsupp('name', '{$nome}');
|
||||
smartsupp('recording:disable', false);
|
||||
// extra info
|
||||
smartsupp('variables', {
|
||||
Nome: { label: 'Nome utente ', value: '{$nome}' },
|
||||
Admin: { label: 'Admin', value: '{$admin}' },
|
||||
SessionID: { label: 'Codice sessione', value: '{$phpsessid}' },
|
||||
Timestamp: { label: 'Timestamp', value: '{$time}'},
|
||||
});
|
||||
</script>";
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"name": "matteo/allerta",
|
||||
"description": "Un software di allertamento per i vvf",
|
||||
"type": "project",
|
||||
"require": {
|
||||
"cmfcmf/openweathermap-php-api": "dev-master",
|
||||
"doctrine/lexer": "^1.3@dev",
|
||||
"egulias/email-validator": "^2.1@dev",
|
||||
"fzaninotto/faker": "^1.9@dev",
|
||||
"twig/twig": "3.x-dev",
|
||||
"tracy/tracy": "^2.7@dev"
|
||||
},
|
||||
"license": "GPL-3.0-or-later",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Matteo Gheza",
|
||||
"email": "matteo@matteogheza.it"
|
||||
}
|
||||
],
|
||||
"minimum-stability": "dev"
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
// ** Database settings ** //
|
||||
/* The name of the database for Allerta-vvf */
|
||||
define( 'DB_NAME', 'allerta' );
|
||||
|
||||
/* Database username */
|
||||
define( 'DB_USER', 'root' );
|
||||
|
||||
/* Database password */
|
||||
define( 'DB_PASSWORD', '' );
|
||||
|
||||
/* Database hostname */
|
||||
define( 'DB_HOST', 'localhost' );
|
||||
|
||||
// ** Url settings ** //
|
||||
/* The url that you use to reach Allerta */
|
||||
define( 'WEB_URL', 'http://localhost/allerta-vvf/server/' );
|
||||
|
||||
/* Is the server under Cloudflare® */
|
||||
/* Cloudflare is a registered trademark of Cloudflare, Inc. */
|
||||
define( 'SERVER_UNDER_CF', true );
|
||||
|
||||
// ** Behavior and names ** //
|
||||
/* Do you want to add every denied access info to database? */
|
||||
define( 'INTRUSION_SAVE', true );
|
||||
|
||||
/* Do you want to add every denied access info to database? */
|
||||
define( 'INTRUSION_SAVE_INFO', true );
|
||||
|
||||
/* Do you want to enbale chat with IT Manager support? */
|
||||
define( 'ENABLE_TECHNICAL_SUPPORT', true );
|
||||
|
||||
/* Leave blank if 'ENABLE_TECHNICAL_SUPPORT' is false, else go to https://www.smartsuppchat.com */
|
||||
define( 'TECHNICAL_SUPPORT_KEY', '7e1d39b8d1a7e234c56a2da730e9ce5b95508dbc' );
|
||||
|
||||
/* Insert your organization name */
|
||||
define( 'DISTACCAMENTO', 'Assoc VVF Vol Darfo' );
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
require_once 'secure.php';
|
||||
init_class();
|
||||
|
||||
try {
|
||||
$loader = new \Twig\Loader\FilesystemLoader('templates');
|
||||
} catch (Exception $e) {
|
||||
$loader = new \Twig\Loader\FilesystemLoader('../templates');
|
||||
}
|
||||
$twig = new \Twig\Environment($loader, [
|
||||
//'cache' => 'compilation'
|
||||
]);
|
||||
$template = NULL;
|
||||
function loadtemplate($templatename, $data, $richiedilogin=true){
|
||||
global $utente, $twig, $template;
|
||||
if($richiedilogin){
|
||||
$utente->richiedilogin();
|
||||
}
|
||||
$data['distaccamento'] = DISTACCAMENTO;
|
||||
$data['urlsoftware'] = WEB_URL;
|
||||
$data['utente'] = $utente->info();
|
||||
$data['enable_technical_support'] = ENABLE_TECHNICAL_SUPPORT;
|
||||
$data['technical_support_key'] = TECHNICAL_SUPPORT_KEY;
|
||||
$data['technical_support_open'] = isset($_COOKIE["chat"]);
|
||||
$template = $twig->load($templatename);
|
||||
echo $template->render($data);
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
nothing (see this directory in file explorer or delete this file)
|
|
@ -0,0 +1,3 @@
|
|||
<?php
|
||||
require_once 'core.php';
|
||||
loadtemplate('esercitazioni.html', ['titolo' => 'Esercitazioni']);
|
|
@ -0,0 +1,17 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Sito in Manutenzione</title>
|
||||
<meta charset="UTF-8">
|
||||
<style>
|
||||
h1 { font-size: 50px; }
|
||||
body { text-align:center; font: 20px Helvetica, sans-serif; color: #333; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Pagina in Manutenzione</h1>
|
||||
<p>Scusaci per l'incoveniente. Stiamo lavorando per migliorare il servizio.</p>
|
||||
<p>Saremo di nuovo attivi entro breve. Puoi utilizzare il resto del sito</p>
|
||||
<p style="margin-top: 40px; font-size: 14px; color: #666"><em>il Webmaster</em></p>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,151 @@
|
|||
<?php
|
||||
require_once 'core.php';
|
||||
if($utente->autenticato()){
|
||||
$tools->redirect("lista.php");
|
||||
}
|
||||
$errore = false;
|
||||
if(isset($_POST['nome']) & isset($_POST['password'])){
|
||||
$login = $utente->login($_POST['nome'], md5($_POST['password']));
|
||||
//var_dump($login); exit;
|
||||
if($login===true){
|
||||
$tools->redirect("lista.php");
|
||||
} else {
|
||||
$errore = $login;
|
||||
}
|
||||
}
|
||||
loadtemplate('index.html', ['errore' => $errore, 'titolo' => 'Login', 'distaccamento' => 'VVF Darfo', 'urlsoftware' => '', 'utente' => $utente->info(false)], false);
|
||||
/*
|
||||
if(isset($_SESSION['accesso'])){
|
||||
if($_SESSION['accesso'] == "loggato"){
|
||||
if($_SESSION['admin'] == 1){
|
||||
$tools->redirect("lista_admin.php");
|
||||
} else {
|
||||
$tools->redirect("lista.php");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_POST['nome']) & isset($_POST['password'])){
|
||||
$nome = $_POST['nome'];
|
||||
$password = md5($_POST['password']);
|
||||
$sql = "SELECT * FROM vigili WHERE nome='$nome' AND password='$password';";
|
||||
if ($result=mysqli_query($connessione, $sql))
|
||||
{
|
||||
// Return the number of rows in result set
|
||||
$rowcount=mysqli_num_rows($result);
|
||||
if($rowcount > 0){
|
||||
$_SESSION['accesso'] = "loggato";
|
||||
while ($row = mysqli_fetch_array($result)){
|
||||
$_SESSION['admin'] = $row['caposquadra'];
|
||||
$_SESSION['nome'] = $row['nome'];
|
||||
}
|
||||
$connesso = isset($_POST['connesso']) ? $_POST['connesso'] : '0';
|
||||
if($connesso == 1){
|
||||
$cookie = bin2hex(implode("-", array($_SESSION['admin'], $_SESSION['nome'])));
|
||||
//$cookie = "ciao";
|
||||
setcookie("l53o453g35i34434n", $cookie, time() + 108000);
|
||||
}
|
||||
if($_SESSION['admin'] == 1){
|
||||
$tools->redirect("lista_admin.php");
|
||||
|
||||
} else {
|
||||
$tools->redirect("lista.php");
|
||||
}
|
||||
} else {
|
||||
$err = <<<HTML
|
||||
<div class='text-center' id="err">
|
||||
<script>
|
||||
var sound = new Howl({
|
||||
src: ['non_hai_detto_la_parola_magica.mp3'],
|
||||
autoplay: true,
|
||||
volume: 0.9,
|
||||
onend: function() {
|
||||
console.log('Finito');
|
||||
}
|
||||
});
|
||||
sound.play();
|
||||
//var myVar = setInterval(function(){ sound.play(); }, 10000);
|
||||
</script>
|
||||
<script>
|
||||
$("#err").delay(5000).fadeOut(300);
|
||||
</script>
|
||||
Password non valida
|
||||
<img src='./images/nonono.gif'></img>
|
||||
</div>
|
||||
HTML;
|
||||
}
|
||||
// Free result set
|
||||
mysqli_free_result($result);
|
||||
}
|
||||
} else if(isset($_COOKIE['l53o453g35i34434n'])){
|
||||
$cookie = pack("H*",$_COOKIE['l53o453g35i34434n']);
|
||||
$cookie = explode("-", $cookie);
|
||||
if(is_array($cookie)){
|
||||
$_SESSION['accesso'] = "loggato";
|
||||
$_SESSION['admin'] = $cookie[0];
|
||||
$_SESSION['nome'] = $cookie[1];
|
||||
if($_SESSION['admin'] == 1){
|
||||
redirect("lista_admin.php");
|
||||
} else {
|
||||
redirect("lista.php");
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="it">
|
||||
<head>
|
||||
<?php head(); ?>
|
||||
|
||||
<style>
|
||||
center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#modulogin {
|
||||
|
||||
margin-top: 60px;
|
||||
padding: 30px 0 30px 0;
|
||||
width: 90%;
|
||||
height: auto;
|
||||
background: #fafafa;
|
||||
border-radius: 15px;
|
||||
box-shadow: 0px 0px 10px rgba(0,0,0,0.5);
|
||||
}
|
||||
|
||||
input::placeholder {
|
||||
|
||||
color: lightgray;
|
||||
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<?php $tools->body() ?>
|
||||
<?php if(!is_null($err)) echo $err; ?>
|
||||
<div class="container text-center" id="modulogin">
|
||||
<form method="post">
|
||||
|
||||
<img alt="VVF" src="./risorse/images/logo.jpg" class="img-resposive"><br><br><br>
|
||||
<input type="text" name="nome" placeholder="Nome" required><br><br>
|
||||
<input type="password" name="password" placeholder="Password" required><br><br>
|
||||
<input type="checkbox" name="connesso" value='1' id="connesso" checked><label for='connesso'>Rimani Connesso</label><br>
|
||||
<input type="submit" name="login" class="btn btn-lg btn-success" value="Accedi">
|
||||
</form>
|
||||
</div>
|
||||
<br>
|
||||
<div id="panico" style='display: none' class="text-center"><i class="fa fa-exclamation-triangle"></i><br>
|
||||
<p>Se hai premuto “Accedi” ma non è successo niente premi <a href=lista_admin.php>qui (admin)</a> o <a href=lista.php>qui (non-admin)</a></p></div>
|
||||
<br><br>
|
||||
<a hidden class="text-center" href="https://www.abuseipdb.com/user/30576" title="AbuseIPDB is an IP address blacklist for webmasters and sysadmins to report IP addresses engaging in abusive behavior on their networks" alt="AbuseIPDB Contributor Badge">
|
||||
<img class="text-center" src="https://www.abuseipdb.com/contributor/30576.svg" style="width: 376px;">
|
||||
</a>
|
||||
<?php
|
||||
//debug
|
||||
//print_r($_SESSION);
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
*/
|
|
@ -0,0 +1,4 @@
|
|||
<?php
|
||||
require_once 'core.php';
|
||||
loadtemplate('interventi.html', ['titolo' => 'Interventi', 'distaccamento' => 'VVF Darfo', 'urlsoftware' => '', 'utente' => $utente->info()]);
|
||||
?>
|
|
@ -0,0 +1,3 @@
|
|||
<?php
|
||||
require_once 'core.php';
|
||||
loadtemplate('lista.html', ['titolo' => 'Disponibilità']);
|
|
@ -0,0 +1,3 @@
|
|||
<?php
|
||||
require_once 'core.php';
|
||||
loadtemplate('log.html', ['titolo' => 'Log', 'distaccamento' => 'VVF Darfo', 'urlsoftware' => '', 'utente' => $utente->info()]);
|
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
include("secure.php");
|
||||
init_class();
|
||||
$utente->logout();
|
||||
$tools->redirect("index.php");
|
||||
?>
|
|
@ -0,0 +1,106 @@
|
|||
<?php
|
||||
$day = 19;
|
||||
$ore = 1;
|
||||
|
||||
|
||||
$start = true;
|
||||
$minuti = 5;
|
||||
setlocale(LC_TIME, 'ita', 'it_IT');
|
||||
echo date('i') . " - " . date('H') . " - " . date("d") . "<br>";
|
||||
|
||||
include_once 'secure.php';
|
||||
|
||||
init_class();
|
||||
|
||||
function resetminuti(){
|
||||
global $vigili_tot;
|
||||
global $database;
|
||||
$sql = "SELECT * FROM vigili"; // Pesco i dati della tabella e li ordino in base alla disponibilità
|
||||
$risultato = $database->esegui($sql, true);
|
||||
$disp = array();
|
||||
foreach($risultato as $row){
|
||||
$disp[$row['nome']] = $row['minuti_dispo'];
|
||||
}
|
||||
print("<br><pre>" . print_r($disp, true) . "</pre><br>");
|
||||
|
||||
|
||||
// pre-5.3:
|
||||
$list = implode(', ', array_map(
|
||||
create_function('$k,$v', 'return "$k => $v";'),
|
||||
array_keys($disp),
|
||||
array_values($disp)
|
||||
));
|
||||
$a1 = implode(" - ", array_keys($disp));
|
||||
$a2 = implode(" - ", array_values($disp));
|
||||
echo "<p style='color:red;'>" . $list . "</p><br><p style='color:green;'>" . $a1 . "</p><br><p style='color:blue;'>" . $a2 . "</p><br>";
|
||||
$mese = strftime("%B");
|
||||
$anno = strftime("%Y");
|
||||
echo $mese . " - " . $anno . "<br>";
|
||||
|
||||
|
||||
$sql = "INSERT INTO `minuti` (`id`, `mese`, `anno`, `list`, `a1`, `a2`) VALUES (NULL, '$mese', '$anno', '$list', '$a1', '$a2')"; // Pesco i dati della tabella e li ordino in base alla disponibilità
|
||||
$risultato = $database->esegui($sql);
|
||||
|
||||
foreach($risultato as $row){
|
||||
$sql = "UPDATE vigili SET minuti_dispo = '0' WHERE nome ='" . $utente . "'";
|
||||
$risultato = $database->esegui($sql);
|
||||
echo "reset effettuato: " . $utente . "<br>";
|
||||
}
|
||||
|
||||
if($risultato){
|
||||
echo <<<EOT
|
||||
<img src='https://media1.tenor.com/images/768840dae0d91bbc9f215d9255af8170/tenor.gif?itemid=8706004'></img>
|
||||
<img src='https://media1.tenor.com/images/4d41eec52c39344dd87e1022cc0eb98c/tenor.gif?itemid=4572479'></img>
|
||||
<img src='https://thumbs.gfycat.com/FinishedSnarlingAfricanelephant-max-1mb.gif'></img>
|
||||
EOT;
|
||||
}
|
||||
}
|
||||
|
||||
//Per quando dovrò (forse) reinserire i valori in tabella o generare un array
|
||||
function array_combine_($keys, $values){
|
||||
$result = array();
|
||||
foreach ($keys as $i => $k) {
|
||||
$result[$k][] = $values[$i];
|
||||
}
|
||||
array_walk($result, create_function('&$v', '$v = (count($v) == 1)? array_pop($v): $v;'));
|
||||
return $result;
|
||||
}
|
||||
//print("<br><pre>" . print_r(array_combine_(explode(" - ", $a1), explode(" - ", $a2)), true) . "</pre><br>");
|
||||
|
||||
|
||||
$sql = "SELECT * FROM vigili ORDER BY disponibile DESC, caposquadra DESC, interventi ASC, nome ASC"; // Pesco i dati della tabella e li ordino in base alla disponibilità
|
||||
$risultato = $database->esegui($sql, true);
|
||||
|
||||
$vigili_tot = array();
|
||||
$incremento = array();
|
||||
$minuti_dispo_old = array();
|
||||
foreach($risultato as $row){
|
||||
$vigili_tot[] = $row['nome'];
|
||||
if($row['disponibile'] == "1"){
|
||||
$incremento[] = $row['nome'];
|
||||
$minuti_dispo_old[] = $row['minuti_dispo'];
|
||||
}
|
||||
}
|
||||
print_r($incremento);
|
||||
|
||||
if($start && isset($_POST['cron']) && $_POST['cron'] == "cron-job"){
|
||||
if($start && isset($_POST['reset']) && $_POST['reset'] == "cron-job"){
|
||||
resetminuti();
|
||||
}
|
||||
|
||||
foreach($incremento as $key=>$utente){
|
||||
$minuti_dispo = $minuti_dispo_old[$key] + $minuti;
|
||||
$sql = "UPDATE vigili SET minuti_dispo = '" . $minuti_dispo . "' WHERE nome ='" . $utente . "'";
|
||||
$risultato = $database->esegui($sql, true);
|
||||
}
|
||||
$sql = "SELECT * FROM vigili ORDER BY disponibile DESC, caposquadra DESC, interventi ASC, nome ASC"; // Pesco i dati della tabella e li ordino in base alla disponibilità
|
||||
$risultato = $database->esegui($sql, true);
|
||||
$minuti_dispo = array();
|
||||
foreach($risultato as $row){
|
||||
if($row['disponibile'] == "1"){
|
||||
$minuti_dispo[] = $row['minuti_dispo'];
|
||||
}
|
||||
}
|
||||
echo "<br>";
|
||||
print_r($minuti_dispo);
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
<?php
|
||||
require_once 'core.php';
|
||||
if($tools->validazione_form('$post-mod', true, "aggiungi")) {
|
||||
bdump("per poco...");
|
||||
if($tools->validazione_form(['$post-data', '$post-codice', '$post-uscita', '$post-rientro', '$post-capo', '$post-luogo', '$post-note', '$post-tipo', '$post-token'])) {
|
||||
if($_POST["token"] == $_SESSION['token']){
|
||||
bdump("aggiungo intervento");
|
||||
$database->aggiungi_intervento($_POST["data"], $_POST["codice"], $_POST["uscita"], $_POST["rientro"], $_POST["capo"], $tools->extract_unique($_POST["autisti"]), $tools->extract_unique($_POST["personale"]), $_POST["luogo"], $_POST["note"], $_POST["tipo"], $tools->extract_unique([$_POST["capo"],$_POST["autisti"],$_POST["personale"]]), $utente->nome());
|
||||
} else {
|
||||
$tools->redirect("nonfareilfurbo.php");
|
||||
}
|
||||
}
|
||||
} elseif($tools->validazione_form('$post-mod', true, "modifica")) {
|
||||
bdump("per poco...");
|
||||
if($tools->validazione_form(['$post-id', '$post-data', '$post-codice', '$post-uscita', '$post-rientro', '$post-capo', '$post-luogo', '$post-note', '$post-tipo', '$post-token'])) {
|
||||
if($_POST["token"] == $_SESSION['token']){
|
||||
bdump("modifico intervento");
|
||||
} else {
|
||||
$tools->redirect("nonfareilfurbo.php");
|
||||
}
|
||||
}
|
||||
} elseif($tools->validazione_form('$post-mod', true, "elimina")) {
|
||||
bdump("rimuovo intervento");
|
||||
if($tools->validazione_form(['$post-id', '$post-token'])) {
|
||||
if($_POST["token"] == $_SESSION['token']){
|
||||
bdump("rimuovo intervento");
|
||||
} else {
|
||||
$tools->redirect("nonfareilfurbo.php");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$length = 32;
|
||||
unset($_SESSION['token']);
|
||||
$_SESSION['token'] = substr(base_convert(sha1(uniqid(mt_rand())), 16, 36), 0, $length) . "-bfwp64GGbdm";
|
||||
// 1 hour = 60 seconds * 60 minutes = 3600
|
||||
$_SESSION['token-expire'] = time() + 3600;
|
||||
$personale = $database->esegui("SELECT * FROM vigili ORDER BY nome ASC", true); // Pesco i dati della tabella e li ordino in base al nome
|
||||
$tipologie = $database->esegui("SELECT nome FROM tipo ORDER BY nome ASC", true); // Pesco le tipologie della tabella
|
||||
$modalità = (isset($_GET["aggiungi"])) ? "aggiungi" : ((isset($_GET["modifica"])) ? "modifica" : ((isset($_GET["elimina"])) ? "elimina" : "aggiungi"));
|
||||
bdump($modalità, "modalità");
|
||||
bdump($tipologie, "tipologie");
|
||||
bdump($personale, "personale");
|
||||
$id = "";
|
||||
if(isset($_GET["id"])){
|
||||
$id = $_GET["id"];
|
||||
bdump($database->esiste("interventi", $id));
|
||||
}
|
||||
if($modalità=="modifica" || $modalità=="elimina"){
|
||||
if(empty($id)){
|
||||
$tools->redirect("nonfareilfurbo.php");
|
||||
} elseif (!$database->esiste("interventi", $id)){
|
||||
$tools->redirect("nonfareilfurbo.php");
|
||||
}
|
||||
}
|
||||
loadtemplate('modifica_intervento.html', ['intervento' => array('id' => $id, 'token' => $_SESSION['token'], 'modalità' => $modalità, 'personale' => $personale, 'tipologie' => $tipologie), 'titolo' => ucfirst($modalità) . ' intervento', 'distaccamento' => 'VVF Darfo', 'urlsoftware' => '', 'utente' => $utente->info()]);
|
||||
bdump($_SESSION['token'], "token");
|
||||
}
|
||||
?>
|
|
@ -0,0 +1,26 @@
|
|||
<html>
|
||||
<head>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/howler/2.1.3/howler.min.js" integrity="sha256-/Q4ZPy6sMbk627wHxuaWSIXS1y7D2KnMhsm/+od7ptE=" crossorigin="anonymous"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class='text-center' id="err">
|
||||
<script>
|
||||
var sound = new Howl({
|
||||
src: ['risorse/musiche/non_hai_detto_la_parola_magica.mp3'],
|
||||
autoplay: true,
|
||||
volume: 0.9,
|
||||
onend: function() {
|
||||
console.log('Finito');
|
||||
}
|
||||
});
|
||||
sound.play();
|
||||
//var myVar = setInterval(function(){ sound.play(); }, 10000);
|
||||
</script>
|
||||
<script>
|
||||
//$("#err").delay(5000).fadeOut(300);
|
||||
</script>
|
||||
Possibile attività di hacking del software rilevata
|
||||
<img src='./risorse/images/nonono.gif'></img>
|
||||
</div>
|
||||
<h1>Abbiamo rilevato un' attività sospetta provenire dal tuo dispositivo o dalla tua rete.<br>Se non stavi facendo niente di brutto, e ritieni che questo sia un errore, la<br>preghiamo di contattare l'assistenza.</h1>
|
||||
</body>
|
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
include_once 'secure.php';
|
||||
init_class();
|
||||
if(isset($_SESSION)){
|
||||
$user = $_SESSION['nome'];
|
||||
} else {
|
||||
$user = "test";
|
||||
}
|
||||
$string = <<<EOT
|
||||
<script>
|
||||
ciao = 0;
|
||||
function onLine() {
|
||||
ciao = ciao + 1;
|
||||
console.log(ciao);
|
||||
console.log("onLine");
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', 'http://62.171.139.86/allerta/online_check.php?utente=$user');
|
||||
xhr.onload = function () {
|
||||
if (xhr.status === 200) {
|
||||
console.log('Text ' + xhr.responseText);
|
||||
} else {
|
||||
console.log('Request failed. Returned status of ' + xhr.status);
|
||||
}
|
||||
};
|
||||
xhr.send();
|
||||
}
|
||||
|
||||
function offLine() {
|
||||
console.log("offLine");
|
||||
}
|
||||
|
||||
function check() {
|
||||
console.log("dfcghfhdt");
|
||||
var i = new Image();
|
||||
i.onload = onLine;
|
||||
i.onerror = offLine;
|
||||
i.src = 'https://www.google-analytics.com/__utm.gif';
|
||||
}
|
||||
</script>
|
||||
EOT;
|
||||
echo($string);
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
error_reporting(1);
|
||||
$start = true;
|
||||
$minuti = date('i');
|
||||
|
||||
include_once 'secure.php';
|
||||
|
||||
init_class();
|
||||
|
||||
$sql = "SELECT nome, online, online_time FROM vigili";
|
||||
$risultato = $database->esegui($sql, true);
|
||||
var_dump($risultato);
|
||||
foreach($risultato as $row){
|
||||
print("<pre>" . print_r($row, true) . "</pre>");
|
||||
}
|
||||
|
||||
if(isset($_GET) && !is_null($_GET['utente'])){
|
||||
$sql = "UPDATE vigili SET online = '1', online_time = '$minuti' WHERE nome = '" . urldecode($_GET['utente']) . "'";
|
||||
$risultato = $database->esegui($sql, true);
|
||||
var_dump($risultato);
|
||||
}
|
||||
?>
|
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
error_reporting(1);
|
||||
$start = true;
|
||||
$minuti = date('i');
|
||||
include_once 'secure.php';
|
||||
|
||||
init_class();
|
||||
|
||||
$minuti = date('i');
|
||||
$sql = "UPDATE vigili SET online='0', online_time='0' WHERE online_time < '$minuti';";
|
||||
#$sql = "UPDATE vigili SET online='0', online_time='0';";
|
||||
$risultato = $database->esegui($sql);
|
||||
echo $sql;
|
||||
?>
|
|
@ -0,0 +1,3 @@
|
|||
<?php
|
||||
require_once 'core.php';
|
||||
loadtemplate('profilo.html', ['titolo' => 'Pagina profilo', 'distaccamento' => 'VVF Darfo', 'urlsoftware' => '', 'utente' => $utente->info()]);
|
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
include_once '../../secure.php';
|
||||
init_class();
|
||||
$utente->richiedilogin();
|
||||
if(isset($_POST["nomeutenteattivato"]) && isset($_POST["nomeutenteattivatore"]) && $_POST["dispo"] == 1) {
|
||||
$risultato = $database->esegui("UPDATE vigili SET disponibile = 1 WHERE nome = :nome", false, [":nome" => $_POST["nomeutenteattivato"]]);
|
||||
$utente->log("Attivazione disponibilita'", $_POST["nomeutenteattivato"], $_POST["nomeutenteattivatore"], date("d/m/Y"), date("H:i.s"));
|
||||
} else if(isset($_POST["nomeutenteattivato"]) && isset($_POST["nomeutenteattivatore"]) && $_POST["dispo"] == 0){
|
||||
$risultato = $database->esegui("UPDATE vigili SET disponibile = 0 WHERE nome = :nome", false, [":nome" => $_POST["nomeutenteattivato"]]);
|
||||
$utente->log("Rimozione disponibilita'", $_POST["nomeutenteattivato"], $_POST["nomeutenteattivatore"], date("d/m/Y"), date("H:i.s"));
|
||||
}
|
||||
?>
|
|
@ -0,0 +1,332 @@
|
|||
<?php
|
||||
include_once("../../secure.php");
|
||||
init_class();
|
||||
$utente->richiedilogin();
|
||||
|
||||
$risultato = $database->esegui('SELECT * FROM vigili WHERE id = :id', true, array(":id" => $_GET['utente'])); // Pesco i dati della tabella
|
||||
|
||||
$whitelist = $utente->whitelist();
|
||||
?>
|
||||
<style>/*
|
||||
* Bootstrap v2.2.1
|
||||
*
|
||||
* Copyright 2012 Twitter, Inc
|
||||
* Licensed under the Apache License v2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Designed and built with all the love in the world @twitter by @mdo and @fat.
|
||||
*/
|
||||
.clearfix {
|
||||
*zoom: 1;
|
||||
}
|
||||
.clearfix:before,
|
||||
.clearfix:after {
|
||||
display: table;
|
||||
content: "";
|
||||
line-height: 0;
|
||||
}
|
||||
.clearfix:after {
|
||||
clear: both;
|
||||
}
|
||||
html {
|
||||
font-size: 100%;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
}
|
||||
a:focus {
|
||||
outline: thin dotted #333;
|
||||
outline: 5px auto -webkit-focus-ring-color;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
a:hover,
|
||||
a:active {
|
||||
outline: 0;
|
||||
}
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-size: 100%;
|
||||
vertical-align: middle;
|
||||
}
|
||||
button,
|
||||
input {
|
||||
*overflow: visible;
|
||||
line-height: normal;
|
||||
}
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
color: #333;
|
||||
background-color: #fff;
|
||||
}
|
||||
a {
|
||||
color: #08c;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
color: #005580;
|
||||
text-decoration: underline;
|
||||
}
|
||||
.row {
|
||||
margin-left: -20px;
|
||||
*zoom: 1;
|
||||
}
|
||||
.row:before,
|
||||
.row:after {
|
||||
display: table;
|
||||
content: "";
|
||||
line-height: 0;
|
||||
}
|
||||
.row:after {
|
||||
clear: both;
|
||||
}
|
||||
[class*="span"] {
|
||||
float: left;
|
||||
min-height: 1px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
.container,
|
||||
.navbar-static-top .container,
|
||||
.navbar-fixed-top .container,
|
||||
.navbar-fixed-bottom .container {
|
||||
width: 940px;
|
||||
}
|
||||
.span12 {
|
||||
width: 940px;
|
||||
}
|
||||
.span11 {
|
||||
width: 860px;
|
||||
}
|
||||
.span10 {
|
||||
width: 780px;
|
||||
}
|
||||
.span9 {
|
||||
width: 700px;
|
||||
}
|
||||
.span8 {
|
||||
width: 620px;
|
||||
}
|
||||
.span7 {
|
||||
width: 540px;
|
||||
}
|
||||
.span6 {
|
||||
width: 460px;
|
||||
}
|
||||
.span5 {
|
||||
width: 380px;
|
||||
}
|
||||
.span4 {
|
||||
width: 300px;
|
||||
}
|
||||
.span3 {
|
||||
width: 220px;
|
||||
}
|
||||
.span2 {
|
||||
width: 140px;
|
||||
}
|
||||
.span1 {
|
||||
width: 60px;
|
||||
}
|
||||
[class*="span"].pull-right,
|
||||
.row-fluid [class*="span"].pull-right {
|
||||
float: right;
|
||||
}
|
||||
.container {
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
*zoom: 1;
|
||||
}
|
||||
.container:before,
|
||||
.container:after {
|
||||
display: table;
|
||||
content: "";
|
||||
line-height: 0;
|
||||
}
|
||||
.container:after {
|
||||
clear: both;
|
||||
}
|
||||
p {
|
||||
margin: 0 0 10px;
|
||||
}
|
||||
.lead {
|
||||
margin-bottom: 20px;
|
||||
font-size: 21px;
|
||||
font-weight: 200;
|
||||
line-height: 30px;
|
||||
}
|
||||
small {
|
||||
font-size: 85%;
|
||||
}
|
||||
h1 {
|
||||
margin: 10px 0;
|
||||
font-family: inherit;
|
||||
font-weight: bold;
|
||||
line-height: 20px;
|
||||
color: inherit;
|
||||
text-rendering: optimizelegibility;
|
||||
}
|
||||
h1 small {
|
||||
font-weight: normal;
|
||||
line-height: 1;
|
||||
color: #999;
|
||||
}
|
||||
h1 {
|
||||
line-height: 40px;
|
||||
}
|
||||
h1 {
|
||||
font-size: 38.5px;
|
||||
}
|
||||
h1 small {
|
||||
font-size: 24.5px;
|
||||
}
|
||||
.header {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
margin-left: -480px;
|
||||
background-color: #fff;
|
||||
border-bottom: 1px solid #ddd;
|
||||
padding-top: 10px;
|
||||
z-index: 10;
|
||||
}
|
||||
.footer {
|
||||
color: #ddd;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.footer a {
|
||||
color: #ccc;
|
||||
text-decoration: underline;
|
||||
}
|
||||
.the-icons {
|
||||
font-size: 14px;
|
||||
line-height: 24px;
|
||||
}
|
||||
.switch {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 10px;
|
||||
color: #666;
|
||||
}
|
||||
.switch input {
|
||||
margin-right: 0.3em;
|
||||
}
|
||||
.codesOn .i-name {
|
||||
display: none;
|
||||
}
|
||||
.codesOn .i-code {
|
||||
display: inline;
|
||||
}
|
||||
.i-code {
|
||||
display: none;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'test';
|
||||
src: url('./risorse/font/test.eot?93129191');
|
||||
src: url('./risorse/font/test.eot?93129191#iefix') format('embedded-opentype'),
|
||||
url('./risorse/font/test.woff?93129191') format('woff'),
|
||||
url('./risorse/font/test.ttf?93129191') format('truetype'),
|
||||
url('./risorse/font/test.svg?93129191#test') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
|
||||
.demo-icon
|
||||
{
|
||||
font-family: "test";
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
speak: none;
|
||||
|
||||
display: inline-block;
|
||||
text-decoration: inherit;
|
||||
width: 1em;
|
||||
margin-right: .2em;
|
||||
text-align: center;
|
||||
/* opacity: .8; */
|
||||
|
||||
/* For safety - reset parent styles, that can break glyph codes*/
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
|
||||
/* fix buttons height, for twitter bootstrap */
|
||||
line-height: 1em;
|
||||
|
||||
/* Animation center compensation - margins should be symmetric */
|
||||
/* remove if not needed */
|
||||
margin-left: .2em;
|
||||
|
||||
/* You can be more comfortable with increased icons size */
|
||||
/* font-size: 120%; */
|
||||
|
||||
/* Font smoothing. That was taken from TWBS */
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
|
||||
/* Uncomment for 3D effect */
|
||||
/* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
th, td {
|
||||
border: 1px solid grey;
|
||||
border-collapse: collapse;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#href {
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
font: bold 12px Arial, Helvetica, sans-serif;
|
||||
color: #fff;
|
||||
padding: 10px 20px;
|
||||
border: solid 1px #0076a3;
|
||||
background: #0095cd;
|
||||
}
|
||||
|
||||
table {
|
||||
box-shadow: 2px 2px 25px rgba(0,0,0,0.5);
|
||||
border-radius: 15px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
<?php
|
||||
function vero1($text, $img1 = "", $img2 = ""){
|
||||
if($text == 1){
|
||||
return "sì " . $img1;
|
||||
} else {
|
||||
return "no " . $img2;
|
||||
}
|
||||
}
|
||||
//var_dump($risultato);
|
||||
foreach($risultato as $row){
|
||||
$nome = ($row['online']==1) ? '<u>' . $row['nome'] . "</u>" : $row['nome'];
|
||||
echo("<h1>Dati anagrafici <b>$nome</b></h1><br><br>");
|
||||
echo('<img alt="VVF" src="./risorse/images/logo.jpg" width="150" class="img-resposive"><br><br><br>');
|
||||
$disp = vero1($row['disponibile'], "<i class='fa fa-check' style='color:green' width='22px'></i>", "<i class='fa fa-times' style='color:red' width='22px'></i>");
|
||||
$caposquadra = vero1($row['caposquadra'], "<img src='./risorse/images/cascoRosso.png' width='22px'>", "<img src='./risorse/images/cascoNero.png' width='22px'>");
|
||||
$autista = vero1($row['autista'], "<img src='./risorse/images/volante.png' width='22px'>");
|
||||
echo("<p>Nome: <b>$nome</b></p><br>");
|
||||
echo("<p>Disponibilità: <b>{$disp}</b></p><br>");
|
||||
echo("<p>Caposquadra: <b>{$caposquadra}</b></p><br>");
|
||||
echo("<p>Autista: <b>{$autista}</b></p><br>");
|
||||
echo("<p>Numero di telefono <i class='fa fa-phone' style='color:green' width='22px'></i>: <b><a href='tel:{$row['telefono']}'>{$row['telefono']}</a></b></p><br>");
|
||||
echo("<p>Minuti di disponibilità <br>(Questo mese) <i class='demo-icon icon-hourglass'></i>: <b>{$row['minuti_dispo']} minuti</b></p><br>");
|
||||
echo("<p>Interventi svolti: <b>{$row['interventi']}</b></p><br>");
|
||||
}
|
||||
?>
|
|
@ -0,0 +1,18 @@
|
|||
<?php
|
||||
include_once("../../secure.php");
|
||||
init_class();
|
||||
$utente->richiedilogin();
|
||||
|
||||
$vigili_sql = "SELECT `id`, `nome`, `disponibile`, `caposquadra`, `autista`, `telefono`, `interventi`, `esercitazioni`, `online`, `minuti_dispo`, `immagine` FROM `vigili` LIMIT 0 , 30";
|
||||
$vigili = $database->esegui($vigili_sql, true);
|
||||
|
||||
$interventi_sql="SELECT * FROM `interventi` ORDER BY `interventi`.`id` DESC LIMIT 0 , 30";
|
||||
$interventi = $database->esegui($interventi_sql, true);
|
||||
|
||||
$esercitazioni_sql="SELECT * FROM `esercitazioni` ORDER BY `esercitazioni`.`id` DESC LIMIT 0 , 30";
|
||||
$esercitazioni = $database->esegui($esercitazioni_sql, true);
|
||||
|
||||
$elenco = ["vigili" => $vigili, "interventi" => $interventi, "esercitazioni" => $esercitazioni];
|
||||
|
||||
header("Content-Type: application/json; charset=UTF-8");
|
||||
echo(json_encode($elenco));
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
$start = true;
|
||||
$minuti = 5;
|
||||
include_once "../../secure.php";
|
||||
init_class();
|
||||
$utente->richiedilogin();
|
||||
|
||||
function arraynum(){
|
||||
global $database;
|
||||
$risultato = $database->esegui("SELECT * FROM vigili ORDER BY disponibile DESC, caposquadra DESC, interventi ASC, nome ASC", true); // Pesco i dati della tabella e li ordino in base alla disponibilità
|
||||
$incremento = array();
|
||||
$minuti_dispo_old = array();
|
||||
foreach($risultato as $row){
|
||||
if($row['disponibile'] == "1"){
|
||||
$incremento[] = $row['nome'];
|
||||
$minuti_dispo_old[] = $row['minuti_dispo'];
|
||||
}
|
||||
}
|
||||
|
||||
return $incremento;
|
||||
}
|
||||
|
||||
if(!isset($_GET['nome'])){
|
||||
print_r(arraynum());
|
||||
} else {
|
||||
if(isset($_GET['nome'])){
|
||||
$arr = arraynum();
|
||||
$nome = str_replace("_", " ", $_GET['nome']);
|
||||
if(in_array($nome, $arr)){
|
||||
echo "si";
|
||||
} else {
|
||||
echo "no";
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -0,0 +1,108 @@
|
|||
<?php
|
||||
include_once("../../secure.php");
|
||||
init_class();
|
||||
$utente->richiedilogin();
|
||||
|
||||
function ancora($content, $id) {
|
||||
$content = substr($content,0,$limit);
|
||||
$content = substr($content,0,strrpos($content,' '));
|
||||
$content = $content." <a href='dettagli.php?iid=$id#note'>...Leggi ancora</a>";
|
||||
return $content;
|
||||
}
|
||||
|
||||
$impostazioni['modifica'] = false;
|
||||
$impostazioni['elimina'] = false;
|
||||
|
||||
$risultato = $database->esegui("SELECT * FROM esercitazioni ORDER BY data DESC, inizio desc", true); // Pesco i dati della tabella e li ordino in base alla data
|
||||
?>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
<style>
|
||||
|
||||
#add {
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
font: bold 12px Arial, Helvetica, sans-serif;
|
||||
color: #fff;
|
||||
padding: 10px 20px;
|
||||
border: solid 1px #0076a3;
|
||||
background: #0095cd;
|
||||
}
|
||||
|
||||
#href {
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
font: bold 12px Arial, Helvetica, sans-serif;
|
||||
color: #fff;
|
||||
padding: 10px 20px;
|
||||
border: solid 1px #0076a3;
|
||||
background: #0095cd;
|
||||
}
|
||||
|
||||
th, td {
|
||||
border: 1px solid grey;
|
||||
border-collapse: collapse;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
|
||||
table {
|
||||
box-shadow: 0px 3px 15px rgba(0,0,0,0.5);
|
||||
border-radius: 5px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
#new-search-area {
|
||||
width: 100%;
|
||||
clear: both;
|
||||
padding-top: 20px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
#new-search-area input {
|
||||
width: 600px;
|
||||
font-size: 20px;
|
||||
padding: 5px;
|
||||
margin-right: 150px;
|
||||
margin-left: 80px;
|
||||
}
|
||||
</style>
|
||||
<div style='margin: 20px 0;' class="mx-auto">
|
||||
<div style='margin: 2px auto' id="new-search-area"></div>
|
||||
<div class="table-responsive">
|
||||
<div style="overflow-x:auto;">
|
||||
<table id="esercitazioni" cellspacing='0' class="display table table-striped table-bordered dt-responsive nowrap" style="width: 90%; text-align:center;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Data</th>
|
||||
<th>Nome</th>
|
||||
<th>Ora inizio</th>
|
||||
<th>Ora fine</th>
|
||||
<th>Capo</th>
|
||||
<th>Personale</th>
|
||||
<th>Luogo</th>
|
||||
<th>Note</th>
|
||||
<?php if($impostazioni['modifica']) { echo "<th>Modifica</th>"; } ?>
|
||||
<?php if($impostazioni['elimina']) { echo "<th>Elimina</th>"; } ?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
foreach($risultato as $row){
|
||||
$persone = base64_encode( $row['dec'] );
|
||||
echo "<tr><td>" . $row['data'] . "</td><td>" . $row['nome'] . "</td><td>" . $row['inizio'] . "</td><td>" . $row['fine'] . "</td><td>" . $row['capo'] . "</td><td>" . $row['personale'] . "</td><td>" . $row['luogo'] . "</td><td>" . $row['note'] . "</td>";
|
||||
if($impostazioni['modifica']) {
|
||||
echo "<td><a href='modifica.php?modifica&id={$row['id']}&data={$row['data']}&nome={$row['nome']}&inizio={$row['inizio']}&fine={$row['fine']}&luogo={$row['luogo']}¬e={$row['note']}'><i style='font-size: 40px' class='fa fa-edit'></i></a></td>";
|
||||
}
|
||||
if($impostazioni['elimina']) {
|
||||
echo "<td><a href='modifica.php?elimina&id={$row['id']}&persone={$persone}'><i style='font-size: 40px' class='fa fa-trash'></i></a></td></tr>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,110 @@
|
|||
<?php
|
||||
include_once("../../secure.php");
|
||||
init_class();
|
||||
$utente->richiedilogin();
|
||||
|
||||
function ancora($content, $id) {
|
||||
$content = substr($content,0,$limit);
|
||||
$content = substr($content,0,strrpos($content,' '));
|
||||
$content = $content." <a href='dettagli.php?iid=$id#note'>...Leggi ancora</a>";
|
||||
return $content;
|
||||
}
|
||||
|
||||
$impostazioni['modifica'] = false;
|
||||
$impostazioni['elimina'] = false;
|
||||
|
||||
$risultato = $database->esegui("SELECT * FROM interventi ORDER BY data DESC, uscita desc", true); // Pesco i dati della tabella e li ordino in base alla data
|
||||
?>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
<style>
|
||||
|
||||
#add {
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
font: bold 12px Arial, Helvetica, sans-serif;
|
||||
color: #fff;
|
||||
padding: 10px 20px;
|
||||
border: solid 1px #0076a3;
|
||||
background: #0095cd;
|
||||
}
|
||||
|
||||
#href {
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
font: bold 12px Arial, Helvetica, sans-serif;
|
||||
color: #fff;
|
||||
padding: 10px 20px;
|
||||
border: solid 1px #0076a3;
|
||||
background: #0095cd;
|
||||
}
|
||||
|
||||
th, td {
|
||||
border: 1px solid grey;
|
||||
border-collapse: collapse;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
|
||||
table {
|
||||
box-shadow: 0px 3px 15px rgba(0,0,0,0.5);
|
||||
border-radius: 5px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
#new-search-area {
|
||||
width: 100%;
|
||||
clear: both;
|
||||
padding-top: 20px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
#new-search-area input {
|
||||
width: 600px;
|
||||
font-size: 20px;
|
||||
padding: 5px;
|
||||
margin-right: 150px;
|
||||
margin-left: 80px;
|
||||
}
|
||||
</style>
|
||||
<div style='margin: 20px 0;' class="mx-auto">
|
||||
<div style='margin: 2px auto' id="new-search-area"></div>
|
||||
<div class="table-responsive">
|
||||
<div style="overflow-x:auto;">
|
||||
<table id="interventi" cellspacing='0' class="display table table-striped table-bordered dt-responsive nowrap" style="width: 90%; text-align:center;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Data</th>
|
||||
<th>Codice</th>
|
||||
<th>Uscita</th>
|
||||
<th>Rientro</th>
|
||||
<th>Caposquadra</th>
|
||||
<th>Autisti</th>
|
||||
<th>Personale</th>
|
||||
<th>Luogo</th>
|
||||
<th>Note</th>
|
||||
<th>Tipo</th>
|
||||
<?php if($impostazioni['modifica']) { echo "<th>Modifica</th>"; } ?>
|
||||
<?php if($impostazioni['elimina']) { echo "<th>Elimina</th>"; } ?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
foreach($risultato as $row){
|
||||
$persone = base64_encode( $row['incrementa'] );
|
||||
echo "<tr><td>" . $row['data'] . "</td><td>" . $row['codice'] . "</td><td>" . $row['uscita'] . "</td><td>" . $row['rientro'] . "</td><td>" . $row['capo'] . "</td><td>" . $row['autisti'] . "</td><td>" . $row['personale'] . "</td><td>" . $row['luogo'] . "</td><td>" . $row['note'] . "</td><td>" . $row['tipo'] . "</td>";
|
||||
if($impostazioni['modifica']) {
|
||||
echo "<td><a href='modifica.php?modifica&id={$row['id']}&data={$row['data']}&codice={$row['codice']}&uscita={$row['uscita']}&rientro={$row['rientro']}&luogo={$row['luogo']}¬e={$row['note']}&tipo={$row['tipo']}'><i style='font-size: 40px' class='fa fa-edit'></i></a></td>";
|
||||
}
|
||||
if($impostazioni['elimina']) {
|
||||
echo "<td><a href='modifica.php?elimina&id={$row['id']}&persone={$persone}'><i style='font-size: 40px' class='fa fa-trash'></i></a></td></tr>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,61 @@
|
|||
<?php
|
||||
include_once("../../secure.php");
|
||||
init_class();
|
||||
$utente->richiedilogin();
|
||||
|
||||
$risultato = $database->esegui("SELECT * FROM vigili ORDER BY disponibile DESC, caposquadra DESC, interventi ASC, minuti_dispo ASC, nome ASC", true);
|
||||
|
||||
$whitelist = $utente->whitelist();
|
||||
?>
|
||||
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
|
||||
<style>
|
||||
|
||||
|
||||
th, td {
|
||||
border: 1px solid grey;
|
||||
border-collapse: collapse;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#href {
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
font: bold 12px Arial, Helvetica, sans-serif;
|
||||
color: #fff;
|
||||
padding: 10px 20px;
|
||||
border: solid 1px #0076a3;
|
||||
background: #0095cd;
|
||||
}
|
||||
|
||||
table {
|
||||
box-shadow: 2px 2px 25px rgba(0,0,0,0.5);
|
||||
border-radius: 15px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
<div style="overflow-x:auto;">
|
||||
<table style="width: 90%; text-align:center;">
|
||||
<tr>
|
||||
<th>Nome</th>
|
||||
<th>Disponibile</th>
|
||||
<?php
|
||||
foreach($risultato as $row){
|
||||
if(!in_array($row['nome'], $whitelist)){
|
||||
echo "<tr><td>";
|
||||
if ($row['caposquadra'] == 1) {echo "<img src='./risorse/images/cascoRosso.png' width='20px'> ";} else{echo "<img src='./risorse/images/cascoNero.png' width='20px'> ";}
|
||||
if($row['online'] == 1){
|
||||
echo "<u>".$row["nome"]."</u></td><td>";
|
||||
} else {
|
||||
echo "".$row["nome"]."</td><td>";
|
||||
}
|
||||
if ($row['disponibile'] == 1) {echo "<i class='fa fa-check' style='color:green'></i>";} else{echo "<i class='fa fa-times' style='color:red'></i>";};
|
||||
echo "</td></tr>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
</div>
|
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
include_once("../../secure.php");
|
||||
init_class();
|
||||
$utente->richiedilogin();
|
||||
|
||||
$risultato = $database->esegui("SELECT * FROM vigili ORDER BY disponibile DESC, caposquadra DESC, interventi ASC, minuti_dispo ASC, nome ASC", true);
|
||||
|
||||
$whitelist = $utente->whitelist();
|
||||
?>
|
||||
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
|
||||
<style>
|
||||
th, td {
|
||||
border: 1px solid grey;
|
||||
border-collapse: collapse;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#href {
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
font: bold 12px Arial, Helvetica, sans-serif;
|
||||
color: #fff;
|
||||
padding: 10px 20px;
|
||||
border: solid 1px #0076a3;
|
||||
background: #0095cd;
|
||||
}
|
||||
|
||||
table {
|
||||
box-shadow: 2px 2px 25px rgba(0,0,0,0.5);
|
||||
border-radius: 15px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
<div style="overflow-x:auto;">
|
||||
<table style="width: 90%; text-align:center;">
|
||||
<tr>
|
||||
<th>Nome</th>
|
||||
<th>Disponibile</th>
|
||||
<th>Autista</th>
|
||||
<th>Chiama</th>
|
||||
<th>Scrivi</th>
|
||||
<th>Interventi</th>
|
||||
<th>Minuti Disponibilità</th>
|
||||
<th>Altro</th>
|
||||
<?php
|
||||
foreach($risultato as $row){
|
||||
if(!in_array($row['nome'], $whitelist) OR in_array($utente->nome(), $whitelist)){
|
||||
echo "<tr>
|
||||
<td>";
|
||||
$nome = $row["nome"];
|
||||
$disponibile = $row["disponibile"];
|
||||
if ($row['caposquadra'] == 1) {echo "<a onclick='AttivoAdmin(\"$nome\", \"$disponibile\");'><img src='./risorse/images/cascoRosso.png' width='20px'> ";} else{echo "<a onclick='AttivoAdmin(\"$nome\", \"$disponibile\");'><img src='./risorse/images/cascoNero.png' width='20px'> ";}
|
||||
if($row['online'] == 1){
|
||||
echo "<u>".$row["nome"]."</u></a></td><td><a onclick='AttivoAdmin(\"$nome\", \"$disponibile\");'>";
|
||||
} else {
|
||||
echo $row["nome"]."</a></td><td><a onclick='AttivoAdmin(\"$nome\", \"$disponibile\");'>";
|
||||
}
|
||||
if ($row['disponibile'] == 1) {echo "<i class='fa fa-check' style='color:green'></i>";} else{echo "<i class='fa fa-times' style='color:red'></i>";};
|
||||
echo "</a></td>
|
||||
<td>";
|
||||
if ($row['autista'] == 1) {echo "<img src='./risorse/images/volante.png' width='20px'>";} else{echo "";};
|
||||
echo "</td>
|
||||
<td><a href='tel:+" . $row['telefono'] . "'><i class='fa fa-phone'></i></a></td><td>";
|
||||
|
||||
if ($row['disponibile'] == 1) {echo " <a href='https://api.whatsapp.com/send?phone=" . $row['telefono'] . "&text=ALLERTA IN CORSO.%20Mettiti%20in%20contatto%20con%20Fulvio'><i class='fa fa-whatsapp' style='color:green'></i></td>";} else{echo "";};
|
||||
|
||||
$interventi = $row['interventi'];
|
||||
$minuti = $row['minuti_dispo'];
|
||||
$u = 'anagrafica.php?utente=' . str_replace(' ', '_', urldecode(strtolower($row["id"])));
|
||||
echo "<td>$interventi</td><td>$minuti</td><td><a href='$u'><p>Altri dettagli</p></a></td></tr>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
</div>
|
|
@ -0,0 +1,133 @@
|
|||
<?php
|
||||
include_once("../../secure.php");
|
||||
init_class();
|
||||
$utente->richiedilogin();
|
||||
/*
|
||||
function trovanomi() {
|
||||
include_once '../../connection.php';
|
||||
$sql = "SELECT nome FROM vigili"; // Pesco i dati della tabella
|
||||
$result = mysqli_query($connessione, $sql);
|
||||
while($row = $result->fetch_array())
|
||||
{
|
||||
$rows[] = $row;
|
||||
}
|
||||
$nome = array();
|
||||
foreach($rows as $row)
|
||||
{
|
||||
$nome[] = $row['nome'];
|
||||
|
||||
}
|
||||
mysqli_close($connessione);
|
||||
return $nome;
|
||||
}
|
||||
|
||||
function checkbox_vigili() {
|
||||
$whitelist = $utente->whitelist();
|
||||
$id = 0;
|
||||
$checkbox = <<<HTML
|
||||
<div class="dropdown show">
|
||||
<a class="btn btn-secondary dropdown-toggle " href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
Dropdown link
|
||||
</a>
|
||||
|
||||
<select class="form-control" aria-labelledby="dropdownMenuLink">
|
||||
HTML;
|
||||
foreach(trovanomi() as $nome) {
|
||||
$test = "";
|
||||
if(in_array($nome, $whitelist)){
|
||||
$test = "hidden='hidden'";
|
||||
}
|
||||
$id = $id + 1;
|
||||
$checkbox = $checkbox . "<option class='dropdown-item' id='checkbox' style='' $test value='$nome'>" . "<label $test>$nome</label><br>";
|
||||
}
|
||||
$checkbox = $checkbox . "</select>";
|
||||
return $checkbox;
|
||||
}
|
||||
*/
|
||||
|
||||
$risultato = $database->esegui("SELECT * FROM `log`", true);
|
||||
|
||||
$whitelist = $utente->whitelist();
|
||||
?>
|
||||
<style>
|
||||
th, td {
|
||||
border: 1px solid grey;
|
||||
border-collapse: collapse;
|
||||
padding: 5px;
|
||||
}
|
||||
#href {
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
font: bold 12px Arial, Helvetica, sans-serif;
|
||||
color: #fff;
|
||||
padding: 10px 20px;
|
||||
border: solid 1px #0076a3;
|
||||
background: #0095cd;
|
||||
}
|
||||
table {
|
||||
overflow-x: scroll;
|
||||
box-shadow: 2px 2px 25px rgba(0,0,0,0.5);
|
||||
border-radius: 15px;
|
||||
margin: auto;
|
||||
}
|
||||
select {
|
||||
margin: 50px;
|
||||
width: 150px;
|
||||
padding: 5px 35px 5px 5px;
|
||||
font-size: 16px;
|
||||
border: 1px solid #ccc;
|
||||
height: 34px;
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
/* background: url(http://www.stackoverflow.com/favicon.ico) 96% / 15% no-repeat #eee; */
|
||||
}
|
||||
/* CAUTION: IE hackery ahead */
|
||||
select::-ms-expand {
|
||||
display: none; /* remove default arrow on ie10 and ie11 */
|
||||
}
|
||||
/* target Internet Explorer 9 to undo the custom arrow */
|
||||
@media screen and (min-width:0\0) {
|
||||
select {
|
||||
background:none\9;
|
||||
padding: 5px\9;
|
||||
}
|
||||
}
|
||||
#new-search-area {
|
||||
width: 100%;
|
||||
clear: both;
|
||||
padding-top: 20px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
#new-search-area input {
|
||||
width: 600px;
|
||||
font-size: 20px;
|
||||
padding: 5px;
|
||||
margin-right: 150px;
|
||||
margin-left: 80px;
|
||||
}
|
||||
</style>
|
||||
<div style="overflow-x:auto;">
|
||||
<table style="width: 90%; text-align:center;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Azione</th>
|
||||
<th>Interessato</th>
|
||||
<th>Fatto da</th>
|
||||
<th>Ora</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
foreach($risultato as $row){
|
||||
if(!in_array($row['subisce'], $whitelist) OR in_array($utente->nome(), $whitelist)){
|
||||
echo "<tr><td>" . $row["azione"] . "</td><td>" . $row["subisce"] . "</td><td>" . $row["agisce"] ."</td><td>" . $row['data'] . " - ore " . $row['ora'] . "</tr>";
|
||||
|
||||
}
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
|
@ -0,0 +1,85 @@
|
|||
/*
|
||||
Animation example, for spinners
|
||||
*/
|
||||
.animate-spin {
|
||||
-moz-animation: spin 2s infinite linear;
|
||||
-o-animation: spin 2s infinite linear;
|
||||
-webkit-animation: spin 2s infinite linear;
|
||||
animation: spin 2s infinite linear;
|
||||
display: inline-block;
|
||||
}
|
||||
@-moz-keyframes spin {
|
||||
0% {
|
||||
-moz-transform: rotate(0deg);
|
||||
-o-transform: rotate(0deg);
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
-moz-transform: rotate(359deg);
|
||||
-o-transform: rotate(359deg);
|
||||
-webkit-transform: rotate(359deg);
|
||||
transform: rotate(359deg);
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes spin {
|
||||
0% {
|
||||
-moz-transform: rotate(0deg);
|
||||
-o-transform: rotate(0deg);
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
-moz-transform: rotate(359deg);
|
||||
-o-transform: rotate(359deg);
|
||||
-webkit-transform: rotate(359deg);
|
||||
transform: rotate(359deg);
|
||||
}
|
||||
}
|
||||
@-o-keyframes spin {
|
||||
0% {
|
||||
-moz-transform: rotate(0deg);
|
||||
-o-transform: rotate(0deg);
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
-moz-transform: rotate(359deg);
|
||||
-o-transform: rotate(359deg);
|
||||
-webkit-transform: rotate(359deg);
|
||||
transform: rotate(359deg);
|
||||
}
|
||||
}
|
||||
@-ms-keyframes spin {
|
||||
0% {
|
||||
-moz-transform: rotate(0deg);
|
||||
-o-transform: rotate(0deg);
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
-moz-transform: rotate(359deg);
|
||||
-o-transform: rotate(359deg);
|
||||
-webkit-transform: rotate(359deg);
|
||||
transform: rotate(359deg);
|
||||
}
|
||||
}
|
||||
@keyframes spin {
|
||||
0% {
|
||||
-moz-transform: rotate(0deg);
|
||||
-o-transform: rotate(0deg);
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
-moz-transform: rotate(359deg);
|
||||
-o-transform: rotate(359deg);
|
||||
-webkit-transform: rotate(359deg);
|
||||
transform: rotate(359deg);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,287 @@
|
|||
/*
|
||||
aprilFools.css
|
||||
Written by Wes Bos
|
||||
Modified by Nick Karamoff
|
||||
|
||||
I assume no responsibility for angry co-workers or lost productivity
|
||||
|
||||
Put these CSS definitons into your co-workers Custom.css file.
|
||||
|
||||
They will be applied to every website they visit as well as their developer tools.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
Turn every website upside down
|
||||
*/
|
||||
body {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
/*
|
||||
blur every website for a split second every 30 seconds
|
||||
*/
|
||||
body {
|
||||
animation: blur 30s infinite;
|
||||
}
|
||||
|
||||
/*
|
||||
Spin every Website
|
||||
*/
|
||||
body {
|
||||
animation: spin 5s linear infinite;
|
||||
}
|
||||
|
||||
/*
|
||||
Flip all images upside down
|
||||
*/
|
||||
img {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
/*
|
||||
COMIC SANS EVERYTHING
|
||||
*/
|
||||
|
||||
body, p, body p, body div p {
|
||||
font-family: 'Comic Sans MS', cursive !important;
|
||||
}
|
||||
|
||||
/*
|
||||
Spin all images
|
||||
*/
|
||||
img {
|
||||
animation: spin 1s linear infinite;
|
||||
}
|
||||
|
||||
/*
|
||||
Hide every 2nd paragraph element on a page
|
||||
*/
|
||||
p:nth-child(2) {
|
||||
display:none !important;
|
||||
}
|
||||
|
||||
/*
|
||||
Permanent cursor wait
|
||||
*/
|
||||
html {
|
||||
cursor:wait !important;
|
||||
}
|
||||
|
||||
/*
|
||||
hide the cursor all together
|
||||
*/
|
||||
html {
|
||||
cursor:none !important;
|
||||
}
|
||||
|
||||
/*
|
||||
slowly grow text
|
||||
*/
|
||||
p {
|
||||
animation: grow 120s ease-in;
|
||||
}
|
||||
|
||||
|
||||
/* Dev Tools */
|
||||
|
||||
/*
|
||||
Spin dev tools round and round
|
||||
*/
|
||||
#-webkit-web-inspector {
|
||||
-webkit-animation: spin 1s linear infinite;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Flip dev tools upside down
|
||||
*/
|
||||
#-webkit-web-inspector {
|
||||
-webkit-transform:rotate(180deg);
|
||||
}
|
||||
|
||||
|
||||
/* Hide the close button */
|
||||
#-webkit-web-inspector .toolbar-item.close-left {
|
||||
display:none !important;
|
||||
}
|
||||
|
||||
|
||||
/* Make console text all blurry */
|
||||
#-webkit-web-inspector .console-group-messages {
|
||||
text-shadow: 0 0 3px rgba(0,0,0,.5) !important;
|
||||
}
|
||||
|
||||
#-webkit-web-inspector .console-error-level .console-message-text,
|
||||
#-webkit-web-inspector .console-error-level .section .header .title {
|
||||
text-shadow: 0 0 3px rgba(255,0,0,.5) !important;
|
||||
}
|
||||
|
||||
#-webkit-web-inspector .console-user-command > .console-message-text {
|
||||
text-shadow: 0 0 3px rgba(0,128,255,.5) !important;
|
||||
}
|
||||
|
||||
#-webkit-web-inspector .console-group-messages,
|
||||
#-webkit-web-inspector .console-user-command > .console-message-text,
|
||||
#-webkit-web-inspector .console-formatted-null,
|
||||
#-webkit-web-inspector .console-formatted-undefined,
|
||||
#-webkit-web-inspector .console-debug-level .console-message-text,
|
||||
#-webkit-web-inspector .console-error-level .console-message-text,
|
||||
#-webkit-web-inspector .console-error-level .section .header .title,
|
||||
#-webkit-web-inspector .console-group-messages .section .header .title,
|
||||
#-webkit-web-inspector .console-formatted-object,
|
||||
#-webkit-web-inspector .console-formatted-node,
|
||||
#-webkit-web-inspector .console-formatted-array,
|
||||
#-webkit-web-inspector .section .properties .name,
|
||||
#-webkit-web-inspector .event-properties .name,
|
||||
#-webkit-web-inspector .console-formatted-object .name,
|
||||
#-webkit-web-inspector .console-formatted-number,
|
||||
#-webkit-web-inspector .console-formatted-string,
|
||||
#-webkit-web-inspector #console-messages a {
|
||||
color: transparent !important;
|
||||
}
|
||||
|
||||
|
||||
/* HTML PRIDE! */
|
||||
html {
|
||||
animation: rainbow 8s infinite;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Make every website fall over!
|
||||
*/
|
||||
html, body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
html {
|
||||
perspective: 1000;
|
||||
}
|
||||
|
||||
body {
|
||||
transform-origin: bottom center;
|
||||
transform: rotateX(-90deg);
|
||||
animation: fall 1.5s ease-in;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Insert a phrase every paragraph
|
||||
*/
|
||||
p:before {
|
||||
content: "YOLO ";
|
||||
}
|
||||
|
||||
|
||||
/* New tricks by Nick Karamoff */
|
||||
|
||||
/*
|
||||
Flip every paragraph upside down
|
||||
*/
|
||||
p {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Flip every header upside down
|
||||
*/
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Mirror the whole webpage
|
||||
*/
|
||||
body {
|
||||
transform: scale(-1, 1);
|
||||
}
|
||||
|
||||
/*
|
||||
Transparent paragraphs
|
||||
*/
|
||||
p {
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
/*
|
||||
"Very good design" combo (blue bg, red text, Comic Sans)
|
||||
*/
|
||||
body, p, h1, h2, h3, h4, h5, h6 {
|
||||
color: red;
|
||||
background-color: blue;
|
||||
font-family: "Comic Sans", cursive;
|
||||
}
|
||||
|
||||
/*
|
||||
Deactivate all the links
|
||||
*/
|
||||
a {
|
||||
pointer-events: none;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/*
|
||||
Unlinkify links (standart formatting, but still clickable)
|
||||
*/
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/*
|
||||
Links not allowed
|
||||
*/
|
||||
a {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
/*
|
||||
Everything's a link!
|
||||
*/
|
||||
body {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Animations */
|
||||
|
||||
/*
|
||||
Everything that is moving is powered from here, so just copy this whole chunk
|
||||
*/
|
||||
|
||||
@keyframes blur {
|
||||
0% { filter: blur(0px); }
|
||||
49% { filter: blur(0px); }
|
||||
50% { filter: blur(1px); }
|
||||
51% { filter: blur(0px); }
|
||||
100% { filter: blur(0px); }
|
||||
}
|
||||
|
||||
@-webkit-keyframes spin {
|
||||
0% { -webkit-transform: rotate(0deg); }
|
||||
100% { -webkit-transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
@keyframes rainbow {
|
||||
100% { filter: hue-rotate(360deg); }
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
@keyframes fall {
|
||||
0% { transform: none; }
|
||||
100% { transform: rotateX(-90deg); }
|
||||
}
|
||||
|
||||
@keyframes grow {
|
||||
0% { font-size: none; }
|
||||
100% { font-size: 80pt; }
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
.picker,.picker__holder{width:100%;position:absolute}.picker{font-size:16px;text-align:left;line-height:1.2;color:#000;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{overflow-y:auto;-webkit-overflow-scrolling:touch;background:#fff;border:1px solid #aaa;border-top-width:0;border-bottom-width:0;border-radius:0 0 5px 5px;box-sizing:border-box;min-width:176px;max-width:466px;max-height:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;transform:translateY(-1em) perspective(600px) rotateX(10deg);transition:transform .15s ease-out,opacity .15s ease-out,max-height 0s .15s,border-width 0s .15s}/*!
|
||||
* Classic picker styling for pickadate.js
|
||||
* Demo: http://amsul.github.io/pickadate.js
|
||||
*/.picker__frame{padding:1px}.picker__wrap{margin:-1px}.picker--opened .picker__holder{max-height:25em;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1;border-top-width:1px;border-bottom-width:1px;transform:translateY(0) perspective(600px) rotateX(0);transition:transform .15s ease-out,opacity .15s ease-out,max-height 0s,border-width 0s;box-shadow:0 6px 18px 1px rgba(0,0,0,.12)}
|
|
@ -0,0 +1 @@
|
|||
.picker__footer,.picker__header,.picker__table{text-align:center}.picker__box{padding:0 1em}.picker__header{position:relative;margin-top:.75em}.picker__month,.picker__year{font-weight:500;display:inline-block;margin-left:.25em;margin-right:.25em}.picker__year{color:#999;font-size:.8em;font-style:italic}.picker__select--month,.picker__select--year{border:1px solid #b7b7b7;height:2em;padding:.5em;margin-left:.25em;margin-right:.25em}.picker__select--month{width:35%}.picker__select--year{width:22.5%}.picker__select--month:focus,.picker__select--year:focus{border-color:#0089ec}.picker__nav--next,.picker__nav--prev{position:absolute;padding:.5em 1.25em;width:1em;height:1em;box-sizing:content-box;top:-.25em}.picker__nav--prev{left:-1em;padding-right:1.25em}.picker__nav--next{right:-1em;padding-left:1.25em}@media (min-width:24.5em){.picker__select--month,.picker__select--year{margin-top:-.5em}.picker__nav--next,.picker__nav--prev{top:-.33em}.picker__nav--prev{padding-right:1.5em}.picker__nav--next{padding-left:1.5em}}.picker__nav--next:before,.picker__nav--prev:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:.75em solid #000;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:.75em solid #000}.picker__nav--next:hover,.picker__nav--prev:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__nav--disabled,.picker__nav--disabled:before,.picker__nav--disabled:before:hover,.picker__nav--disabled:hover{cursor:default;background:0 0;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:inherit;width:100%;margin-top:.75em;margin-bottom:.5em}@media (min-height:33.875em){.picker__table{margin-bottom:.75em}}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999;font-weight:500}@media (min-height:33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day{padding:.3125em 0;font-weight:200;border:1px solid transparent}.picker__day--today{position:relative}.picker__day--today:before{content:" ";position:absolute;top:2px;right:2px;width:0;height:0;border-top:.5em solid #0059bc;border-left:.5em solid transparent}.picker__day--disabled:before{border-top-color:#aaa}.picker__day--outfocus{color:#ddd}.picker--focused .picker__day--highlighted,.picker__day--highlighted:hover,.picker__day--infocus:hover,.picker__day--outfocus:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__day--highlighted{border-color:#0089ec}.picker--focused .picker__day--selected,.picker__day--selected,.picker__day--selected:hover{background:#0089ec;color:#fff}.picker--focused .picker__day--disabled,.picker__day--disabled,.picker__day--disabled:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbb}.picker__button--clear,.picker__button--close,.picker__button--today{border:1px solid #fff;background:#fff;font-size:.8em;padding:.66em 0;font-weight:700;width:33%;display:inline-block;vertical-align:bottom}.picker__button--clear:hover,.picker__button--close:hover,.picker__button--today:hover{cursor:pointer;color:#000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--clear:focus,.picker__button--close:focus,.picker__button--today:focus{background:#b1dcfb;border-color:#0089ec;outline:0}.picker__button--clear:before,.picker__button--close:before,.picker__button--today:before{position:relative;display:inline-block;height:0}.picker__button--clear:before,.picker__button--today:before{content:" ";margin-right:.45em}.picker__button--today:before{top:-.05em;width:0;border-top:.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-.25em;width:.66em;border-top:3px solid #e20}.picker__button--close:before{content:"\D7";top:-.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaa}
|
|
@ -0,0 +1 @@
|
|||
.picker__list{list-style:none;padding:.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #ddd;border-top:1px solid #ddd;margin-bottom:-1px;position:relative;background:#fff;padding:.75em 1.25em}.picker__list-item--highlighted,.picker__list-item:hover{border-color:#0089ec;z-index:10}.picker--focused .picker__list-item--highlighted,.picker__list-item--highlighted:hover,.picker__list-item:hover{color:#000;background:#b1dcfb;cursor:pointer}@media (min-height:46.75em){.picker__list-item{padding:.5em 1em}}.picker--focused .picker__list-item--selected,.picker__list-item--selected,.picker__list-item--selected:hover{background:#0089ec;color:#fff;z-index:10}.picker--focused .picker__list-item--disabled,.picker__list-item--disabled,.picker__list-item--disabled:hover{background:#f5f5f5;color:#ddd;cursor:default;border-color:#ddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:0 0;border:0;font-weight:500;font-size:.67em;text-align:center;text-transform:uppercase;color:#666}.picker--time .picker__button--clear:focus,.picker--time .picker__button--clear:hover{background:#e20;border-color:#e20;cursor:pointer;color:#fff;outline:0}.picker--time .picker__button--clear:before{top:-.25em;color:#666;font-size:1.25em;font-weight:700}.picker--time .picker__button--clear:focus:before,.picker--time .picker__button--clear:hover:before{color:#fff;border-color:#fff}.picker--time{min-width:256px;max-width:320px}.picker--time .picker__holder{background:#f2f2f2}@media (min-height:40.125em){.picker--time .picker__holder{font-size:.875em}}.picker--time .picker__box{padding:0;position:relative}
|
|
@ -0,0 +1,4 @@
|
|||
.picker{font-size:16px;text-align:left;line-height:1.2;color:#000;position:absolute;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;position:fixed;transition:background .15s ease-out,transform 0s .15s;-webkit-backface-visibility:hidden}/*!
|
||||
* Default mobile-first, responsive styling for pickadate.js
|
||||
* Demo: http://amsul.github.io/pickadate.js
|
||||
*/.picker__frame,.picker__holder{top:0;bottom:0;left:0;right:0;-ms-transform:translateY(100%);transform:translateY(100%)}.picker__frame{position:absolute;margin:0 auto;min-width:256px;max-width:666px;width:100%;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;transition:all .15s ease-out}.picker__wrap{display:table;width:100%;height:100%}@media (min-height:33.875em){.picker__frame{overflow:visible;top:auto;bottom:-100%;max-height:80%}.picker__wrap{display:block}}.picker__box{background:#fff;display:table-cell;vertical-align:middle}@media (min-height:26.5em){.picker__box{font-size:1.25em}}@media (min-height:33.875em){.picker__box{display:block;font-size:1.33em;border:1px solid #777;border-top-color:#898989;border-bottom-width:0;border-radius:5px 5px 0 0;box-shadow:0 12px 36px 16px rgba(0,0,0,.24)}.picker--opened .picker__frame{top:auto;bottom:0}}@media (min-height:40.125em){.picker__frame{margin-bottom:7.5%}.picker__box{font-size:1.5em;border-bottom-width:1px;border-radius:5px}}.picker--opened .picker__holder{-ms-transform:translateY(0);transform:translateY(0);zoom:1;background:rgba(0,0,0,.32);transition:background .15s ease-out}.picker--opened .picker__frame{-ms-transform:translateY(0);transform:translateY(0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1}
|
|
@ -0,0 +1 @@
|
|||
.picker__footer,.picker__header,.picker__table{text-align:center}.picker__box{padding:0 1em}.picker__header{position:relative;margin-top:.75em}.picker__month,.picker__year{font-weight:500;display:inline-block;margin-left:.25em;margin-right:.25em}.picker__year{color:#999;font-size:.8em;font-style:italic}.picker__select--month,.picker__select--year{border:1px solid #b7b7b7;height:2em;padding:.5em;margin-left:.25em;margin-right:.25em}.picker__select--month{width:35%}.picker__select--year{width:22.5%}.picker__select--month:focus,.picker__select--year:focus{border-color:#0089ec}.picker__nav--next,.picker__nav--prev{position:absolute;padding:.5em 1.25em;width:1em;height:1em;box-sizing:content-box;top:-.25em}.picker__nav--prev{left:-1em;padding-right:1.25em}.picker__nav--next{right:-1em;padding-left:1.25em}@media (min-width:24.5em){.picker__select--month,.picker__select--year{margin-top:-.5em}.picker__nav--next,.picker__nav--prev{top:-.33em}.picker__nav--prev{padding-right:1.5em}.picker__nav--next{padding-left:1.5em}}.picker__nav--next:before,.picker__nav--prev:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:.75em solid #000;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:.75em solid #000}.picker__nav--next:hover,.picker__nav--prev:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__nav--disabled,.picker__nav--disabled:before,.picker__nav--disabled:before:hover,.picker__nav--disabled:hover{cursor:default;background:0 0;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:inherit;width:100%;margin-top:.75em;margin-bottom:.5em}@media (min-height:33.875em){.picker__table{margin-bottom:.75em}}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999;font-weight:500}@media (min-height:33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day{padding:.3125em 0;font-weight:200;border:1px solid transparent}.picker__day--today{position:relative}.picker__day--today:before{content:" ";position:absolute;top:2px;right:2px;width:0;height:0;border-top:.5em solid #0059bc;border-left:.5em solid transparent}.picker__day--disabled:before{border-top-color:#aaa}.picker__day--outfocus{color:#ddd}.picker--focused .picker__day--highlighted,.picker__day--highlighted:hover,.picker__day--infocus:hover,.picker__day--outfocus:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__day--highlighted{border-color:#0089ec}.picker--focused .picker__day--selected,.picker__day--selected,.picker__day--selected:hover{background:#0089ec;color:#fff}.picker--focused .picker__day--disabled,.picker__day--disabled,.picker__day--disabled:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbb}.picker__button--clear,.picker__button--close,.picker__button--today{border:1px solid #fff;background:#fff;font-size:.8em;padding:.66em 0;font-weight:700;width:33%;display:inline-block;vertical-align:bottom}.picker__button--clear:hover,.picker__button--close:hover,.picker__button--today:hover{cursor:pointer;color:#000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--clear:focus,.picker__button--close:focus,.picker__button--today:focus{background:#b1dcfb;border-color:#0089ec;outline:0}.picker__button--clear:before,.picker__button--close:before,.picker__button--today:before{position:relative;display:inline-block;height:0}.picker__button--clear:before,.picker__button--today:before{content:" ";margin-right:.45em}.picker__button--today:before{top:-.05em;width:0;border-top:.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-.25em;width:.66em;border-top:3px solid #e20}.picker__button--close:before{content:"\D7";top:-.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaa}
|
|
@ -0,0 +1 @@
|
|||
.picker__list{list-style:none;padding:.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #ddd;border-top:1px solid #ddd;margin-bottom:-1px;position:relative;background:#fff;padding:.75em 1.25em}.picker__list-item--highlighted,.picker__list-item:hover{border-color:#0089ec;z-index:10}.picker--focused .picker__list-item--highlighted,.picker__list-item--highlighted:hover,.picker__list-item:hover{cursor:pointer;color:#000;background:#b1dcfb}@media (min-height:46.75em){.picker__list-item{padding:.5em 1em}}.picker--focused .picker__list-item--selected,.picker__list-item--selected,.picker__list-item--selected:hover{background:#0089ec;color:#fff;z-index:10}.picker--focused .picker__list-item--disabled,.picker__list-item--disabled,.picker__list-item--disabled:hover{background:#f5f5f5;color:#ddd;cursor:default;border-color:#ddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:0 0;border:0;font-weight:500;font-size:.67em;text-align:center;text-transform:uppercase;color:#666}.picker--time .picker__button--clear:focus,.picker--time .picker__button--clear:hover{background:#e20;border-color:#e20;cursor:pointer;color:#fff;outline:0}.picker--time .picker__button--clear:before{top:-.25em;color:#666;font-size:1.25em;font-weight:700}.picker--time .picker__button--clear:focus:before,.picker--time .picker__button--clear:hover:before{color:#fff;border-color:#fff}.picker--time .picker__frame{min-width:256px;max-width:320px}.picker--time .picker__box{font-size:1em;background:#f2f2f2;padding:0}@media (min-height:40.125em){.picker--time .picker__box{margin-bottom:5em}}
|
|
@ -0,0 +1,285 @@
|
|||
/*
|
||||
aprilFools.css
|
||||
Written by Wes Bos
|
||||
Modified by Nick Karamoff
|
||||
I assume no responsibility for angry co-workers or lost productivity
|
||||
Put these CSS definitons into your co-workers Custom.css file.
|
||||
|
||||
They will be applied to every website they visit as well as their developer tools.
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Turn every website upside down
|
||||
|
||||
body {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
/*
|
||||
blur every website for a split second every 30 seconds
|
||||
|
||||
body {
|
||||
animation: blur 30s infinite;
|
||||
}
|
||||
|
||||
/*
|
||||
Spin every Website
|
||||
|
||||
body {
|
||||
animation: spin 5s linear infinite;
|
||||
}
|
||||
|
||||
/*
|
||||
Flip all images upside down
|
||||
|
||||
img {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
/*
|
||||
COMIC SANS EVERYTHING
|
||||
|
||||
|
||||
body, p, body p, body div p {
|
||||
font-family: 'Comic Sans MS', cursive !important;
|
||||
}
|
||||
|
||||
/*
|
||||
Spin all images
|
||||
|
||||
img {
|
||||
animation: spin 1s linear infinite;
|
||||
}
|
||||
|
||||
/*
|
||||
Hide every 2nd paragraph element on a page
|
||||
|
||||
p:nth-child(2) {
|
||||
display:none !important;
|
||||
}
|
||||
|
||||
/*
|
||||
Permanent cursor wait
|
||||
|
||||
html {
|
||||
cursor:wait !important;
|
||||
}
|
||||
|
||||
/*
|
||||
hide the cursor all together
|
||||
|
||||
html {
|
||||
cursor:none !important;
|
||||
}
|
||||
|
||||
/*
|
||||
slowly grow text
|
||||
|
||||
p {
|
||||
animation: grow 120s ease-in;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Spin dev tools round and round
|
||||
|
||||
#-webkit-web-inspector {
|
||||
-webkit-animation: spin 1s linear infinite;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Flip dev tools upside down
|
||||
|
||||
#-webkit-web-inspector {
|
||||
-webkit-transform:rotate(180deg);
|
||||
}
|
||||
|
||||
|
||||
/* Hide the close button
|
||||
#-webkit-web-inspector .toolbar-item.close-left {
|
||||
display:none !important;
|
||||
}
|
||||
|
||||
|
||||
/* Make console text all blurry
|
||||
#-webkit-web-inspector .console-group-messages {
|
||||
text-shadow: 0 0 3px rgba(0,0,0,.5) !important;
|
||||
}
|
||||
|
||||
#-webkit-web-inspector .console-error-level .console-message-text,
|
||||
#-webkit-web-inspector .console-error-level .section .header .title {
|
||||
text-shadow: 0 0 3px rgba(255,0,0,.5) !important;
|
||||
}
|
||||
|
||||
#-webkit-web-inspector .console-user-command > .console-message-text {
|
||||
text-shadow: 0 0 3px rgba(0,128,255,.5) !important;
|
||||
}
|
||||
|
||||
#-webkit-web-inspector .console-group-messages,
|
||||
#-webkit-web-inspector .console-user-command > .console-message-text,
|
||||
#-webkit-web-inspector .console-formatted-null,
|
||||
#-webkit-web-inspector .console-formatted-undefined,
|
||||
#-webkit-web-inspector .console-debug-level .console-message-text,
|
||||
#-webkit-web-inspector .console-error-level .console-message-text,
|
||||
#-webkit-web-inspector .console-error-level .section .header .title,
|
||||
#-webkit-web-inspector .console-group-messages .section .header .title,
|
||||
#-webkit-web-inspector .console-formatted-object,
|
||||
#-webkit-web-inspector .console-formatted-node,
|
||||
#-webkit-web-inspector .console-formatted-array,
|
||||
#-webkit-web-inspector .section .properties .name,
|
||||
#-webkit-web-inspector .event-properties .name,
|
||||
#-webkit-web-inspector .console-formatted-object .name,
|
||||
#-webkit-web-inspector .console-formatted-number,
|
||||
#-webkit-web-inspector .console-formatted-string,
|
||||
#-webkit-web-inspector #console-messages a {
|
||||
color: transparent !important;
|
||||
}
|
||||
|
||||
|
||||
|
||||
html {
|
||||
animation: rainbow 8s infinite;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Make every website fall over!
|
||||
|
||||
html, body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
html {
|
||||
perspective: 1000;
|
||||
}
|
||||
|
||||
body {
|
||||
transform-origin: bottom center;
|
||||
transform: rotateX(-90deg);
|
||||
animation: fall 1.5s ease-in;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Insert a phrase every paragraph
|
||||
|
||||
p:before {
|
||||
content: "YOLO ";
|
||||
}
|
||||
|
||||
|
||||
/* New tricks by Nick Karamoff */
|
||||
|
||||
/*
|
||||
Flip every paragraph upside down
|
||||
|
||||
p {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Flip every header upside down
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Mirror the whole webpage
|
||||
|
||||
body {
|
||||
transform: scale(-1, 1);
|
||||
}
|
||||
|
||||
/*
|
||||
Transparent paragraphs
|
||||
|
||||
p {
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
/*
|
||||
"Very good design" combo (blue bg, red text, Comic Sans)
|
||||
|
||||
body, p, h1, h2, h3, h4, h5, h6 {
|
||||
color: red;
|
||||
background-color: blue;
|
||||
font-family: "Comic Sans", cursive;
|
||||
}
|
||||
|
||||
/*
|
||||
Deactivate all the links
|
||||
|
||||
a {
|
||||
pointer-events: none;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/*
|
||||
Unlinkify links (standart formatting, but still clickable)
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/*
|
||||
Links not allowed
|
||||
|
||||
a {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
/*
|
||||
Everything's a link!
|
||||
|
||||
body {
|
||||
cursor: pointer;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
/* Animations */
|
||||
|
||||
/*
|
||||
Everything that is moving is powered from here, so just copy this whole chunk
|
||||
*/
|
||||
|
||||
@keyframes blur {
|
||||
0% { filter: blur(0px); }
|
||||
49% { filter: blur(0px); }
|
||||
50% { filter: blur(1px); }
|
||||
51% { filter: blur(0px); }
|
||||
100% { filter: blur(0px); }
|
||||
}
|
||||
|
||||
@-webkit-keyframes spin {
|
||||
0% { -webkit-transform: rotate(0deg); }
|
||||
100% { -webkit-transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
@keyframes rainbow {
|
||||
100% { filter: hue-rotate(360deg); }
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
@keyframes fall {
|
||||
0% { transform: none; }
|
||||
100% { transform: rotateX(-90deg); }
|
||||
}
|
||||
|
||||
@keyframes grow {
|
||||
0% { font-size: none; }
|
||||
100% { font-size: 80pt; }
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
/*!
|
||||
* Styling for RTL (right-to-left) languages using pickadate.js
|
||||
*/.picker{direction:rtl}.picker__nav--next{right:auto;left:-1em}.picker__nav--prev{left:auto;right:-1em}.picker__nav--next:before{border-left:0;border-right:.75em solid #000}.picker__nav--prev:before{border-right:0;border-left:.75em solid #000}
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
.icon-clock:before { content: '\e800'; } /* '' */
|
||||
.icon-hourglass:before { content: '\e801'; } /* '' */
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
.icon-clock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-hourglass { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
|
@ -0,0 +1,14 @@
|
|||
[class^="icon-"], [class*=" icon-"] {
|
||||
font-family: 'test';
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
|
||||
/* fix buttons height */
|
||||
line-height: 1em;
|
||||
|
||||
/* you can be more comfortable with increased icons size */
|
||||
/* font-size: 120%; */
|
||||
}
|
||||
|
||||
.icon-clock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.icon-hourglass { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
|
@ -0,0 +1,59 @@
|
|||
@font-face {
|
||||
font-family: 'test';
|
||||
src: url('../font/test.eot?26673982');
|
||||
src: url('../font/test.eot?26673982#iefix') format('embedded-opentype'),
|
||||
url('../font/test.woff2?26673982') format('woff2'),
|
||||
url('../font/test.woff?26673982') format('woff'),
|
||||
url('../font/test.ttf?26673982') format('truetype'),
|
||||
url('../font/test.svg?26673982#test') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
|
||||
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
|
||||
/*
|
||||
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
||||
@font-face {
|
||||
font-family: 'test';
|
||||
src: url('../font/test.svg?26673982#test') format('svg');
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
[class^="icon-"]:before, [class*=" icon-"]:before {
|
||||
font-family: "test";
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
speak: none;
|
||||
|
||||
display: inline-block;
|
||||
text-decoration: inherit;
|
||||
width: 1em;
|
||||
margin-right: .2em;
|
||||
text-align: center;
|
||||
/* opacity: .8; */
|
||||
|
||||
/* For safety - reset parent styles, that can break glyph codes*/
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
|
||||
/* fix buttons height, for twitter bootstrap */
|
||||
line-height: 1em;
|
||||
|
||||
/* Animation center compensation - margins should be symmetric */
|
||||
/* remove if not needed */
|
||||
margin-left: .2em;
|
||||
|
||||
/* you can be more comfortable with increased icons size */
|
||||
/* font-size: 120%; */
|
||||
|
||||
/* Font smoothing. That was taken from TWBS */
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
|
||||
/* Uncomment for 3D effect */
|
||||
/* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
|
||||
}
|
||||
|
||||
.icon-clock:before { content: '\e800'; } /* '' */
|
||||
.icon-hourglass:before { content: '\e801'; } /* '' */
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>Copyright (C) 2018 by original authors @ fontello.com</metadata>
|
||||
<defs>
|
||||
<font id="test" horiz-adv-x="1000" >
|
||||
<font-face font-family="test" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
|
||||
<missing-glyph horiz-adv-x="1000" />
|
||||
<glyph glyph-name="clock" unicode="" d="M460 810q190 0 325-135t135-325-135-325-325-135-325 135-135 325 135 325 325 135z m0-820q150 0 255 106t105 254q0 150-105 255t-255 105q-148 0-254-105t-106-255q0-148 106-254t254-106z m36 620l0-244 150-150-50-50-170 170 0 274 70 0z" horiz-adv-x="920" />
|
||||
|
||||
<glyph glyph-name="hourglass" unicode="" d="M560 622q0-44-48-96t-97-99-49-77 49-76 97-97 48-97l0-118q0-34-86-73t-194-39-194 39-86 73l0 118q0 46 48 97t97 97 49 76-49 77-97 99-48 96l0 118q0 32 87 71t193 39 193-39 87-71l0-118z m-482 112l-18-14q-4-8 4-14 92-52 216-52 132 0 220 50 14 10-16 30-96 54-202 54-120 0-204-54z m228-384q0 18 4 33t18 33 20 25 31 31 29 28q92 92 92 122l2 50q-100-54-222-54t-222 54l4-50q0-32 90-122 6-6 22-21t23-22l19-19t17-21 11-20 9-23 3-24q0-10-1-19t-6-18-8-16-11-17l-12-15t-15-16-16-15-18-16-17-16q-90-90-90-122l0-66q8 4 66 23t92 43 34 58q0 30 26 30t26-30q0-34 33-58t94-43 67-23l0 66q0 30-92 122-4 4-21 20t-22 21-18 19-18 22-12 20-9 23-2 23z" horiz-adv-x="560" />
|
||||
</font>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 7.8 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 72 KiB |
After Width: | Height: | Size: 74 KiB |
|
@ -0,0 +1,52 @@
|
|||
{
|
||||
"name": "Allerta Vvf Volontari DARFO",
|
||||
"short_name": "Allerta",
|
||||
"theme_color": "#ff0000",
|
||||
"background_color": "#4181b4",
|
||||
"display": "standalone",
|
||||
"Scope": "/",
|
||||
"start_url": "/?utm_source=a2hs",
|
||||
"icons": [
|
||||
{
|
||||
"src": "images/icons/icon-72x72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "images/icons/icon-96x96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "images/icons/icon-128x128.png",
|
||||
"sizes": "128x128",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "images/icons/icon-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "images/icons/icon-152x152.png",
|
||||
"sizes": "152x152",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "images/icons/icon-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "images/icons/icon-384x384.png",
|
||||
"sizes": "384x384",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "images/icons/icon-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"splash_pages": null
|
||||
}
|
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 54 KiB |
|
@ -0,0 +1,26 @@
|
|||
$(document).ready(function(){
|
||||
$.get("risorse/ajax/ajax_cache.php", function(data, status){
|
||||
console.log(data);
|
||||
console.log(data.vigili);
|
||||
console.log(data.interventi);
|
||||
console.log(data.esercitazioni);
|
||||
var db = new Dexie("offline");
|
||||
console.log(db.tables.length);
|
||||
if(db.tables.length !== 0){
|
||||
db.vigilil.clear();
|
||||
db.interventi.clear();
|
||||
console.log("cleaned");
|
||||
}
|
||||
db.version(1).stores({
|
||||
vigili: '++id,nome,disponibile,caposquadra,autista,telefono,interventi,esercitazioni,online,minuti_dispo,immagine',
|
||||
interventi: '++id,data,codice,uscita,rientro,capo,autisti,personale,luogo,note,tipo,incrementa,inseritoda'
|
||||
});
|
||||
$.each( data.vigili, function( key, val ) {
|
||||
db.vigili.put(val);
|
||||
});
|
||||
$.each( data.interventi, function( key, val ) {
|
||||
db.interventi.put(val);
|
||||
});
|
||||
window.db = db;
|
||||
}, "json");
|
||||
});
|
|
@ -0,0 +1,10 @@
|
|||
/*!
|
||||
* Legacy browser support
|
||||
*/
|
||||
[].map||(Array.prototype.map=function(a,b){for(var c=this,d=c.length,e=new Array(d),f=0;f<d;f++)f in c&&(e[f]=a.call(b,c[f],f,c));return e}),[].filter||(Array.prototype.filter=function(a){if(null==this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=[],e=arguments[1],f=0;f<c;f++)if(f in b){var g=b[f];a.call(e,g,f,b)&&d.push(g)}return d}),[].indexOf||(Array.prototype.indexOf=function(a){if(null==this)throw new TypeError;var b=Object(this),c=b.length>>>0;if(0===c)return-1;var d=0;if(arguments.length>1&&(d=Number(arguments[1]),d!=d?d=0:0!==d&&d!=1/0&&d!=-1/0&&(d=(d>0||-1)*Math.floor(Math.abs(d)))),d>=c)return-1;for(var e=d>=0?d:Math.max(c-Math.abs(d),0);e<c;e++)if(e in b&&b[e]===a)return e;return-1});/*!
|
||||
* Cross-Browser Split 1.1.1
|
||||
* Copyright 2007-2012 Steven Levithan <stevenlevithan.com>
|
||||
* Available under the MIT License
|
||||
* http://blog.stevenlevithan.com/archives/cross-browser-split
|
||||
*/
|
||||
var nativeSplit=String.prototype.split,compliantExecNpcg=void 0===/()??/.exec("")[1];String.prototype.split=function(a,b){var c=this;if("[object RegExp]"!==Object.prototype.toString.call(a))return nativeSplit.call(c,a,b);var d,e,f,g,h=[],i=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.extended?"x":"")+(a.sticky?"y":""),j=0;for(a=new RegExp(a.source,i+"g"),c+="",compliantExecNpcg||(d=new RegExp("^"+a.source+"$(?!\\s)",i)),b=void 0===b?-1>>>0:b>>>0;(e=a.exec(c))&&!((f=e.index+e[0].length)>j&&(h.push(c.slice(j,e.index)),!compliantExecNpcg&&e.length>1&&e[0].replace(d,function(){for(var a=1;a<arguments.length-2;a++)void 0===arguments[a]&&(e[a]=void 0)}),e.length>1&&e.index<c.length&&Array.prototype.push.apply(h,e.slice(1)),g=e[0].length,j=f,h.length>=b));)a.lastIndex===e.index&&a.lastIndex++;return j===c.length?!g&&a.test("")||h.push(""):h.push(c.slice(j)),h.length>b?h.slice(0,b):h};
|
|
@ -0,0 +1,376 @@
|
|||
/* Snowfall jquery plugin
|
||||
|
||||
====================================================================
|
||||
LICENSE
|
||||
====================================================================
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
====================================================================
|
||||
|
||||
Version 1.51 Dec 2nd 2012
|
||||
// fixed bug where snow collection didn't happen if a valid doctype was declared.
|
||||
|
||||
Version 1.5 Oct 5th 2011
|
||||
Added collecting snow! Uses the canvas element to collect snow. In order to initialize snow collection use the following
|
||||
|
||||
$(document).snowfall({collection : 'element'});
|
||||
|
||||
element = any valid jquery selector.
|
||||
|
||||
The plugin then creates a canvas above every element that matches the selector, and collects the snow. If there are a varrying amount of elements the
|
||||
flakes get assigned a random one on start they will collide.
|
||||
|
||||
Version 1.4 Dec 8th 2010
|
||||
Fixed issues (I hope) with scroll bars flickering due to snow going over the edge of the screen.
|
||||
Added round snowflakes via css, will not work for any version of IE. - Thanks to Luke Barker of http://www.infinite-eye.com/
|
||||
Added shadows as an option via css again will not work with IE. The idea behind shadows, is to show flakes on lighter colored web sites - Thanks Yutt
|
||||
|
||||
Version 1.3.1 Nov 25th 2010
|
||||
Updated script that caused flakes not to show at all if plugin was initialized with no options, also added the fixes that Han Bongers suggested
|
||||
|
||||
Developed by Jason Brown for any bugs or questions email me at loktar69@hotmail
|
||||
info on the plugin is located on Somethinghitme.com
|
||||
|
||||
values for snow options are
|
||||
|
||||
flakeCount,
|
||||
flakeColor,
|
||||
flakeIndex,
|
||||
minSize,
|
||||
maxSize,
|
||||
minSpeed,
|
||||
maxSpeed,
|
||||
round, true or false, makes the snowflakes rounded if the browser supports it.
|
||||
shadow true or false, gives the snowflakes a shadow if the browser supports it.
|
||||
|
||||
Example Usage :
|
||||
$(document).snowfall({flakeCount : 100, maxSpeed : 10});
|
||||
|
||||
-or-
|
||||
|
||||
$('#element').snowfall({flakeCount : 800, maxSpeed : 5, maxSize : 5});
|
||||
|
||||
-or with defaults-
|
||||
|
||||
$(document).snowfall();
|
||||
|
||||
- To clear -
|
||||
$('#element').snowfall('clear');
|
||||
*/
|
||||
|
||||
// requestAnimationFrame polyfill from https://github.com/darius/requestAnimationFrame
|
||||
if (!Date.now)
|
||||
Date.now = function() { return new Date().getTime(); };
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
var vendors = ['webkit', 'moz'];
|
||||
for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
|
||||
var vp = vendors[i];
|
||||
window.requestAnimationFrame = window[vp+'RequestAnimationFrame'];
|
||||
window.cancelAnimationFrame = (window[vp+'CancelAnimationFrame']
|
||||
|| window[vp+'CancelRequestAnimationFrame']);
|
||||
}
|
||||
if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) // iOS6 is buggy
|
||||
|| !window.requestAnimationFrame || !window.cancelAnimationFrame) {
|
||||
var lastTime = 0;
|
||||
window.requestAnimationFrame = function(callback) {
|
||||
var now = Date.now();
|
||||
var nextTime = Math.max(lastTime + 16, now);
|
||||
return setTimeout(function() { callback(lastTime = nextTime); },
|
||||
nextTime - now);
|
||||
};
|
||||
window.cancelAnimationFrame = clearTimeout;
|
||||
}
|
||||
}());
|
||||
|
||||
(function($){
|
||||
$.snowfall = function(element, options){
|
||||
var flakes = [],
|
||||
defaults = {
|
||||
flakeCount : 35,
|
||||
flakeColor : '#ffffff',
|
||||
flakePosition: 'absolute',
|
||||
flakeIndex: 999999,
|
||||
minSize : 1,
|
||||
maxSize : 2,
|
||||
minSpeed : 1,
|
||||
maxSpeed : 5,
|
||||
round : false,
|
||||
shadow : false,
|
||||
collection : false,
|
||||
collectionHeight : 40,
|
||||
deviceorientation : false
|
||||
},
|
||||
options = $.extend(defaults, options),
|
||||
random = function random(min, max){
|
||||
return Math.round(min + Math.random()*(max-min));
|
||||
};
|
||||
|
||||
$(element).data("snowfall", this);
|
||||
|
||||
// Snow flake object
|
||||
function Flake(_x, _y, _size, _speed){
|
||||
// Flake properties
|
||||
this.x = _x;
|
||||
this.y = _y;
|
||||
this.size = _size;
|
||||
this.speed = _speed;
|
||||
this.step = 0;
|
||||
this.stepSize = random(1,10) / 100;
|
||||
|
||||
if(options.collection){
|
||||
this.target = canvasCollection[random(0,canvasCollection.length-1)];
|
||||
}
|
||||
|
||||
var flakeMarkup = null;
|
||||
|
||||
if(options.image){
|
||||
flakeMarkup = document.createElement("img");
|
||||
flakeMarkup.src = options.image;
|
||||
}else{
|
||||
flakeMarkup = document.createElement("div");
|
||||
$(flakeMarkup).css({'background' : options.flakeColor});
|
||||
}
|
||||
|
||||
$(flakeMarkup).attr({
|
||||
'class': 'snowfall-flakes',
|
||||
}).css({
|
||||
'width' : this.size,
|
||||
'height' : this.size,
|
||||
'position' : options.flakePosition,
|
||||
'top' : this.y,
|
||||
'left' : this.x,
|
||||
'fontSize' : 0,
|
||||
'zIndex' : options.flakeIndex
|
||||
});
|
||||
|
||||
if($(element).get(0).tagName === $(document).get(0).tagName){
|
||||
$('body').append($(flakeMarkup));
|
||||
element = $('body');
|
||||
}else{
|
||||
$(element).append($(flakeMarkup));
|
||||
}
|
||||
|
||||
this.element = flakeMarkup;
|
||||
|
||||
// Update function, used to update the snow flakes, and checks current snowflake against bounds
|
||||
this.update = function(){
|
||||
this.y += this.speed;
|
||||
|
||||
if(this.y > (elHeight) - (this.size + 6)){
|
||||
this.reset();
|
||||
}
|
||||
|
||||
this.element.style.top = this.y + 'px';
|
||||
this.element.style.left = this.x + 'px';
|
||||
|
||||
this.step += this.stepSize;
|
||||
|
||||
if (doRatio === false) {
|
||||
this.x += Math.cos(this.step);
|
||||
} else {
|
||||
this.x += (doRatio + Math.cos(this.step));
|
||||
}
|
||||
|
||||
// Pileup check
|
||||
if(options.collection){
|
||||
if(this.x > this.target.x && this.x < this.target.width + this.target.x && this.y > this.target.y && this.y < this.target.height + this.target.y){
|
||||
var ctx = this.target.element.getContext("2d"),
|
||||
curX = this.x - this.target.x,
|
||||
curY = this.y - this.target.y,
|
||||
colData = this.target.colData;
|
||||
|
||||
if(colData[parseInt(curX)][parseInt(curY+this.speed+this.size)] !== undefined || curY+this.speed+this.size > this.target.height){
|
||||
if(curY+this.speed+this.size > this.target.height){
|
||||
while(curY+this.speed+this.size > this.target.height && this.speed > 0){
|
||||
this.speed *= .5;
|
||||
}
|
||||
|
||||
ctx.fillStyle = defaults.flakeColor;
|
||||
|
||||
if(colData[parseInt(curX)][parseInt(curY+this.speed+this.size)] == undefined){
|
||||
colData[parseInt(curX)][parseInt(curY+this.speed+this.size)] = 1;
|
||||
ctx.fillRect(curX, (curY)+this.speed+this.size, this.size, this.size);
|
||||
}else{
|
||||
colData[parseInt(curX)][parseInt(curY+this.speed)] = 1;
|
||||
ctx.fillRect(curX, curY+this.speed, this.size, this.size);
|
||||
}
|
||||
this.reset();
|
||||
}else{
|
||||
// flow to the sides
|
||||
this.speed = 1;
|
||||
this.stepSize = 0;
|
||||
|
||||
if(parseInt(curX)+1 < this.target.width && colData[parseInt(curX)+1][parseInt(curY)+1] == undefined ){
|
||||
// go left
|
||||
this.x++;
|
||||
}else if(parseInt(curX)-1 > 0 && colData[parseInt(curX)-1][parseInt(curY)+1] == undefined ){
|
||||
// go right
|
||||
this.x--;
|
||||
}else{
|
||||
//stop
|
||||
ctx.fillStyle = defaults.flakeColor;
|
||||
ctx.fillRect(curX, curY, this.size, this.size);
|
||||
colData[parseInt(curX)][parseInt(curY)] = 1;
|
||||
this.reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(this.x + this.size > (elWidth) - widthOffset || this.x < widthOffset){
|
||||
this.reset();
|
||||
}
|
||||
}
|
||||
|
||||
// Resets the snowflake once it reaches one of the bounds set
|
||||
this.reset = function(){
|
||||
this.y = 0;
|
||||
this.x = random(widthOffset, elWidth - widthOffset);
|
||||
this.stepSize = random(1,10) / 100;
|
||||
this.size = random((options.minSize * 100), (options.maxSize * 100)) / 100;
|
||||
this.element.style.width = this.size + 'px';
|
||||
this.element.style.height = this.size + 'px';
|
||||
this.speed = random(options.minSpeed, options.maxSpeed);
|
||||
}
|
||||
}
|
||||
|
||||
// local vars
|
||||
var i = 0,
|
||||
elHeight = $(element).height(),
|
||||
elWidth = $(element).width(),
|
||||
widthOffset = 0,
|
||||
snowTimeout = 0;
|
||||
|
||||
// Collection Piece ******************************
|
||||
if(options.collection !== false){
|
||||
var testElem = document.createElement('canvas');
|
||||
if(!!(testElem.getContext && testElem.getContext('2d'))){
|
||||
var canvasCollection = [],
|
||||
elements = $(options.collection),
|
||||
collectionHeight = options.collectionHeight;
|
||||
|
||||
for(var i =0; i < elements.length; i++){
|
||||
var bounds = elements[i].getBoundingClientRect(),
|
||||
$canvas = $('<canvas/>',
|
||||
{
|
||||
'class' : 'snowfall-canvas'
|
||||
}),
|
||||
collisionData = [];
|
||||
|
||||
if(bounds.top-collectionHeight > 0){
|
||||
$('body').append($canvas);
|
||||
|
||||
$canvas.css({
|
||||
'position' : options.flakePosition,
|
||||
'left' : bounds.left + 'px',
|
||||
'top' : bounds.top-collectionHeight + 'px'
|
||||
})
|
||||
.prop({
|
||||
width: bounds.width,
|
||||
height: collectionHeight
|
||||
});
|
||||
|
||||
for(var w = 0; w < bounds.width; w++){
|
||||
collisionData[w] = [];
|
||||
}
|
||||
|
||||
canvasCollection.push({
|
||||
element : $canvas.get(0),
|
||||
x : bounds.left,
|
||||
y : bounds.top-collectionHeight,
|
||||
width : bounds.width,
|
||||
height: collectionHeight,
|
||||
colData : collisionData
|
||||
});
|
||||
}
|
||||
}
|
||||
}else{
|
||||
// Canvas element isnt supported
|
||||
options.collection = false;
|
||||
}
|
||||
}
|
||||
// ************************************************
|
||||
|
||||
// This will reduce the horizontal scroll bar from displaying, when the effect is applied to the whole page
|
||||
if($(element).get(0).tagName === $(document).get(0).tagName){
|
||||
widthOffset = 25;
|
||||
}
|
||||
|
||||
// Bind the window resize event so we can get the innerHeight again
|
||||
$(window).bind("resize", function(){
|
||||
elHeight = $(element)[0].clientHeight;
|
||||
elWidth = $(element)[0].offsetWidth;
|
||||
});
|
||||
|
||||
|
||||
// initialize the flakes
|
||||
for(i = 0; i < options.flakeCount; i+=1){
|
||||
flakes.push(new Flake(random(widthOffset,elWidth - widthOffset), random(0, elHeight), random((options.minSize * 100), (options.maxSize * 100)) / 100, random(options.minSpeed, options.maxSpeed)));
|
||||
}
|
||||
|
||||
// This adds the style to make the snowflakes round via border radius property
|
||||
if(options.round){
|
||||
$('.snowfall-flakes').css({'-moz-border-radius' : options.maxSize, '-webkit-border-radius' : options.maxSize, 'border-radius' : options.maxSize});
|
||||
}
|
||||
|
||||
// This adds shadows just below the snowflake so they pop a bit on lighter colored web pages
|
||||
if(options.shadow){
|
||||
$('.snowfall-flakes').css({'-moz-box-shadow' : '1px 1px 1px #555', '-webkit-box-shadow' : '1px 1px 1px #555', 'box-shadow' : '1px 1px 1px #555'});
|
||||
}
|
||||
|
||||
// On newer Macbooks Snowflakes will fall based on deviceorientation
|
||||
var doRatio = false;
|
||||
if (options.deviceorientation) {
|
||||
$(window).bind('deviceorientation', function(event) {
|
||||
doRatio = event.originalEvent.gamma * 0.1;
|
||||
});
|
||||
}
|
||||
|
||||
// this controls flow of the updating snow
|
||||
function snow(){
|
||||
for( i = 0; i < flakes.length; i += 1){
|
||||
flakes[i].update();
|
||||
}
|
||||
|
||||
snowTimeout = requestAnimationFrame(function(){snow()});
|
||||
}
|
||||
|
||||
snow();
|
||||
|
||||
// clears the snowflakes
|
||||
this.clear = function(){
|
||||
$('.snowfall-canvas').remove();
|
||||
$(element).children('.snowfall-flakes').remove();
|
||||
cancelAnimationFrame(snowTimeout);
|
||||
}
|
||||
};
|
||||
|
||||
// Initialize the options and the plugin
|
||||
$.fn.snowfall = function(options){
|
||||
if(typeof(options) == "object" || options == undefined){
|
||||
return this.each(function(i){
|
||||
(new $.snowfall(this, options));
|
||||
});
|
||||
}else if (typeof(options) == "string") {
|
||||
return this.each(function(i){
|
||||
var snow = $(this).data('snowfall');
|
||||
if(snow){
|
||||
snow.clear();
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
})(jQuery);
|
|
@ -0,0 +1,283 @@
|
|||
/* Snowfall pure js
|
||||
====================================================================
|
||||
LICENSE
|
||||
====================================================================
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
====================================================================
|
||||
|
||||
1.0
|
||||
Wanted to rewrite my snow plugin to use pure JS so you werent necessarily tied to using a framework.
|
||||
Does not include a selector engine or anything, just pass elements to it using standard JS selectors.
|
||||
|
||||
Does not clear snow currently. Collection portion removed just for ease of testing will add back in next version
|
||||
|
||||
Theres a few ways to call the snow you could do it the following way by directly passing the selector,
|
||||
|
||||
snowFall.snow(document.getElementsByTagName("body"), {options});
|
||||
|
||||
or you could save the selector results to a variable, and then call it
|
||||
|
||||
var elements = document.getElementsByClassName('yourclass');
|
||||
snowFall.snow(elements, {options});
|
||||
|
||||
Options are all the same as the plugin except clear, and collection
|
||||
|
||||
values for snow options are
|
||||
|
||||
flakeCount,
|
||||
flakeColor,
|
||||
flakeIndex,
|
||||
flakePosition,
|
||||
minSize,
|
||||
maxSize,
|
||||
minSpeed,
|
||||
maxSpeed,
|
||||
round, true or false, makes the snowflakes rounded if the browser supports it.
|
||||
shadow true or false, gives the snowflakes a shadow if the browser supports it.
|
||||
|
||||
*/
|
||||
|
||||
// requestAnimationFrame polyfill from https://github.com/darius/requestAnimationFrame
|
||||
if (!Date.now)
|
||||
Date.now = function() { return new Date().getTime(); };
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
var vendors = ['webkit', 'moz'];
|
||||
for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
|
||||
var vp = vendors[i];
|
||||
window.requestAnimationFrame = window[vp+'RequestAnimationFrame'];
|
||||
window.cancelAnimationFrame = (window[vp+'CancelAnimationFrame']
|
||||
|| window[vp+'CancelRequestAnimationFrame']);
|
||||
}
|
||||
if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) // iOS6 is buggy
|
||||
|| !window.requestAnimationFrame || !window.cancelAnimationFrame) {
|
||||
var lastTime = 0;
|
||||
window.requestAnimationFrame = function(callback) {
|
||||
var now = Date.now();
|
||||
var nextTime = Math.max(lastTime + 16, now);
|
||||
return setTimeout(function() { callback(lastTime = nextTime); },
|
||||
nextTime - now);
|
||||
};
|
||||
window.cancelAnimationFrame = clearTimeout;
|
||||
}
|
||||
}());
|
||||
|
||||
var snowFall = (function(){
|
||||
function jSnow(){
|
||||
// local methods
|
||||
var defaults = {
|
||||
flakeCount : 35,
|
||||
flakeColor : '#ffffff',
|
||||
flakeIndex: 999999,
|
||||
flakePosition: 'absolute',
|
||||
minSize : 1,
|
||||
maxSize : 2,
|
||||
minSpeed : 1,
|
||||
maxSpeed : 5,
|
||||
round : false,
|
||||
shadow : false,
|
||||
collection : false,
|
||||
image : false,
|
||||
collectionHeight : 40
|
||||
},
|
||||
flakes = [],
|
||||
element = {},
|
||||
elHeight = 0,
|
||||
elWidth = 0,
|
||||
widthOffset = 0,
|
||||
snowTimeout = 0,
|
||||
// For extending the default object with properties
|
||||
extend = function(obj, extObj){
|
||||
for(var i in extObj){
|
||||
if(obj.hasOwnProperty(i)){
|
||||
obj[i] = extObj[i];
|
||||
}
|
||||
}
|
||||
},
|
||||
// For setting CSS3 transform styles
|
||||
transform = function (el, styles){
|
||||
el.style.webkitTransform = styles;
|
||||
el.style.MozTransform = styles;
|
||||
el.style.msTransform = styles;
|
||||
el.style.OTransform = styles;
|
||||
el.style.transform = styles;
|
||||
},
|
||||
// random between range
|
||||
random = function random(min, max){
|
||||
return Math.round(min + Math.random()*(max-min));
|
||||
},
|
||||
// Set multiple styles at once.
|
||||
setStyle = function(element, props)
|
||||
{
|
||||
for (var property in props){
|
||||
element.style[property] = props[property] + ((property == 'width' || property == 'height') ? 'px' : '');
|
||||
}
|
||||
},
|
||||
// snowflake
|
||||
flake = function(_el, _size, _speed)
|
||||
{
|
||||
// Flake properties
|
||||
this.x = random(widthOffset, elWidth - widthOffset);
|
||||
this.y = random(0, elHeight);
|
||||
this.size = _size;
|
||||
this.speed = _speed;
|
||||
this.step = 0;
|
||||
this.stepSize = random(1,10) / 100;
|
||||
|
||||
if(defaults.collection){
|
||||
this.target = canvasCollection[random(0,canvasCollection.length-1)];
|
||||
}
|
||||
|
||||
var flakeObj = null;
|
||||
|
||||
if(defaults.image){
|
||||
flakeObj = new Image();
|
||||
flakeObj.src = defaults.image;
|
||||
}else{
|
||||
flakeObj = document.createElement('div');
|
||||
setStyle(flakeObj, {'background' : defaults.flakeColor});
|
||||
}
|
||||
|
||||
flakeObj.className = 'snowfall-flakes';
|
||||
setStyle(flakeObj, {'width' : this.size, 'height' : this.size, 'position' : defaults.flakePosition, 'top' : 0, 'left' : 0, 'will-change': 'transform', 'fontSize' : 0, 'zIndex' : defaults.flakeIndex});
|
||||
|
||||
// This adds the style to make the snowflakes round via border radius property
|
||||
if(defaults.round){
|
||||
setStyle(flakeObj,{'-moz-border-radius' : ~~(defaults.maxSize) + 'px', '-webkit-border-radius' : ~~(defaults.maxSize) + 'px', 'borderRadius' : ~~(defaults.maxSize) + 'px'});
|
||||
}
|
||||
|
||||
// This adds shadows just below the snowflake so they pop a bit on lighter colored web pages
|
||||
if(defaults.shadow){
|
||||
setStyle(flakeObj,{'-moz-box-shadow' : '1px 1px 1px #555', '-webkit-box-shadow' : '1px 1px 1px #555', 'boxShadow' : '1px 1px 1px #555'});
|
||||
}
|
||||
|
||||
if(_el.tagName === document.body.tagName){
|
||||
document.body.appendChild(flakeObj);
|
||||
}else{
|
||||
_el.appendChild(flakeObj);
|
||||
}
|
||||
|
||||
|
||||
this.element = flakeObj;
|
||||
|
||||
// Update function, used to update the snow flakes, and checks current snowflake against bounds
|
||||
this.update = function(){
|
||||
this.y += this.speed;
|
||||
|
||||
if(this.y > elHeight - (this.size + 6)){
|
||||
this.reset();
|
||||
}
|
||||
|
||||
transform(this.element, 'translateY('+this.y+'px) translateX('+this.x+'px)');
|
||||
|
||||
this.step += this.stepSize;
|
||||
this.x += Math.cos(this.step);
|
||||
|
||||
if(this.x + this.size > elWidth - widthOffset || this.x < widthOffset){
|
||||
this.reset();
|
||||
}
|
||||
}
|
||||
|
||||
// Resets the snowflake once it reaches one of the bounds set
|
||||
this.reset = function(){
|
||||
this.y = 0;
|
||||
this.x = random(widthOffset, elWidth - widthOffset);
|
||||
this.stepSize = random(1,10) / 100;
|
||||
this.size = random((defaults.minSize * 100), (defaults.maxSize * 100)) / 100;
|
||||
this.element.style.width = this.size + 'px';
|
||||
this.element.style.height = this.size + 'px';
|
||||
this.speed = random(defaults.minSpeed, defaults.maxSpeed);
|
||||
}
|
||||
},
|
||||
// this controls flow of the updating snow
|
||||
animateSnow = function(){
|
||||
for(var i = 0; i < flakes.length; i += 1){
|
||||
flakes[i].update();
|
||||
}
|
||||
snowTimeout = requestAnimationFrame(function(){animateSnow()});
|
||||
}
|
||||
return{
|
||||
snow : function(_element, _options){
|
||||
extend(defaults, _options);
|
||||
|
||||
//init the element vars
|
||||
element = _element;
|
||||
elHeight = element.offsetHeight;
|
||||
elWidth = element.offsetWidth;
|
||||
|
||||
element.snow = this;
|
||||
|
||||
// if this is the body the offset is a little different
|
||||
if(element.tagName.toLowerCase() === 'body'){
|
||||
widthOffset = 25;
|
||||
}
|
||||
|
||||
// Bind the window resize event so we can get the innerHeight again
|
||||
window.addEventListener('resize', function(){
|
||||
elHeight = element.clientHeight;
|
||||
elWidth = element.offsetWidth;
|
||||
}, true);
|
||||
|
||||
// initialize the flakes
|
||||
for(i = 0; i < defaults.flakeCount; i+=1){
|
||||
flakes.push(new flake(element, random((defaults.minSize * 100), (defaults.maxSize * 100)) / 100, random(defaults.minSpeed, defaults.maxSpeed)));
|
||||
}
|
||||
// start the snow
|
||||
animateSnow();
|
||||
},
|
||||
clear : function(){
|
||||
var flakeChildren = null;
|
||||
|
||||
if(!element.getElementsByClassName){
|
||||
flakeChildren = element.querySelectorAll('.snowfall-flakes');
|
||||
}else{
|
||||
flakeChildren = element.getElementsByClassName('snowfall-flakes');
|
||||
}
|
||||
|
||||
var flakeChilLen = flakeChildren.length;
|
||||
while(flakeChilLen--){
|
||||
if(flakeChildren[flakeChilLen].parentNode === element){
|
||||
element.removeChild(flakeChildren[flakeChilLen]);
|
||||
}
|
||||
}
|
||||
|
||||
cancelAnimationFrame(snowTimeout);
|
||||
}
|
||||
}
|
||||
};
|
||||
return{
|
||||
snow : function(elements, options){
|
||||
if(typeof(options) == 'string'){
|
||||
if(elements.length > 0){
|
||||
for(var i = 0; i < elements.length; i++){
|
||||
if(elements[i].snow){
|
||||
elements[i].snow.clear();
|
||||
}
|
||||
}
|
||||
}else{
|
||||
elements.snow.clear();
|
||||
}
|
||||
}else{
|
||||
if(elements.length > 0){
|
||||
for(var i = 0; i < elements.length; i++){
|
||||
new jSnow().snow(elements[i], options);
|
||||
}
|
||||
}else{
|
||||
new jSnow().snow(elements, options);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})();
|
|
@ -0,0 +1,4 @@
|
|||
.picker,.picker__holder{width:100%;position:absolute}.picker{font-size:16px;text-align:left;line-height:1.2;color:#000;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{overflow-y:auto;-webkit-overflow-scrolling:touch;background:#fff;border:1px solid #aaa;border-top-width:0;border-bottom-width:0;border-radius:0 0 5px 5px;box-sizing:border-box;min-width:176px;max-width:466px;max-height:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;transform:translateY(-1em) perspective(600px) rotateX(10deg);transition:transform .15s ease-out,opacity .15s ease-out,max-height 0s .15s,border-width 0s .15s}/*!
|
||||
* Classic picker styling for pickadate.js
|
||||
* Demo: http://amsul.github.io/pickadate.js
|
||||
*/.picker__frame{padding:1px}.picker__wrap{margin:-1px}.picker--opened .picker__holder{max-height:25em;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1;border-top-width:1px;border-bottom-width:1px;transform:translateY(0) perspective(600px) rotateX(0);transition:transform .15s ease-out,opacity .15s ease-out,max-height 0s,border-width 0s;box-shadow:0 6px 18px 1px rgba(0,0,0,.12)}
|
|
@ -0,0 +1 @@
|
|||
.picker__footer,.picker__header,.picker__table{text-align:center}.picker__box{padding:0 1em}.picker__header{position:relative;margin-top:.75em}.picker__month,.picker__year{font-weight:500;display:inline-block;margin-left:.25em;margin-right:.25em}.picker__year{color:#999;font-size:.8em;font-style:italic}.picker__select--month,.picker__select--year{border:1px solid #b7b7b7;height:2em;padding:.5em;margin-left:.25em;margin-right:.25em}.picker__select--month{width:35%}.picker__select--year{width:22.5%}.picker__select--month:focus,.picker__select--year:focus{border-color:#0089ec}.picker__nav--next,.picker__nav--prev{position:absolute;padding:.5em 1.25em;width:1em;height:1em;box-sizing:content-box;top:-.25em}.picker__nav--prev{left:-1em;padding-right:1.25em}.picker__nav--next{right:-1em;padding-left:1.25em}@media (min-width:24.5em){.picker__select--month,.picker__select--year{margin-top:-.5em}.picker__nav--next,.picker__nav--prev{top:-.33em}.picker__nav--prev{padding-right:1.5em}.picker__nav--next{padding-left:1.5em}}.picker__nav--next:before,.picker__nav--prev:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:.75em solid #000;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:.75em solid #000}.picker__nav--next:hover,.picker__nav--prev:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__nav--disabled,.picker__nav--disabled:before,.picker__nav--disabled:before:hover,.picker__nav--disabled:hover{cursor:default;background:0 0;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:inherit;width:100%;margin-top:.75em;margin-bottom:.5em}@media (min-height:33.875em){.picker__table{margin-bottom:.75em}}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999;font-weight:500}@media (min-height:33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day{padding:.3125em 0;font-weight:200;border:1px solid transparent}.picker__day--today{position:relative}.picker__day--today:before{content:" ";position:absolute;top:2px;right:2px;width:0;height:0;border-top:.5em solid #0059bc;border-left:.5em solid transparent}.picker__day--disabled:before{border-top-color:#aaa}.picker__day--outfocus{color:#ddd}.picker--focused .picker__day--highlighted,.picker__day--highlighted:hover,.picker__day--infocus:hover,.picker__day--outfocus:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__day--highlighted{border-color:#0089ec}.picker--focused .picker__day--selected,.picker__day--selected,.picker__day--selected:hover{background:#0089ec;color:#fff}.picker--focused .picker__day--disabled,.picker__day--disabled,.picker__day--disabled:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbb}.picker__button--clear,.picker__button--close,.picker__button--today{border:1px solid #fff;background:#fff;font-size:.8em;padding:.66em 0;font-weight:700;width:33%;display:inline-block;vertical-align:bottom}.picker__button--clear:hover,.picker__button--close:hover,.picker__button--today:hover{cursor:pointer;color:#000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--clear:focus,.picker__button--close:focus,.picker__button--today:focus{background:#b1dcfb;border-color:#0089ec;outline:0}.picker__button--clear:before,.picker__button--close:before,.picker__button--today:before{position:relative;display:inline-block;height:0}.picker__button--clear:before,.picker__button--today:before{content:" ";margin-right:.45em}.picker__button--today:before{top:-.05em;width:0;border-top:.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-.25em;width:.66em;border-top:3px solid #e20}.picker__button--close:before{content:"\D7";top:-.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaa}
|
|
@ -0,0 +1 @@
|
|||
.picker__list{list-style:none;padding:.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #ddd;border-top:1px solid #ddd;margin-bottom:-1px;position:relative;background:#fff;padding:.75em 1.25em}.picker__list-item--highlighted,.picker__list-item:hover{border-color:#0089ec;z-index:10}.picker--focused .picker__list-item--highlighted,.picker__list-item--highlighted:hover,.picker__list-item:hover{color:#000;background:#b1dcfb;cursor:pointer}@media (min-height:46.75em){.picker__list-item{padding:.5em 1em}}.picker--focused .picker__list-item--selected,.picker__list-item--selected,.picker__list-item--selected:hover{background:#0089ec;color:#fff;z-index:10}.picker--focused .picker__list-item--disabled,.picker__list-item--disabled,.picker__list-item--disabled:hover{background:#f5f5f5;color:#ddd;cursor:default;border-color:#ddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:0 0;border:0;font-weight:500;font-size:.67em;text-align:center;text-transform:uppercase;color:#666}.picker--time .picker__button--clear:focus,.picker--time .picker__button--clear:hover{background:#e20;border-color:#e20;cursor:pointer;color:#fff;outline:0}.picker--time .picker__button--clear:before{top:-.25em;color:#666;font-size:1.25em;font-weight:700}.picker--time .picker__button--clear:focus:before,.picker--time .picker__button--clear:hover:before{color:#fff;border-color:#fff}.picker--time{min-width:256px;max-width:320px}.picker--time .picker__holder{background:#f2f2f2}@media (min-height:40.125em){.picker--time .picker__holder{font-size:.875em}}.picker--time .picker__box{padding:0;position:relative}
|
|
@ -0,0 +1,4 @@
|
|||
.picker{font-size:16px;text-align:left;line-height:1.2;color:#000;position:absolute;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;position:fixed;transition:background .15s ease-out,transform 0s .15s;-webkit-backface-visibility:hidden}/*!
|
||||
* Default mobile-first, responsive styling for pickadate.js
|
||||
* Demo: http://amsul.github.io/pickadate.js
|
||||
*/.picker__frame,.picker__holder{top:0;bottom:0;left:0;right:0;-ms-transform:translateY(100%);transform:translateY(100%)}.picker__frame{position:absolute;margin:0 auto;min-width:256px;max-width:666px;width:100%;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;transition:all .15s ease-out}.picker__wrap{display:table;width:100%;height:100%}@media (min-height:33.875em){.picker__frame{overflow:visible;top:auto;bottom:-100%;max-height:80%}.picker__wrap{display:block}}.picker__box{background:#fff;display:table-cell;vertical-align:middle}@media (min-height:26.5em){.picker__box{font-size:1.25em}}@media (min-height:33.875em){.picker__box{display:block;font-size:1.33em;border:1px solid #777;border-top-color:#898989;border-bottom-width:0;border-radius:5px 5px 0 0;box-shadow:0 12px 36px 16px rgba(0,0,0,.24)}.picker--opened .picker__frame{top:auto;bottom:0}}@media (min-height:40.125em){.picker__frame{margin-bottom:7.5%}.picker__box{font-size:1.5em;border-bottom-width:1px;border-radius:5px}}.picker--opened .picker__holder{-ms-transform:translateY(0);transform:translateY(0);zoom:1;background:rgba(0,0,0,.32);transition:background .15s ease-out}.picker--opened .picker__frame{-ms-transform:translateY(0);transform:translateY(0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1}
|
|
@ -0,0 +1 @@
|
|||
.picker__footer,.picker__header,.picker__table{text-align:center}.picker__box{padding:0 1em}.picker__header{position:relative;margin-top:.75em}.picker__month,.picker__year{font-weight:500;display:inline-block;margin-left:.25em;margin-right:.25em}.picker__year{color:#999;font-size:.8em;font-style:italic}.picker__select--month,.picker__select--year{border:1px solid #b7b7b7;height:2em;padding:.5em;margin-left:.25em;margin-right:.25em}.picker__select--month{width:35%}.picker__select--year{width:22.5%}.picker__select--month:focus,.picker__select--year:focus{border-color:#0089ec}.picker__nav--next,.picker__nav--prev{position:absolute;padding:.5em 1.25em;width:1em;height:1em;box-sizing:content-box;top:-.25em}.picker__nav--prev{left:-1em;padding-right:1.25em}.picker__nav--next{right:-1em;padding-left:1.25em}@media (min-width:24.5em){.picker__select--month,.picker__select--year{margin-top:-.5em}.picker__nav--next,.picker__nav--prev{top:-.33em}.picker__nav--prev{padding-right:1.5em}.picker__nav--next{padding-left:1.5em}}.picker__nav--next:before,.picker__nav--prev:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:.75em solid #000;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:.75em solid #000}.picker__nav--next:hover,.picker__nav--prev:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__nav--disabled,.picker__nav--disabled:before,.picker__nav--disabled:before:hover,.picker__nav--disabled:hover{cursor:default;background:0 0;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:inherit;width:100%;margin-top:.75em;margin-bottom:.5em}@media (min-height:33.875em){.picker__table{margin-bottom:.75em}}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999;font-weight:500}@media (min-height:33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day{padding:.3125em 0;font-weight:200;border:1px solid transparent}.picker__day--today{position:relative}.picker__day--today:before{content:" ";position:absolute;top:2px;right:2px;width:0;height:0;border-top:.5em solid #0059bc;border-left:.5em solid transparent}.picker__day--disabled:before{border-top-color:#aaa}.picker__day--outfocus{color:#ddd}.picker--focused .picker__day--highlighted,.picker__day--highlighted:hover,.picker__day--infocus:hover,.picker__day--outfocus:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__day--highlighted{border-color:#0089ec}.picker--focused .picker__day--selected,.picker__day--selected,.picker__day--selected:hover{background:#0089ec;color:#fff}.picker--focused .picker__day--disabled,.picker__day--disabled,.picker__day--disabled:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbb}.picker__button--clear,.picker__button--close,.picker__button--today{border:1px solid #fff;background:#fff;font-size:.8em;padding:.66em 0;font-weight:700;width:33%;display:inline-block;vertical-align:bottom}.picker__button--clear:hover,.picker__button--close:hover,.picker__button--today:hover{cursor:pointer;color:#000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--clear:focus,.picker__button--close:focus,.picker__button--today:focus{background:#b1dcfb;border-color:#0089ec;outline:0}.picker__button--clear:before,.picker__button--close:before,.picker__button--today:before{position:relative;display:inline-block;height:0}.picker__button--clear:before,.picker__button--today:before{content:" ";margin-right:.45em}.picker__button--today:before{top:-.05em;width:0;border-top:.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-.25em;width:.66em;border-top:3px solid #e20}.picker__button--close:before{content:"\D7";top:-.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaa}
|
|
@ -0,0 +1 @@
|
|||
.picker__list{list-style:none;padding:.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #ddd;border-top:1px solid #ddd;margin-bottom:-1px;position:relative;background:#fff;padding:.75em 1.25em}.picker__list-item--highlighted,.picker__list-item:hover{border-color:#0089ec;z-index:10}.picker--focused .picker__list-item--highlighted,.picker__list-item--highlighted:hover,.picker__list-item:hover{cursor:pointer;color:#000;background:#b1dcfb}@media (min-height:46.75em){.picker__list-item{padding:.5em 1em}}.picker--focused .picker__list-item--selected,.picker__list-item--selected,.picker__list-item--selected:hover{background:#0089ec;color:#fff;z-index:10}.picker--focused .picker__list-item--disabled,.picker__list-item--disabled,.picker__list-item--disabled:hover{background:#f5f5f5;color:#ddd;cursor:default;border-color:#ddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:0 0;border:0;font-weight:500;font-size:.67em;text-align:center;text-transform:uppercase;color:#666}.picker--time .picker__button--clear:focus,.picker--time .picker__button--clear:hover{background:#e20;border-color:#e20;cursor:pointer;color:#fff;outline:0}.picker--time .picker__button--clear:before{top:-.25em;color:#666;font-size:1.25em;font-weight:700}.picker--time .picker__button--clear:focus:before,.picker--time .picker__button--clear:hover:before{color:#fff;border-color:#fff}.picker--time .picker__frame{min-width:256px;max-width:320px}.picker--time .picker__box{font-size:1em;background:#f2f2f2;padding:0}@media (min-height:40.125em){.picker--time .picker__box{margin-bottom:5em}}
|
|
@ -0,0 +1,3 @@
|
|||
/*!
|
||||
* Styling for RTL (right-to-left) languages using pickadate.js
|
||||
*/.picker{direction:rtl}.picker__nav--next{right:auto;left:-1em}.picker__nav--prev{left:auto;right:-1em}.picker__nav--next:before{border-left:0;border-right:.75em solid #000}.picker__nav--prev:before{border-right:0;border-left:.75em solid #000}
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],monthsShort:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],weekdaysFull:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],weekdaysShort:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],today:"اليوم",clear:"مسح",format:"yyyy mmmm dd",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"مسح"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["януари","февруари","март","април","май","юни","юли","август","септември","октомври","ноември","декември"],monthsShort:["янр","фев","мар","апр","май","юни","юли","авг","сеп","окт","ное","дек"],weekdaysFull:["неделя","понеделник","вторник","сряда","четвъртък","петък","събота"],weekdaysShort:["нд","пн","вт","ср","чт","пт","сб"],today:"днес",clear:"изтривам",firstDay:1,format:"d mmmm yyyy г.",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"изтривам"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["januar","februar","mart","april","maj","juni","juli","august","septembar","oktobar","novembar","decembar"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],weekdaysFull:["nedjelja","ponedjeljak","utorak","srijeda","cetvrtak","petak","subota"],weekdaysShort:["ne","po","ut","sr","če","pe","su"],today:"danas",clear:"izbrisati",firstDay:1,format:"dd. mmmm yyyy.",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"izbrisati"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["Gener","Febrer","Març","Abril","Maig","juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Des"],weekdaysFull:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],weekdaysShort:["diu","dil","dim","dmc","dij","div","dis"],today:"avui",clear:"esborra",close:"tanca",firstDay:1,format:"dddd d !de mmmm !de yyyy",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"esborra"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthsShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],weekdaysFull:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],weekdaysShort:["ne","po","út","st","čt","pá","so"],today:"dnes",clear:"vymazat",firstDay:1,format:"d. mmmm yyyy",formatSubmit:"yyyy/mm/dd",close:"zavřít"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"vymazat"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],weekdaysFull:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],weekdaysShort:["søn","man","tir","ons","tor","fre","lør"],today:"i dag",clear:"slet",close:"luk",firstDay:1,format:"d. mmmm yyyy",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"slet"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthsShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],weekdaysFull:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],weekdaysShort:["So","Mo","Di","Mi","Do","Fr","Sa"],today:"Heute",clear:"Löschen",close:"Schließen",firstDay:1,format:"dddd, dd. mmmm yyyy",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"Löschen",format:"H:i"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthsShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],weekdaysFull:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],weekdaysShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],today:"σήμερα",clear:"Διαγραφή",firstDay:1,format:"d mmmm yyyy",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"Διαγραφή"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],monthsShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],weekdaysFull:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],weekdaysShort:["dom","lun","mar","mié","jue","vie","sáb"],today:"Hoy",clear:"Borrar",close:"Cerrar",firstDay:1,format:"dddd d !de mmmm !de yyyy",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"Borrar"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["jaanuar","veebruar","märts","aprill","mai","juuni","juuli","august","september","oktoober","november","detsember"],monthsShort:["jaan","veebr","märts","apr","mai","juuni","juuli","aug","sept","okt","nov","dets"],weekdaysFull:["pühapäev","esmaspäev","teisipäev","kolmapäev","neljapäev","reede","laupäev"],weekdaysShort:["püh","esm","tei","kol","nel","ree","lau"],today:"täna",clear:"kustuta",firstDay:1,format:"d. mmmm yyyy. a",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"kustuta"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],monthsShort:["urt","ots","mar","api","mai","eka","uzt","abu","ira","urr","aza","abe"],weekdaysFull:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],weekdaysShort:["ig.","al.","ar.","az.","og.","or.","lr."],today:"gaur",clear:"garbitu",firstDay:1,format:"dddd, yyyy(e)ko mmmmren da",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"garbitu"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthsShort:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],weekdaysFull:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],weekdaysShort:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],today:"امروز",clear:"پاک کردن",close:"بستن",format:"yyyy mmmm dd",formatSubmit:"yyyy/mm/dd",labelMonthNext:"ماه بعدی",labelMonthPrev:"ماه قبلی"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"پاک کردن"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],monthsShort:["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],weekdaysFull:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],weekdaysShort:["su","ma","ti","ke","to","pe","la"],today:"tänään",clear:"tyhjennä",firstDay:1,format:"d.m.yyyy",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"tyhjennä"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],monthsShort:["Jan","Fev","Mar","Avr","Mai","Juin","Juil","Aou","Sep","Oct","Nov","Dec"],weekdaysFull:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],weekdaysShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],today:"Aujourd'hui",clear:"Effacer",close:"Fermer",firstDay:1,format:"dd mmmm yyyy",formatSubmit:"yyyy/mm/dd",labelMonthNext:"Mois suivant",labelMonthPrev:"Mois précédent",labelMonthSelect:"Sélectionner un mois",labelYearSelect:"Sélectionner une année"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"Effacer",format:"H:i"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthsShort:["იან","თებ","მარტ","აპრ","მაი","ივნ","ივლ","აგვ","სექტ","ოქტ","ნოემ","დეკ"],weekdaysFull:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუშაბათი","პარასკევი","შაბათი"],weekdaysShort:["კვ","ორ","სამ","ოთხ","ხუთ","პარ","შაბ"],today:"დღეს",clear:"გასუფთავება",firstDay:1,format:"d mmmm yyyy",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"გასუფთავება"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthsShort:["xan","feb","mar","abr","mai","xun","xul","ago","sep","out","nov","dec"],weekdaysFull:["domingo","luns","martes","mércores","xoves","venres","sábado"],weekdaysShort:["dom","lun","mar","mér","xov","ven","sab"],today:"hoxe",clear:"borrar",firstDay:1,format:"dddd d !de mmmm !de yyyy",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"borrar"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthsShort:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],weekdaysFull:["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום ששי","יום שבת"],weekdaysShort:["א","ב","ג","ד","ה","ו","ש"],today:"היום",clear:"למחוק",format:"yyyy mmmmב d dddd",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"למחוק"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["जनवरी","फरवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthsShort:["जन","फर","मार्च","अप्रैल","मई","जून","जु","अग","सित","अक्टू","नव","दिस"],weekdaysFull:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],weekdaysShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],today:"आज की तारीख चयन करें",clear:"चुनी हुई तारीख को मिटाएँ",close:"विंडो बंद करे",firstDay:1,format:"dd/mm/yyyy",formatSubmit:"yyyy/mm/dd",labelMonthNext:"अगले माह का चयन करें",labelMonthPrev:"पिछले माह का चयन करें",labelMonthSelect:"किसि एक महीने का चयन करें",labelYearSelect:"किसि एक वर्ष का चयन करें"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"चुनी हुई तारीख को मिटाएँ"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["siječanj","veljača","ožujak","travanj","svibanj","lipanj","srpanj","kolovoz","rujan","listopad","studeni","prosinac"],monthsShort:["sij","velj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],weekdaysFull:["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],weekdaysShort:["ned","pon","uto","sri","čet","pet","sub"],today:"Danas",clear:"Izbriši",close:"Zatvori",firstDay:1,format:"d. mmmm yyyy.",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"Izbriši"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],monthsShort:["jan","febr","márc","ápr","máj","jún","júl","aug","szept","okt","nov","dec"],weekdaysFull:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],weekdaysShort:["V","H","K","Sze","CS","P","Szo"],today:"Ma",clear:"Törlés",close:"Bezárás",firstDay:1,format:"yyyy. mmmm dd.",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"Törlés"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des"],weekdaysFull:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],weekdaysShort:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],today:"hari ini",clear:"menghapus",firstDay:1,format:"d mmmm yyyy",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"menghapus"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["janúar","febrúar","mars","apríl","maí","júní","júlí","ágúst","september","október","nóvember","desember"],monthsShort:["jan","feb","mar","apr","maí","jún","júl","ágú","sep","okt","nóv","des"],weekdaysFull:["sunnudagur","mánudagur","þriðjudagur","miðvikudagur","fimmtudagur","föstudagur","laugardagur"],weekdaysShort:["sun","mán","þri","mið","fim","fös","lau"],today:"Í dag",clear:"Hreinsa",firstDay:1,format:"dd. mmmm yyyy",formatSubmit:"yyyy/mm/dd"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"Hreinsa"});
|
|
@ -0,0 +1 @@
|
|||
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],monthsShort:["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],weekdaysFull:["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],weekdaysShort:["dom","lun","mar","mer","gio","ven","sab"],today:"Oggi",clear:"Cancella",close:"Chiudi",firstDay:1,format:"dddd d mmmm yyyy",formatSubmit:"yyyy/mm/dd",labelMonthNext:"Mese successivo",labelMonthPrev:"Mese precedente",labelMonthSelect:"Seleziona un mese",labelYearSelect:"Seleziona un anno"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"Cancella",format:"HH:i",formatSubmit:"HH:i"});
|