pictures table
This commit is contained in:
1 parent
8eb110879d
commit
03edff8baa
14 files changed
+352
-151
No files matched your search
@@ -0,0 +1,14 @@
|
||||
CREATE TABLE `pictures` (
|
||||
`id_picture` int(10) UNSIGNED auto_increment,
|
||||
`id_project` int(10) UNSIGNED,
|
||||
`filename` VARCHAR(100) NOT NULL,
|
||||
`taken_on` DATETIME,
|
||||
`timestamp` DATETIME,
|
||||
`rotate` SMALLINT,
|
||||
`led` TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id_picture`),
|
||||
UNIQUE KEY `uni_file_name` (`filename`)
|
||||
);
|
||||
|
||||
ALTER TABLE pictures ADD INDEX(`id_project`);
|
||||
ALTER TABLE pictures ADD FOREIGN KEY (`id_project`) REFERENCES projects(`id_project`);
|
||||
+147
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
|
||||
class Picture extends PhpObject {
|
||||
|
||||
//DB Tables
|
||||
const PIC_TABLE = 'pictures';
|
||||
|
||||
//Picture folders
|
||||
const PIC_FOLDER = 'files/';
|
||||
const THUMB_FOLDER = self::PIC_FOLDER.'thumbs/';
|
||||
|
||||
/**
|
||||
* Database Handle
|
||||
* @var Db
|
||||
*/
|
||||
private $oDb;
|
||||
|
||||
/**
|
||||
* Picture Project
|
||||
* @var Project
|
||||
*/
|
||||
private $oProject;
|
||||
private $asPics;
|
||||
|
||||
public function __construct(Db &$oDb, &$oProject) {
|
||||
parent::__construct(__CLASS__, Settings::DEBUG);
|
||||
$this->oDb = &$oDb;
|
||||
$this->oProject = &$oProject;
|
||||
}
|
||||
|
||||
public function getPicsInfo() {
|
||||
if(empty($this->asPics)) {
|
||||
if($this->oProject->getProjectId()) {
|
||||
$asPics = $this->oDb->selectRows(array(
|
||||
'select' => array(Db::getId(self::PIC_TABLE), 'filename', 'taken_on', 'timestamp AS added_on', 'rotate'),
|
||||
'from' => self::PIC_TABLE,
|
||||
'constraint'=> array(Db::getId(Project::PROJ_TABLE) => $this->oProject->getProjectId())
|
||||
));
|
||||
|
||||
foreach($asPics as &$asPic) {
|
||||
$asPic['pic_path'] = self::getPicPath($asPic['filename']);
|
||||
$asPic['thumb_path'] = self::getPicThumbnail($asPic['filename']);
|
||||
}
|
||||
$this->asPics = $asPics;
|
||||
}
|
||||
}
|
||||
return $this->asPics;
|
||||
}
|
||||
|
||||
public function isProjectModeValid() {
|
||||
return ($this->oProject->getMode() == Project::MODE_BLOG);
|
||||
}
|
||||
|
||||
public function addPic($sPicName, $sMethod='upload') {
|
||||
$sError = '';
|
||||
if(!$this->isProjectModeValid() && $sMethod!='sync') $sError = 'Le projet (id='.$this->oProject->getProjectId().') n\'est pas en mode "blog"';
|
||||
elseif($this->oDb->pingValue(self::PIC_TABLE, array('filename'=>$sPicName))) $sError = 'l\'image existe déjà';
|
||||
else {
|
||||
//Add picture to DB
|
||||
$asPicInfo = self::getPicInfo($sPicName);
|
||||
$iPicId = $this->oDb->insertRow(self::PIC_TABLE, array(
|
||||
Db::getId(Project::PROJ_TABLE) => $this->oProject->getProjectId(),
|
||||
'filename' => $sPicName,
|
||||
'taken_on' => date(Db::TIMESTAMP_FORMAT, $asPicInfo['taken_ts']),
|
||||
'timestamp' => date(Db::TIMESTAMP_FORMAT, $asPicInfo['file_ts']),
|
||||
'rotate' => $asPicInfo['rotate']
|
||||
));
|
||||
|
||||
if(!$iPicId) $sError = 'l\'image n\'a pas pu être entrée en base';
|
||||
else {
|
||||
//Create thumbnail
|
||||
self::getPicThumbnail($sPicName);
|
||||
}
|
||||
}
|
||||
|
||||
if($sError!='') {
|
||||
$sError = 'Erreur lors de l\'ajout de "'.$sPicName.'" : '.$sError;
|
||||
$this->addError($sError);
|
||||
}
|
||||
|
||||
return $sError;
|
||||
}
|
||||
|
||||
/**
|
||||
* One-shot function to initialize DB with existing images
|
||||
*/
|
||||
public function syncFileFolder() {
|
||||
$asPicPaths = glob(self::getPicPath('*.{jpg,JPG,jpeg,JPEG,png,PNG}'), GLOB_BRACE);
|
||||
foreach($asPicPaths as $sPicPath)
|
||||
{
|
||||
$sPicName = pathinfo($sPicPath, PATHINFO_BASENAME);
|
||||
$this->addPic($sPicName, 'sync');
|
||||
}
|
||||
$this->setExtractMode(PhpObject::MODE_HTML);
|
||||
return $this->getCleanMessageStack();
|
||||
}
|
||||
|
||||
private static function getPicInfo($sPicName)
|
||||
{
|
||||
$sPicPath = self::getPicPath($sPicName);
|
||||
$iPicTimeStamp = $iPicTakenTimeStamp = $iPicFileTimeStamp = 0;
|
||||
$asExif = @exif_read_data($sPicPath, 0, true);
|
||||
if(!$asExif) $asExif['FILE']['FileDateTime'] = filemtime($sPicPath);
|
||||
|
||||
//Timestamps
|
||||
if(array_key_exists('EXIF', $asExif) && array_key_exists('DateTimeOriginal', $asExif['EXIF'])) $iPicTakenTimeStamp = strtotime($asExif['EXIF']['DateTimeOriginal']);
|
||||
if(array_key_exists('FILE', $asExif) && array_key_exists('FileDateTime', $asExif['FILE'])) $iPicFileTimeStamp = $asExif['FILE']['FileDateTime'];
|
||||
|
||||
//Merge timestamps
|
||||
$iPicTimeStamp = ($iPicTakenTimeStamp > 0)?$iPicTakenTimeStamp:$iPicFileTimeStamp;
|
||||
|
||||
//Orientation
|
||||
if(array_key_exists('IFD0', $asExif) && array_key_exists('Orientation', $asExif['IFD0'])) {
|
||||
switch($asExif['IFD0']['Orientation'])
|
||||
{
|
||||
case 1: $sRotate = '0'; break; //None
|
||||
case 3: $sRotate = '180'; break; //Flip over
|
||||
case 6: $sRotate = '90'; break; //Clockwise
|
||||
case 8: $sRotate = '-90'; break; //Trigo
|
||||
default: $sRotate = '0';
|
||||
}
|
||||
}
|
||||
else $sRotate = '0';
|
||||
|
||||
return array(
|
||||
'timestamp' => $iPicTimeStamp,
|
||||
'taken_ts' => $iPicTakenTimeStamp,
|
||||
'file_ts' => $iPicFileTimeStamp,
|
||||
'rotate' => $sRotate
|
||||
);
|
||||
}
|
||||
|
||||
private static function getPicThumbnail($sPicName)
|
||||
{
|
||||
$sPicPath = self::getPicPath($sPicName);
|
||||
$sThumbPath = self::getPicPath($sPicName, 'thumbnail');
|
||||
|
||||
if(!file_exists($sThumbPath)) $asThumbInfo = ToolBox::createThumbnail($sPicPath, 400, 0, $sThumbPath/*, false, array('jpg', 'jpeg', 'gif', 'png'), true*/);
|
||||
else $asThumbInfo = array('error'=>'', 'out'=>$sThumbPath);
|
||||
|
||||
return ($asThumbInfo['error']=='')?$asThumbInfo['out']:$sPicPath;
|
||||
}
|
||||
|
||||
private static function getPicPath($sPicName, $sFileType='picture') {
|
||||
return ($sFileType=='thumbnail'?self::THUMB_FOLDER:self::PIC_FOLDER).$sPicName;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -29,7 +29,7 @@ class Project extends PhpObject {
|
||||
|
||||
public function __construct(Db &$oDb) {
|
||||
parent::__construct(__CLASS__, Settings::DEBUG);
|
||||
$this->oDb = $oDb;
|
||||
$this->oDb = &$oDb;
|
||||
}
|
||||
|
||||
public function setProjectId($iProjectId=0) {
|
||||
|
||||
+50
-95
@@ -13,10 +13,6 @@ class Spot extends Main
|
||||
const SPOT_TABLE = 'spots';
|
||||
const POST_TABLE = 'posts';
|
||||
|
||||
//Picture folders
|
||||
const PIC_FOLDER = 'files/';
|
||||
const THUMB_FOLDER = self::PIC_FOLDER.'thumbs/';
|
||||
|
||||
const FORMAT_TIME = 'd/m/Y à H:i';
|
||||
|
||||
const FEED_CHUNK_SIZE = 15;
|
||||
@@ -27,15 +23,23 @@ class Spot extends Main
|
||||
*/
|
||||
private $oProject;
|
||||
|
||||
/**
|
||||
* Picture Class
|
||||
* @var Picture
|
||||
*/
|
||||
private $oPicture;
|
||||
|
||||
public function __construct($oClassManagement, $sProcessPage)
|
||||
{
|
||||
$asClasses = array(
|
||||
array('name'=>'project', 'project'=>true),
|
||||
array('name'=>'picture', 'project'=>true),
|
||||
array('name'=>'cacher', 'project'=>true)
|
||||
);
|
||||
parent::__construct($oClassManagement, $sProcessPage, $asClasses);
|
||||
|
||||
$this->oProject = new Project($this->oDb);
|
||||
$this->oPicture = new Picture($this->oDb, $this->oProject);
|
||||
}
|
||||
|
||||
protected function install()
|
||||
@@ -54,7 +58,8 @@ class Spot extends Main
|
||||
self::FEED_TABLE => array('ref_feed_id', Db::getId(self::SPOT_TABLE), Db::getId(Project::PROJ_TABLE), 'name', 'description', 'status', 'last_update'),
|
||||
self::SPOT_TABLE => array('ref_spot_id', 'name', 'model'),
|
||||
Project::PROJ_TABLE => array('name', 'codename', 'active_from', 'active_to', 'geofile', 'timezone'),
|
||||
self::POST_TABLE => array(Db::getId(Project::PROJ_TABLE), 'name', 'content', 'timestamp')
|
||||
self::POST_TABLE => array(Db::getId(Project::PROJ_TABLE), 'name', 'content', 'timestamp'),
|
||||
Picture::PIC_TABLE => array(Db::getId(Project::PROJ_TABLE), 'filename', 'taken_on', 'timestamp', 'rotate')
|
||||
),
|
||||
'types' => array
|
||||
(
|
||||
@@ -77,7 +82,10 @@ class Spot extends Main
|
||||
'active_to' => "DATETIME",
|
||||
'geofile' => "VARCHAR(50)",
|
||||
'timezone' => "VARCHAR(100)",
|
||||
'last_update' => "DATETIME"
|
||||
'last_update' => "DATETIME",
|
||||
'filename' => "VARCHAR(100) NOT NULL",
|
||||
'taken_on' => "DATETIME",
|
||||
'rotate' => "SMALLINT"
|
||||
),
|
||||
'constraints' => array
|
||||
(
|
||||
@@ -88,6 +96,7 @@ class Spot extends Main
|
||||
self::FEED_TABLE => "INDEX(`ref_feed_id`)",
|
||||
self::SPOT_TABLE => "INDEX(`ref_spot_id`)",
|
||||
Project::PROJ_TABLE => "UNIQUE KEY `uni_proj_name` (`codename`)",
|
||||
Picture::PIC_TABLE => "UNIQUE KEY `uni_file_name` (`filename`)"
|
||||
),
|
||||
'cascading_delete' => array
|
||||
(
|
||||
@@ -180,7 +189,7 @@ class Spot extends Main
|
||||
}
|
||||
}
|
||||
|
||||
public function getMessages()
|
||||
public function getMarkers()
|
||||
{
|
||||
/* Adding another point to test
|
||||
$test = $this->oDb->selectRow(self::MSG_TABLE, 1);
|
||||
@@ -196,7 +205,7 @@ class Spot extends Main
|
||||
|
||||
//Add pictures
|
||||
if($bSuccess) {
|
||||
$asPics = $this->getPictures();
|
||||
$asPics = $this->getPictures('taken_on');
|
||||
|
||||
//Sort messages and pictures chronologically
|
||||
uasort($asPics, function($a, $b){return $a['unix_timestamp'] > $b['unix_timestamp'];});
|
||||
@@ -255,13 +264,13 @@ class Spot extends Main
|
||||
$asMessages = $this->oDb->selectRows($asInfo);
|
||||
foreach($asMessages as $asMessage)
|
||||
{
|
||||
$asMessage['unix_timestamp'] = (int) $asMessage['unix_timestamp'];
|
||||
$asMessage['latitude'] = floatval($asMessage['latitude']);
|
||||
$asMessage['longitude'] = floatval($asMessage['longitude']);
|
||||
$asMessage['lat_dms'] = self::DecToDMS($asMessage['latitude'], 'lat');
|
||||
$asMessage['lon_dms'] = self::DecToDMS($asMessage['longitude'], 'lon');
|
||||
$asMessage['relative_time'] = Toolbox::getDateTimeDesc($asMessage['unix_timestamp'], 'fr');
|
||||
$asMessage['formatted_time'] = date(self::FORMAT_TIME, $asMessage['unix_timestamp']);
|
||||
|
||||
$this->addTimeStamp($asMessage, $asMessage['unix_timestamp']);
|
||||
|
||||
$asAllFeedMessages[] = $asMessage;
|
||||
}
|
||||
}
|
||||
@@ -269,34 +278,20 @@ class Spot extends Main
|
||||
return $asAllFeedMessages;
|
||||
}
|
||||
|
||||
private function getPictures()
|
||||
private function getPictures($sTimeRefField)
|
||||
{
|
||||
$asPicPaths = glob(self::PIC_FOLDER.'*.{jpg,JPG,jpeg,JPEG,png,PNG}', GLOB_BRACE);
|
||||
|
||||
$asPics = array();
|
||||
foreach($asPicPaths as $sPicPath)
|
||||
{
|
||||
//Finding picture timestamp
|
||||
$asPicInfo = self::getPicInfo($sPicPath);
|
||||
$iPicTimeStamp = $asPicInfo['timestamp'];
|
||||
|
||||
//Get/Create thumbnail
|
||||
$sThumbnailPath = self::getPicThumbnail($sPicPath);
|
||||
|
||||
//Filter on valid time interval
|
||||
if($iPicTimeStamp >= strtotime($this->oProject->getActivePeriod('from')) && $iPicTimeStamp <= strtotime($this->oProject->getActivePeriod('to'))) {
|
||||
|
||||
$asPics[] = array(
|
||||
'path' => $sPicPath,
|
||||
'thumb_path' => $sThumbnailPath,
|
||||
'rotate' => $asPicInfo['rotate'],
|
||||
'unix_timestamp'=> $iPicTimeStamp,
|
||||
'formatted_time'=> date(self::FORMAT_TIME, $iPicTimeStamp),
|
||||
'relative_time' => Toolbox::getDateTimeDesc($iPicTimeStamp, 'fr')
|
||||
);
|
||||
$asPics = $this->oPicture->getPicsInfo();
|
||||
$asValidPics = array();
|
||||
foreach($asPics as &$asPic) {
|
||||
$sTimeRef = $asPic[$sTimeRefField];
|
||||
if($sTimeRef >= $this->oProject->getActivePeriod('from') && $sTimeRef <= $this->oProject->getActivePeriod('to')) {
|
||||
$asPic['taken_on_formatted'] = date(self::FORMAT_TIME, strtotime($asPic['taken_on']));
|
||||
$this->addTimeStamp($asPic, strtotime($sTimeRef));
|
||||
$asValidPics[] = $asPic;
|
||||
}
|
||||
}
|
||||
return $asPics;
|
||||
|
||||
return $asValidPics;
|
||||
}
|
||||
|
||||
private function getPosts()
|
||||
@@ -314,10 +309,9 @@ class Spot extends Main
|
||||
|
||||
foreach($asPosts as &$asPost) {
|
||||
$iUnixTimeStamp = strtotime($asPost['timestamp']);
|
||||
$asPost['unix_timestamp'] = $iUnixTimeStamp;
|
||||
$asPost['relative_time'] = Toolbox::getDateTimeDesc($iUnixTimeStamp, 'fr');
|
||||
$asPost['formatted_time'] = date(self::FORMAT_TIME, $iUnixTimeStamp);
|
||||
$asPost['formatted_name'] = Toolbox::mb_ucwords($asPost['name']);
|
||||
|
||||
$this->addTimeStamp($asPost, $iUnixTimeStamp);
|
||||
}
|
||||
|
||||
return $asPosts;
|
||||
@@ -328,23 +322,28 @@ class Spot extends Main
|
||||
return ($iTimeStamp * -1).'.'.$sPriority.$iDbId;
|
||||
}
|
||||
|
||||
private function addTimeStamp(&$asData, $iTime) {
|
||||
$asData['unix_timestamp'] = (int) $iTime;
|
||||
$asData['relative_time'] = Toolbox::getDateTimeDesc($iTime, 'fr');
|
||||
$asData['formatted_time'] = date(self::FORMAT_TIME, $iTime);
|
||||
}
|
||||
|
||||
public function getNewsFeed($iChunk=0)
|
||||
{
|
||||
$asFeed = array();
|
||||
|
||||
//Messages
|
||||
$asMessages = $this->getSpotMessages();
|
||||
foreach($asMessages as $asMessage)
|
||||
foreach($asMessages as $iIndex=>$asMessage)
|
||||
{
|
||||
$iMsgId = $asMessage[Db::getId(self::MSG_TABLE)];
|
||||
$iId = self::getJsonId($asMessage['unix_timestamp'], '0', $iMsgId);
|
||||
$iId = self::getJsonId($asMessage['unix_timestamp'], '0', $asMessage[Db::getId(self::MSG_TABLE)]);
|
||||
$asFeed[$iId] = $asMessage;
|
||||
$asFeed[$iId]['type'] = 'message';
|
||||
$asFeed[$iId]['displayed_id'] = $iMsgId;
|
||||
$asFeed[$iId]['displayed_id'] = 'N°'.$iIndex;
|
||||
}
|
||||
|
||||
//Pictures
|
||||
$asPics = $this->getPictures();
|
||||
$asPics = $this->getPictures('added_on');
|
||||
foreach($asPics as $iKey=>$asPic)
|
||||
{
|
||||
$iId = self::getJsonId($asPic['unix_timestamp'], '1', $iKey);
|
||||
@@ -370,6 +369,10 @@ class Spot extends Main
|
||||
return self::getJsonResult(true, '', $asFeed);
|
||||
}
|
||||
|
||||
public function syncPics() {
|
||||
return $this->oPicture->syncFileFolder();
|
||||
}
|
||||
|
||||
public function addPost($sName, $sPost)
|
||||
{
|
||||
$asData = array(
|
||||
@@ -385,9 +388,9 @@ class Spot extends Main
|
||||
public function upload()
|
||||
{
|
||||
$this->oClassManagement->incClass('uploader', true);
|
||||
$oUploader = new Uploader(array('image_versions'=>array(), 'accept_file_types'=>'/\.(gif|jpe?g|png)$/i'));
|
||||
$oUploader->init();
|
||||
return $oUploader->getBody();
|
||||
$oUploader = new Uploader($this->oPicture);
|
||||
|
||||
return self::getJsonResult(true, '');
|
||||
}
|
||||
|
||||
public function getTile($sMapId, $iX, $iY, $iZ)
|
||||
@@ -432,54 +435,6 @@ class Spot extends Main
|
||||
}
|
||||
}
|
||||
|
||||
public static function getPicInfo($sPicPath)
|
||||
{
|
||||
$iPicTimeStamp = $iPicTakenTimeStamp = $iPicFileTimeStamp = 0;
|
||||
$asExif = @exif_read_data($sPicPath, 0, true);
|
||||
if(!$asExif) $asExif['FILE']['FileDateTime'] = filemtime($sPicPath);
|
||||
|
||||
//Timestamps
|
||||
if(array_key_exists('EXIF', $asExif) && array_key_exists('DateTimeOriginal', $asExif['EXIF'])) $iPicTakenTimeStamp = strtotime($asExif['EXIF']['DateTimeOriginal']);
|
||||
if(array_key_exists('FILE', $asExif) && array_key_exists('FileDateTime', $asExif['FILE'])) $iPicFileTimeStamp = $asExif['FILE']['FileDateTime'];
|
||||
|
||||
//Merge timestamps
|
||||
$iPicTimeStamp = ($iPicTakenTimeStamp > 0)?$iPicTakenTimeStamp:$iPicFileTimeStamp;
|
||||
|
||||
//Time Zone
|
||||
//if($iPicTimeStamp >= self::HONEYMOON_DATE_BEG && $iPicTimeStamp <= self::HONEYMOON_DATE_END) $iPicTimeStamp -= 60*60*(12+1); //timezone + daylight saving
|
||||
|
||||
//Orientation
|
||||
if(array_key_exists('IFD0', $asExif) && array_key_exists('Orientation', $asExif['IFD0'])) {
|
||||
switch($asExif['IFD0']['Orientation'])
|
||||
{
|
||||
case 1: $sRotate = '0'; break; //None
|
||||
case 3: $sRotate = '180'; break; //Flip over
|
||||
case 6: $sRotate = '90'; break; //Clockwise
|
||||
case 8: $sRotate = '-90'; break; //Trigo
|
||||
default: $sRotate = $asExif['IFD0']['Orientation'];
|
||||
}
|
||||
}
|
||||
else $sRotate = '0';
|
||||
|
||||
return array(
|
||||
'timestamp' => $iPicTimeStamp,
|
||||
'taken_ts' => $iPicTakenTimeStamp,
|
||||
'file_ts' => $iPicFileTimeStamp,
|
||||
'rotate' => $sRotate
|
||||
);
|
||||
}
|
||||
|
||||
public static function getPicThumbnail($sPicPath)
|
||||
{
|
||||
$sPicName = pathinfo($sPicPath, PATHINFO_BASENAME);
|
||||
$sThumbPath = self::THUMB_FOLDER.$sPicName;
|
||||
|
||||
if(!file_exists($sThumbPath)) $asThumbInfo = ToolBox::createThumbnail($sPicPath, 400, 0, $sThumbPath/*, false, array('jpg', 'jpeg', 'gif', 'png'), true*/);
|
||||
else $asThumbInfo = array('error'=>'', 'out'=>$sThumbPath);
|
||||
|
||||
return ($asThumbInfo['error']=='')?$asThumbInfo['out']:$sPicPath;
|
||||
}
|
||||
|
||||
public static function DecToDMS($dValue, $sType='lat') {
|
||||
if($sType=='lat') $sDirection = ($dValue >= 0)?'N':'S';
|
||||
else $sDirection = ($dValue >= 0)?'E':'W';
|
||||
|
||||
+93
-33
@@ -2,27 +2,41 @@
|
||||
|
||||
class Uploader extends UploadHandler
|
||||
{
|
||||
private $sBody;
|
||||
/**
|
||||
* Pictures Management
|
||||
* @var Picture
|
||||
*/
|
||||
private $oPicture;
|
||||
|
||||
function __construct($asOptions = null, $bInitialize = false, $asErrorMessages = null)
|
||||
function __construct(&$oPicture)
|
||||
{
|
||||
parent::__construct($asOptions, $bInitialize, $asErrorMessages);
|
||||
$this->sBody = '';
|
||||
$this->error_messages['wrong_project_mode'] = 'Le projet n\'est pas en mode "blog".';
|
||||
$this->oPicture = &$oPicture;
|
||||
parent::__construct(array('image_versions'=>array(), 'accept_file_types'=>'/\.(gif|jpe?g|png)$/i'));
|
||||
}
|
||||
|
||||
public function init()
|
||||
{
|
||||
$this->initialize();
|
||||
protected function validate($uploaded_file, $file, $error, $index) {
|
||||
$bResult = parent::validate($uploaded_file, $file, $error, $index);
|
||||
|
||||
//Check project mode
|
||||
if(!$this->oPicture->isProjectModeValid()) {
|
||||
$file->error = $this->get_error_message('wrong_project_mode');
|
||||
$bResult = false;
|
||||
}
|
||||
|
||||
protected function body($sText)
|
||||
{
|
||||
$this->sBody .= $sText;
|
||||
return $bResult;
|
||||
}
|
||||
|
||||
public function getBody()
|
||||
{
|
||||
return $this->sBody;
|
||||
protected function handle_file_upload($uploaded_file, $name, $size, $type, $error, $index = null, $content_range = null) {
|
||||
$file = parent::handle_file_upload($uploaded_file, $name, $size, $type, $error, $index, $content_range);
|
||||
if(empty($file->error)) {
|
||||
$sError = $this->oPicture->addPic($file->name);
|
||||
if($sError!='') {
|
||||
$file->error = $this->get_error_message($sError);
|
||||
}
|
||||
}
|
||||
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,6 +79,10 @@ class UploadHandler
|
||||
'image_resize' => 'Failed to resize image'
|
||||
);
|
||||
|
||||
const IMAGETYPE_GIF = 1;
|
||||
const IMAGETYPE_JPEG = 2;
|
||||
const IMAGETYPE_PNG = 3;
|
||||
|
||||
protected $image_objects = array();
|
||||
|
||||
public function __construct($options = null, $initialize = true, $error_messages = null) {
|
||||
@@ -116,17 +134,32 @@ class UploadHandler
|
||||
'readfile_chunk_size' => 10 * 1024 * 1024, // 10 MiB
|
||||
// Defines which files can be displayed inline when downloaded:
|
||||
'inline_file_types' => '/\.(gif|jpe?g|png)$/i',
|
||||
// Defines which files (based on their names) are accepted for upload:
|
||||
'accept_file_types' => '/.+$/i',
|
||||
// Defines which files (based on their names) are accepted for upload.
|
||||
// By default, only allows file uploads with image file extensions.
|
||||
// Only change this setting after making sure that any allowed file
|
||||
// types cannot be executed by the webserver in the files directory,
|
||||
// e.g. PHP scripts, nor executed by the browser when downloaded,
|
||||
// e.g. HTML files with embedded JavaScript code.
|
||||
// Please also read the SECURITY.md document in this repository.
|
||||
'accept_file_types' => '/\.(gif|jpe?g|png)$/i',
|
||||
// Replaces dots in filenames with the given string.
|
||||
// Can be disabled by setting it to false or an empty string.
|
||||
// Note that this is a security feature for servers that support
|
||||
// multiple file extensions, e.g. the Apache AddHandler Directive:
|
||||
// https://httpd.apache.org/docs/current/mod/mod_mime.html#addhandler
|
||||
// Before disabling it, make sure that files uploaded with multiple
|
||||
// extensions cannot be executed by the webserver, e.g.
|
||||
// "example.php.png" with embedded PHP code, nor executed by the
|
||||
// browser when downloaded, e.g. "example.html.gif" with embedded
|
||||
// JavaScript code.
|
||||
'replace_dots_in_filenames' => '-',
|
||||
// The php.ini settings upload_max_filesize and post_max_size
|
||||
// take precedence over the following max_file_size setting:
|
||||
'max_file_size' => null,
|
||||
'min_file_size' => 1,
|
||||
// The maximum number of files for the upload directory:
|
||||
'max_number_of_files' => null,
|
||||
// Defines which files are handled as image files:
|
||||
'image_file_types' => '/\.(gif|jpe?g|png)$/i',
|
||||
// Use exif_imagetype on all files to correct file extensions:
|
||||
// Reads first file bytes to identify and correct file extensions:
|
||||
'correct_image_extensions' => false,
|
||||
// Image resolution restrictions:
|
||||
'max_width' => null,
|
||||
@@ -443,9 +476,8 @@ class UploadHandler
|
||||
$min_width = @$this->options['min_width'];
|
||||
$min_height = @$this->options['min_height'];
|
||||
if (($max_width || $max_height || $min_width || $min_height)
|
||||
&& preg_match($this->options['image_file_types'], $file->name)) {
|
||||
&& $this->is_valid_image_file($uploaded_file)) {
|
||||
list($img_width, $img_height) = $this->get_image_size($uploaded_file);
|
||||
|
||||
// If we are auto rotating the image by default, do the checks on
|
||||
// the correct orientation
|
||||
if (
|
||||
@@ -459,7 +491,6 @@ class UploadHandler
|
||||
$img_height = $tmp;
|
||||
unset($tmp);
|
||||
}
|
||||
|
||||
}
|
||||
if (!empty($img_width)) {
|
||||
if ($max_width && $img_width > $max_width) {
|
||||
@@ -521,16 +552,15 @@ class UploadHandler
|
||||
preg_match('/^image\/(gif|jpe?g|png)/', $type, $matches)) {
|
||||
$name .= '.'.$matches[1];
|
||||
}
|
||||
if ($this->options['correct_image_extensions'] &&
|
||||
function_exists('exif_imagetype')) {
|
||||
switch (@exif_imagetype($file_path)){
|
||||
case IMAGETYPE_JPEG:
|
||||
if ($this->options['correct_image_extensions']) {
|
||||
switch ($this->imagetype($file_path)) {
|
||||
case self::IMAGETYPE_JPEG:
|
||||
$extensions = array('jpg', 'jpeg');
|
||||
break;
|
||||
case IMAGETYPE_PNG:
|
||||
case self::IMAGETYPE_PNG:
|
||||
$extensions = array('png');
|
||||
break;
|
||||
case IMAGETYPE_GIF:
|
||||
case self::IMAGETYPE_GIF:
|
||||
$extensions = array('gif');
|
||||
break;
|
||||
}
|
||||
@@ -554,6 +584,16 @@ class UploadHandler
|
||||
// into different directories or replacing hidden system files.
|
||||
// Also remove control characters and spaces (\x00..\x20) around the filename:
|
||||
$name = trim($this->basename(stripslashes($name)), ".\x00..\x20");
|
||||
// Replace dots in filenames to avoid security issues with servers
|
||||
// that interpret multiple file extensions, e.g. "example.php.png":
|
||||
$replacement = $this->options['replace_dots_in_filenames'];
|
||||
if (!empty($replacement)) {
|
||||
$parts = explode('.', $name);
|
||||
if (count($parts) > 2) {
|
||||
$ext = array_pop($parts);
|
||||
$name = implode($replacement, $parts).'.'.$ext;
|
||||
}
|
||||
}
|
||||
// Use a timestamp for empty filenames:
|
||||
if (!$name) {
|
||||
$name = str_replace('.', '-', microtime(true));
|
||||
@@ -1048,6 +1088,7 @@ class UploadHandler
|
||||
}
|
||||
|
||||
protected function create_scaled_image($file_name, $version, $options) {
|
||||
try {
|
||||
if ($this->options['image_library'] === 2) {
|
||||
return $this->imagemagick_create_scaled_image($file_name, $version, $options);
|
||||
}
|
||||
@@ -1055,6 +1096,10 @@ class UploadHandler
|
||||
return $this->imagick_create_scaled_image($file_name, $version, $options);
|
||||
}
|
||||
return $this->gd_create_scaled_image($file_name, $version, $options);
|
||||
} catch (\Exception $e) {
|
||||
error_log($e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
protected function destroy_image_object($file_path) {
|
||||
@@ -1063,15 +1108,30 @@ class UploadHandler
|
||||
}
|
||||
}
|
||||
|
||||
protected function is_valid_image_file($file_path) {
|
||||
if (!preg_match($this->options['image_file_types'], $file_path)) {
|
||||
protected function imagetype($file_path) {
|
||||
$fp = fopen($file_path, 'r');
|
||||
$data = fread($fp, 4);
|
||||
fclose($fp);
|
||||
// GIF: 47 49 46 38
|
||||
if ($data === 'GIF8') {
|
||||
return self::IMAGETYPE_GIF;
|
||||
}
|
||||
// JPG: FF D8 FF
|
||||
if (bin2hex(substr($data, 0, 3)) === 'ffd8ff') {
|
||||
return self::IMAGETYPE_JPEG;
|
||||
}
|
||||
// PNG: 89 50 4E 47
|
||||
if (bin2hex(@$data[0]).substr($data, 1, 4) === '89PNG') {
|
||||
return self::IMAGETYPE_PNG;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (function_exists('exif_imagetype')) {
|
||||
return @exif_imagetype($file_path);
|
||||
|
||||
protected function is_valid_image_file($file_path) {
|
||||
if (!preg_match('/\.(gif|jpe?g|png)$/i', $file_path)) {
|
||||
return false;
|
||||
}
|
||||
$image_info = $this->get_image_size($file_path);
|
||||
return $image_info && $image_info[0] && $image_info[1];
|
||||
return !!$this->imagetype($file_path);
|
||||
}
|
||||
|
||||
protected function handle_image_file($file_path, $file) {
|
||||
|
||||
@@ -36,8 +36,8 @@ if($sAction!='')
|
||||
{
|
||||
switch($sAction)
|
||||
{
|
||||
case 'messages':
|
||||
$sResult = $oSpot->getMessages();
|
||||
case 'markers':
|
||||
$sResult = $oSpot->getMarkers();
|
||||
break;
|
||||
case 'feed':
|
||||
$sResult = $oSpot->getNewsFeed($iChunk);
|
||||
@@ -54,6 +54,9 @@ if($sAction!='')
|
||||
/*case 'sql':
|
||||
$sResult = $oSpot->getDbBuildScript();
|
||||
break;*/
|
||||
case 'sync_pics':
|
||||
$sResult = $oSpot->syncPics();
|
||||
break;
|
||||
default:
|
||||
$sResult = Spot::getJsonResult(false, Spot::NOT_FOUND);
|
||||
}
|
||||
|
||||
+9
-6
@@ -69,14 +69,15 @@ function initProject(sProjectCodeName){
|
||||
self.tmp('first_exec', false);
|
||||
self.vars('project', self.vars(['projects', sProjectCodeName]));
|
||||
|
||||
//Spot Messages
|
||||
$.when(
|
||||
//Markers: Spot Messages & Pictures
|
||||
self.get(
|
||||
'messages',
|
||||
'markers',
|
||||
function(){},
|
||||
{project_id: self.vars(['project', 'id'])},
|
||||
function(e){console.log(e);}
|
||||
),
|
||||
//Project Geojson: Hike track
|
||||
$.ajax({
|
||||
dataType: 'json',
|
||||
url: self.vars(['project', 'geofile']),
|
||||
@@ -101,6 +102,8 @@ function initPosts() {
|
||||
};
|
||||
getPost(asPoster).appendTo($Poster.show());
|
||||
|
||||
autosize($('#post'));
|
||||
|
||||
$('#submit').click(function(){
|
||||
if($Poster.checkForm())
|
||||
{
|
||||
@@ -167,7 +170,7 @@ function initSpotMessages(aoMessages, aoTracks) {
|
||||
}).addTo(oMap);
|
||||
|
||||
//Centering map
|
||||
if(self.vars(['project', 'mode'])==self.consts.modes.blog)
|
||||
if(self.vars(['project', 'mode'])==self.consts.modes.blog && aoMessages.length > 0)
|
||||
{
|
||||
//Zoom on last message
|
||||
var oLastMsg = aoMessages[aoMessages.length-1];
|
||||
@@ -233,7 +236,7 @@ function initSpotMessages(aoMessages, aoTracks) {
|
||||
if(oMsg.pics) {
|
||||
var $Pics = $('<div>', {'class':'pics'});
|
||||
$.each(oMsg.pics, function(iKey, asPic){
|
||||
$Pics.append($('<a>', {href: asPic.path, 'data-lightbox': self.consts.title, 'data-title': asPic.formatted_time})
|
||||
$Pics.append($('<a>', {href: asPic.pic_path, 'data-lightbox': self.consts.title, 'data-title': asPic.formatted_time})
|
||||
.append($('<img>', {'src': asPic.thumb_path})));
|
||||
});
|
||||
$Tooltip
|
||||
@@ -385,7 +388,7 @@ function getPost(asPost) {
|
||||
break;
|
||||
case 'picture':
|
||||
var $Image = $('<img>', {'src': asPost.thumb_path/*, 'style':'transform:rotate('+asPost.rotate+'deg);'*/});
|
||||
$Body = $('<a>', {href: asPost.path, 'data-lightbox': self.consts.title, 'data-title': sAbsTime}).append($Image);
|
||||
$Body = $('<a>', {href: asPost.pic_path, 'data-lightbox': self.consts.title, 'data-title': 'Photo ajouté le '+sAbsTime+' (prise le '+asPost.taken_on_formatted+')'}).append($Image);
|
||||
break;
|
||||
case 'post':
|
||||
$Body = $('<div>')
|
||||
@@ -394,7 +397,7 @@ function getPost(asPost) {
|
||||
break;
|
||||
case 'poster':
|
||||
$Body = $('<p>', {'class':'message'})
|
||||
.append($('<input>', {type:'text', id:'post', name:'post', placeholder:'Message'}))
|
||||
.append($('<textarea>', {id:'post', name:'post', placeholder:'Message', 'class':'autoExpand', rows:'1'}))
|
||||
.append($('<input>', {type:'text', id:'name', name:'name', placeholder:'Nom'}))
|
||||
.append($('<button>', {type:'button', id:'submit', name:'submit'}).addIcon('fa-send'));
|
||||
break;
|
||||
|
||||
+7
-3
@@ -8,15 +8,17 @@
|
||||
<script type="text/javascript">
|
||||
oSpot.pageInit = function(asHash)
|
||||
{
|
||||
var asProject = self.vars(['projects', self.vars('default_project_codename')]);
|
||||
if(asProject.mode == self.consts.modes.blog) {
|
||||
$('#fileupload')
|
||||
.attr('data-url', self.getActionLink('upload'))
|
||||
.fileupload({
|
||||
dataType: 'json',
|
||||
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
|
||||
done: function (e, data) {
|
||||
done: function (e, asResult) {
|
||||
var $Status = $('#status');
|
||||
$.each(data.result.files, function(iKey, oFile) {
|
||||
var sMsg = ('error' in oFile)?oFile.error:(oFile.name+" uploaded succesfully");
|
||||
$.each(asResult.files, function(iKey, oFile) {
|
||||
var sMsg = ('error' in oFile)?oFile.error:(oFile.name+" uploaded successfully");
|
||||
$Status.append($('<p>').text(sMsg));
|
||||
});
|
||||
},
|
||||
@@ -28,5 +30,7 @@ oSpot.pageInit = function(asHash)
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
else $('#messages').empty().append('Le projet "'+asProject.name+'" n\'est pas en mode blog. Aucun upload possible.');
|
||||
};
|
||||
</script>
|
||||
@@ -4,8 +4,8 @@
|
||||
/* jQuery Iframe Transport Plugin - https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.iframe-transport.js */
|
||||
!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?e(require("jquery")):e(window.jQuery)}(function(e){"use strict";var t=0,r=e,n="parseJSON";"JSON"in window&&"parse"in JSON&&(r=JSON,n="parse"),e.ajaxTransport("iframe",function(r){if(r.async){var n,a,o,i=r.initialIframeSrc||"javascript:false;";return{send:function(p,m){(n=e('<form style="display:none;"></form>')).attr("accept-charset",r.formAcceptCharset),o=/\?/.test(r.url)?"&":"?","DELETE"===r.type?(r.url=r.url+o+"_method=DELETE",r.type="POST"):"PUT"===r.type?(r.url=r.url+o+"_method=PUT",r.type="POST"):"PATCH"===r.type&&(r.url=r.url+o+"_method=PATCH",r.type="POST"),a=e('<iframe src="'+i+'" name="iframe-transport-'+(t+=1)+'"></iframe>').bind("load",function(){var t,o=e.isArray(r.paramName)?r.paramName:[r.paramName];a.unbind("load").bind("load",function(){var t;try{if(!(t=a.contents()).length||!t[0].firstChild)throw new Error}catch(e){t=void 0}m(200,"success",{iframe:t}),e('<iframe src="'+i+'"></iframe>').appendTo(n),window.setTimeout(function(){n.remove()},0)}),n.prop("target",a.prop("name")).prop("action",r.url).prop("method",r.type),r.formData&&e.each(r.formData,function(t,r){e('<input type="hidden"/>').prop("name",r.name).val(r.value).appendTo(n)}),r.fileInput&&r.fileInput.length&&"POST"===r.type&&(t=r.fileInput.clone(),r.fileInput.after(function(e){return t[e]}),r.paramName&&r.fileInput.each(function(t){e(this).prop("name",o[t]||r.paramName)}),n.append(r.fileInput).prop("enctype","multipart/form-data").prop("encoding","multipart/form-data"),r.fileInput.removeAttr("form")),n.submit(),t&&t.length&&r.fileInput.each(function(r,n){var a=e(t[r]);e(n).prop("name",a.prop("name")).attr("form",a.attr("form")),a.replaceWith(n)})}),n.append(a).appendTo(document.body)},abort:function(){a&&a.unbind("load").prop("src",i),n&&n.remove()}}}}),e.ajaxSetup({converters:{"iframe text":function(t){return t&&e(t[0].body).text()},"iframe json":function(t){return t&&r[n](e(t[0].body).text())},"iframe html":function(t){return t&&e(t[0].body).html()},"iframe xml":function(t){var r=t&&t[0];return r&&e.isXMLDoc(r)?r:e.parseXML(r.XMLDocument&&r.XMLDocument.xml||e(r.body).html())},"iframe script":function(t){return t&&e.globalEval(e(t[0].body).text())}}})});
|
||||
|
||||
/* FileUpload - v9.21.0 - https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.fileupload.js */
|
||||
!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","jquery-ui/ui/widget"],e):"object"==typeof exports?e(require("jquery"),require("./vendor/jquery.ui.widget")):e(window.jQuery)}(function(e){"use strict";function t(t){var i="dragover"===t;return function(r){r.dataTransfer=r.originalEvent&&r.originalEvent.dataTransfer;var n=r.dataTransfer;n&&-1!==e.inArray("Files",n.types)&&!1!==this._trigger(t,e.Event(t,{delegatedEvent:r}))&&(r.preventDefault(),i&&(n.dropEffect="copy"))}}e.support.fileInput=!(new RegExp("(Android (1\\.[0156]|2\\.[01]))|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)|(w(eb)?OSBrowser)|(webOS)|(Kindle/(1\\.0|2\\.[05]|3\\.0))").test(window.navigator.userAgent)||e('<input type="file"/>').prop("disabled")),e.support.xhrFileUpload=!(!window.ProgressEvent||!window.FileReader),e.support.xhrFormDataFileUpload=!!window.FormData,e.support.blobSlice=window.Blob&&(Blob.prototype.slice||Blob.prototype.webkitSlice||Blob.prototype.mozSlice),e.widget("blueimp.fileupload",{options:{dropZone:e(document),pasteZone:void 0,fileInput:void 0,replaceFileInput:!0,paramName:void 0,singleFileUploads:!0,limitMultiFileUploads:void 0,limitMultiFileUploadSize:void 0,limitMultiFileUploadSizeOverhead:512,sequentialUploads:!1,limitConcurrentUploads:void 0,forceIframeTransport:!1,redirect:void 0,redirectParamName:void 0,postMessage:void 0,multipart:!0,maxChunkSize:void 0,uploadedBytes:void 0,recalculateProgress:!0,progressInterval:100,bitrateInterval:500,autoUpload:!0,messages:{uploadedBytes:"Uploaded bytes exceed file size"},i18n:function(t,i){return t=this.messages[t]||t.toString(),i&&e.each(i,function(e,i){t=t.replace("{"+e+"}",i)}),t},formData:function(e){return e.serializeArray()},add:function(t,i){if(t.isDefaultPrevented())return!1;(i.autoUpload||!1!==i.autoUpload&&e(this).fileupload("option","autoUpload"))&&i.process().done(function(){i.submit()})},processData:!1,contentType:!1,cache:!1,timeout:0},_specialOptions:["fileInput","dropZone","pasteZone","multipart","forceIframeTransport"],_blobSlice:e.support.blobSlice&&function(){return(this.slice||this.webkitSlice||this.mozSlice).apply(this,arguments)},_BitrateTimer:function(){this.timestamp=Date.now?Date.now():(new Date).getTime(),this.loaded=0,this.bitrate=0,this.getBitrate=function(e,t,i){var r=e-this.timestamp;return(!this.bitrate||!i||r>i)&&(this.bitrate=(t-this.loaded)*(1e3/r)*8,this.loaded=t,this.timestamp=e),this.bitrate}},_isXHRUpload:function(t){return!t.forceIframeTransport&&(!t.multipart&&e.support.xhrFileUpload||e.support.xhrFormDataFileUpload)},_getFormData:function(t){var i;return"function"===e.type(t.formData)?t.formData(t.form):e.isArray(t.formData)?t.formData:"object"===e.type(t.formData)?(i=[],e.each(t.formData,function(e,t){i.push({name:e,value:t})}),i):[]},_getTotal:function(t){var i=0;return e.each(t,function(e,t){i+=t.size||1}),i},_initProgressObject:function(t){var i={loaded:0,total:0,bitrate:0};t._progress?e.extend(t._progress,i):t._progress=i},_initResponseObject:function(e){var t;if(e._response)for(t in e._response)e._response.hasOwnProperty(t)&&delete e._response[t];else e._response={}},_onProgress:function(t,i){if(t.lengthComputable){var r,n=Date.now?Date.now():(new Date).getTime();if(i._time&&i.progressInterval&&n-i._time<i.progressInterval&&t.loaded!==t.total)return;i._time=n,r=Math.floor(t.loaded/t.total*(i.chunkSize||i._progress.total))+(i.uploadedBytes||0),this._progress.loaded+=r-i._progress.loaded,this._progress.bitrate=this._bitrateTimer.getBitrate(n,this._progress.loaded,i.bitrateInterval),i._progress.loaded=i.loaded=r,i._progress.bitrate=i.bitrate=i._bitrateTimer.getBitrate(n,r,i.bitrateInterval),this._trigger("progress",e.Event("progress",{delegatedEvent:t}),i),this._trigger("progressall",e.Event("progressall",{delegatedEvent:t}),this._progress)}},_initProgressListener:function(t){var i=this,r=t.xhr?t.xhr():e.ajaxSettings.xhr();r.upload&&(e(r.upload).bind("progress",function(e){var r=e.originalEvent;e.lengthComputable=r.lengthComputable,e.loaded=r.loaded,e.total=r.total,i._onProgress(e,t)}),t.xhr=function(){return r})},_isInstanceOf:function(e,t){return Object.prototype.toString.call(t)==="[object "+e+"]"},_initXHRData:function(t){var i,r=this,n=t.files[0],o=t.multipart||!e.support.xhrFileUpload,s="array"===e.type(t.paramName)?t.paramName[0]:t.paramName;t.headers=e.extend({},t.headers),t.contentRange&&(t.headers["Content-Range"]=t.contentRange),o&&!t.blob&&this._isInstanceOf("File",n)||(t.headers["Content-Disposition"]='attachment; filename="'+encodeURI(n.uploadName||n.name)+'"'),o?e.support.xhrFormDataFileUpload&&(t.postMessage?(i=this._getFormData(t),t.blob?i.push({name:s,value:t.blob}):e.each(t.files,function(r,n){i.push({name:"array"===e.type(t.paramName)&&t.paramName[r]||s,value:n})})):(r._isInstanceOf("FormData",t.formData)?i=t.formData:(i=new FormData,e.each(this._getFormData(t),function(e,t){i.append(t.name,t.value)})),t.blob?i.append(s,t.blob,n.uploadName||n.name):e.each(t.files,functLine truncated
|
||||
/* FileUpload - v9.28.0 - https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.fileupload.js */
|
||||
!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","jquery-ui/ui/widget"],e):"object"==typeof exports?e(require("jquery"),require("./vendor/jquery.ui.widget")):e(window.jQuery)}(function(e){"use strict";function t(t){var i="dragover"===t;return function(r){r.dataTransfer=r.originalEvent&&r.originalEvent.dataTransfer;var n=r.dataTransfer;n&&-1!==e.inArray("Files",n.types)&&!1!==this._trigger(t,e.Event(t,{delegatedEvent:r}))&&(r.preventDefault(),i&&(n.dropEffect="copy"))}}e.support.fileInput=!(new RegExp("(Android (1\\.[0156]|2\\.[01]))|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)|(w(eb)?OSBrowser)|(webOS)|(Kindle/(1\\.0|2\\.[05]|3\\.0))").test(window.navigator.userAgent)||e('<input type="file"/>').prop("disabled")),e.support.xhrFileUpload=!(!window.ProgressEvent||!window.FileReader),e.support.xhrFormDataFileUpload=!!window.FormData,e.support.blobSlice=window.Blob&&(Blob.prototype.slice||Blob.prototype.webkitSlice||Blob.prototype.mozSlice),e.widget("blueimp.fileupload",{options:{dropZone:e(document),pasteZone:void 0,fileInput:void 0,replaceFileInput:!0,paramName:void 0,singleFileUploads:!0,limitMultiFileUploads:void 0,limitMultiFileUploadSize:void 0,limitMultiFileUploadSizeOverhead:512,sequentialUploads:!1,limitConcurrentUploads:void 0,forceIframeTransport:!1,redirect:void 0,redirectParamName:void 0,postMessage:void 0,multipart:!0,maxChunkSize:void 0,uploadedBytes:void 0,recalculateProgress:!0,progressInterval:100,bitrateInterval:500,autoUpload:!0,messages:{uploadedBytes:"Uploaded bytes exceed file size"},i18n:function(t,i){return t=this.messages[t]||t.toString(),i&&e.each(i,function(e,i){t=t.replace("{"+e+"}",i)}),t},formData:function(e){return e.serializeArray()},add:function(t,i){if(t.isDefaultPrevented())return!1;(i.autoUpload||!1!==i.autoUpload&&e(this).fileupload("option","autoUpload"))&&i.process().done(function(){i.submit()})},processData:!1,contentType:!1,cache:!1,timeout:0},_specialOptions:["fileInput","dropZone","pasteZone","multipart","forceIframeTransport"],_blobSlice:e.support.blobSlice&&function(){return(this.slice||this.webkitSlice||this.mozSlice).apply(this,arguments)},_BitrateTimer:function(){this.timestamp=Date.now?Date.now():(new Date).getTime(),this.loaded=0,this.bitrate=0,this.getBitrate=function(e,t,i){var r=e-this.timestamp;return(!this.bitrate||!i||r>i)&&(this.bitrate=(t-this.loaded)*(1e3/r)*8,this.loaded=t,this.timestamp=e),this.bitrate}},_isXHRUpload:function(t){return!t.forceIframeTransport&&(!t.multipart&&e.support.xhrFileUpload||e.support.xhrFormDataFileUpload)},_getFormData:function(t){var i;return"function"===e.type(t.formData)?t.formData(t.form):e.isArray(t.formData)?t.formData:"object"===e.type(t.formData)?(i=[],e.each(t.formData,function(e,t){i.push({name:e,value:t})}),i):[]},_getTotal:function(t){var i=0;return e.each(t,function(e,t){i+=t.size||1}),i},_initProgressObject:function(t){var i={loaded:0,total:0,bitrate:0};t._progress?e.extend(t._progress,i):t._progress=i},_initResponseObject:function(e){var t;if(e._response)for(t in e._response)e._response.hasOwnProperty(t)&&delete e._response[t];else e._response={}},_onProgress:function(t,i){if(t.lengthComputable){var r,n=Date.now?Date.now():(new Date).getTime();if(i._time&&i.progressInterval&&n-i._time<i.progressInterval&&t.loaded!==t.total)return;i._time=n,r=Math.floor(t.loaded/t.total*(i.chunkSize||i._progress.total))+(i.uploadedBytes||0),this._progress.loaded+=r-i._progress.loaded,this._progress.bitrate=this._bitrateTimer.getBitrate(n,this._progress.loaded,i.bitrateInterval),i._progress.loaded=i.loaded=r,i._progress.bitrate=i.bitrate=i._bitrateTimer.getBitrate(n,r,i.bitrateInterval),this._trigger("progress",e.Event("progress",{delegatedEvent:t}),i),this._trigger("progressall",e.Event("progressall",{delegatedEvent:t}),this._progress)}},_initProgressListener:function(t){var i=this,r=t.xhr?t.xhr():e.ajaxSettings.xhr();r.upload&&(e(r.upload).bind("progress",function(e){var r=e.originalEvent;e.lengthComputable=r.lengthComputable,e.loaded=r.loaded,e.total=r.total,i._onProgress(e,t)}),t.xhr=function(){return r})},_deinitProgressListener:function(t){var i=t.xhr?t.xhr():e.ajaxSettings.xhr();i.upload&&e(i.upload).unbind("progress")},_isInstanceOf:function(e,t){return Object.prototype.toString.call(t)==="[object "+e+"]"},_initXHRData:function(t){var i,r=this,n=t.files[0],o=t.multipart||!e.support.xhrFileUpload,s="array"===e.type(t.paramName)?t.paramName[0]:t.paramName;t.headers=e.extend({},t.headers),t.contentRange&&(t.headers["Content-Range"]=t.contentRange),o&&!t.blob&&this._isInstanceOf("File",n)||(t.headers["Content-Disposition"]='attachment; filename="'+encodeURI(n.uploadName||n.name)+'"'),o?e.support.xhrFormDataFileUpload&&(t.postMessage?(i=this._getFormData(t),t.blob?i.push({name:s,value:t.blob}):e.each(t.files,function(r,n){i.push({name:"array"===e.type(t.paramName)&&t.paramName[r]||s,value:n})})):(r._isInstanceOf("FormData",t.formData)?i=t.formData:(i=new FormData,e.each(this._getFoLine truncated
|
||||
|
||||
/* Lightbox - v2.8.2 - http://lokeshdhakar.com/projects/lightbox2 - Released under the MIT license */
|
||||
//See masks/messages.html
|
||||
@@ -14,3 +14,6 @@
|
||||
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.SimpleBar=e():t.SimpleBar=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=27)}([function(t,e,n){var r=n(23)("wks"),i=n(12),o=n(1).Symbol,s="function"==typeof o;(t.exports=function(t){return r[t]||(r[t]=s&&o[t]||(s?o:i)("Symbol."+t))}).store=r},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e){var n=t.exports={version:"2.5.1"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(5),i=n(11);t.exports=n(7)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(6),i=n(33),o=n(34),s=Object.defineProperty;e.f=n(7)?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return s(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(10);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e,n){t.exports=!n(16)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){t.exports={}},function(t,e,n){var r=n(23)("keys"),i=n(12);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e,n){var r=n(1),i=n(3),o=n(4),s=n(18),c=n(19),a=function(t,e,n){var u,l,f,h,d=t&a.F,p=t&a.G,v=t&a.S,b=t&a.P,y=t&a.B,m=p?r:v?r[e]||(r[e]={}):(r[e]||{}).prototype,g=p?i:i[e]||(i[e]={}),E=g.prototype||(g.prototype={});p&&(n=e);for(u in n)l=!d&&m&&void 0!==m[u],f=(l?m:n)[u],h=y&&l?c(f,r):b&&"function"==typeof f?c(Function.call,f):f,m&&s(m,u,f,t&a.U),g[u]!=f&&o(g,u,h),b&&E[u]!=f&&(E[u]=f)};r.core=i,a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,t.exports=a},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(10),i=n(1).document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e,n){var r=n(1),i=n(4),o=n(2),s=n(12)("src"),c=Function.toString,a=(""+c).split("toString");n(3).inspectSource=function(t){return c.call(t)},(t.exports=function(t,e,n,c){var u="function"==typeof n;u&&(o(n,"name")||i(n,"name",e)),t[e]!==n&&(u&&(o(n,s)||i(n,s,t[e]?""+t[e]:a.join(String(e)))),t===r?t[e]=n:c?t[e]?t[e]=n:i(t,e,n):(delete t[e],i(t,e,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[s]||c.call(this)})},function(t,e,n){var r=n(35);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,n){var r=n(41),i=n(9);t.exports=function(t){return r(i(t))}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){var r=n(8),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e,n){var r=n(1),i=r["__core-js_shared__"]||(r["__core-js_shared__"]={});t.exports=function(t){return i[t]||(i[t]={})}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(5).f,i=n(2),o=n(0)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},function(t,e,n){var r=n(9);t.exports=function(t){return Object(r(t))}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function sLine truncated
|
||||
!function(n,s){i=[],r=s,void 0!==(o="function"==typeof r?r.apply(e,i):r)&&(t.exports=o)}(0,function(){"use strict";function t(){if("undefined"==typeof document)return 0;var t,e=document.body,n=document.createElement("div"),r=n.style;return r.position="absolute",r.top=r.left="-9999px",r.width=r.height="100px",r.overflow="scroll",e.appendChild(n),t=n.offsetWidth-n.clientWidth,e.removeChild(n),t}return t})},function(t,e,n){(function(e){function n(t,e,n){function i(e){var n=v,r=b;return v=b=void 0,w=e,m=t.apply(r,n)}function o(t){return w=t,g=setTimeout(l,e),S?i(t):m}function a(t){var n=t-x,r=t-w,i=e-n;return A?O(i,y-r):i}function u(t){var n=t-x,r=t-w;return void 0===x||n>=e||n<0||A&&r>=y}function l(){var t=_();if(u(t))return f(t);g=setTimeout(l,a(t))}function f(t){return g=void 0,k&&v?i(t):(v=b=void 0,m)}function h(){void 0!==g&&clearTimeout(g),w=0,v=x=b=g=void 0}function d(){return void 0===g?m:f(_())}function p(){var t=_(),n=u(t);if(v=arguments,b=this,x=t,n){if(void 0===g)return o(x);if(A)return g=setTimeout(l,e),i(x)}return void 0===g&&(g=setTimeout(l,e)),m}var v,b,y,m,g,x,w=0,S=!1,A=!1,k=!0;if("function"!=typeof t)throw new TypeError(c);return e=s(e)||0,r(n)&&(S=!!n.leading,A="maxWait"in n,y=A?E(s(n.maxWait)||0,e):y,k="trailing"in n?!!n.trailing:k),p.cancel=h,p.flush=d,p}function r(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function i(t){return!!t&&"object"==typeof t}function o(t){return"symbol"==typeof t||i(t)&&g.call(t)==u}function s(t){if("number"==typeof t)return t;if(o(t))return a;if(r(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=r(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(l,"");var n=h.test(t);return n||d.test(t)?p(t.slice(2),n?2:8):f.test(t)?a:+t}var c="Expected a function",a=NaN,u="[object Symbol]",l=/^\s+|\s+$/g,f=/^[-+]0x[0-9a-f]+$/i,h=/^0b[01]+$/i,d=/^0o[0-7]+$/i,p=parseInt,v="object"==typeof e&&e&&e.Object===Object&&e,b="object"==typeof self&&self&&self.Object===Object&&self,y=v||b||Function("return this")(),m=Object.prototype,g=m.toString,E=Math.max,O=Math.min,_=function(){return y.Date.now()};t.exports=n}).call(e,n(55))},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";function r(t){return parseFloat(t)||0}function i(t){return Array.prototype.slice.call(arguments,1).reduce(function(e,n){return e+r(t["border-"+n+"-width"])},0)}function o(t){for(var e=["top","right","bottom","left"],n={},i=0,o=e;i<o.length;i+=1){var s=o[i],c=t["padding-"+s];n[s]=r(c)}return n}function s(t){var e=t.getBBox();return f(0,0,e.width,e.height)}function c(t){var e=t.clientWidth,n=t.clientHeight;if(!e&&!n)return _;var s=getComputedStyle(t),c=o(s),u=c.left+c.right,l=c.top+c.bottom,h=r(s.width),d=r(s.height);if("border-box"===s.boxSizing&&(Math.round(h+u)!==e&&(h-=i(s,"left","right")+u),Math.round(d+l)!==n&&(d-=i(s,"top","bottom")+l)),!a(t)){var p=Math.round(h+u)-e,v=Math.round(d+l)-n;1!==Math.abs(p)&&(h-=p),1!==Math.abs(v)&&(d-=v)}return f(c.left,c.top,h,d)}function a(t){return t===document.documentElement}function u(t){return d?x(t)?s(t):c(t):_}function l(t){var e=t.x,n=t.y,r=t.width,i=t.height,o="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,s=Object.create(o.prototype);return O(s,{x:e,y:n,width:r,height:i,top:n,right:e+r,bottom:i+n,left:e}),s}function f(t,e,n,r){return{x:t,y:e,width:n,height:r}}Object.defineProperty(e,"__esModule",{value:!0});var h=function(){function t(t,e){var n=-1;return t.some(function(t,r){return t[0]===e&&(n=r,!0)}),n}return"undefined"!=typeof Map?Map:function(){function e(){this.__entries__=[]}var n={size:{}};return n.size.get=function(){return this.__entries__.length},e.prototype.get=function(e){var n=t(this.__entries__,e),r=this.__entries__[n];return r&&r[1]},e.prototype.set=function(e,n){var r=t(this.__entries__,e);~r?this.__entries__[r][1]=n:this.__entries__.push([e,n])},e.prototype.delete=function(e){var n=this.__entries__,r=t(n,e);~r&&n.splice(r,1)},e.prototype.has=function(e){return!!~t(this.__entries__,e)},e.prototype.clear=function(){this.__entries__.splice(0)},e.prototype.forEach=function(t,e){void 0===e&&(e=null);for(var n=0,r=this.__entries__;n<r.length;n+=1){var i=r[n];t.call(e,i[1],i[0])}},Object.defineProperties(e.prototype,n),e}()}(),d="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,p=function(){return"function"==typeof requestAnimationFrame?requestAnimationFrame:function(t){return setTimeout(function(){return t(Date.now())},1e3/60)}}(),v=2,b=function(t,e){function n(){o&&(o=!1,t()),s&&i()}function r(){p(n)}function i(){var t=Date.now();if(o){if(t-c<v)return;s=!0}else o=!0,s=!1,setTimeout(r,e);c=t}var o=!1,s=!1,c=0;return i},y=["top","right","bottom","left","width","height","size","weight"],m="undefined"!=typeof navigator&&/Trident\/.*rv:11/.test(navigator.userAgent),g="undefined"!=typeof MutationObserver&&!m,E=function(){this.connected_=!1,this.muLine truncated
|
||||
var i=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable;t.exports=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(e).map(function(t){return e[t]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(t){r[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(t){return!1}}()?Object.assign:function(t,e){for(var n,c,a=r(t),u=1;u<arguments.length;u++){n=Object(arguments[u]);for(var l in n)o.call(n,l)&&(a[l]=n[l]);if(i){c=i(n);for(var f=0;f<c.length;f++)s.call(n,c[f])&&(a[c[f]]=n[c[f]])}}return a}}]).default});
|
||||
|
||||
/* autosize - v4.0.2 - https://github.com/jackmoore/autosize/blob/master/dist/autosize.min.js - MIT license */
|
||||
!function(e,t){if("function"==typeof define&&define.amd)define(["module","exports"],t);else if("undefined"!=typeof exports)t(module,exports);else{var n={exports:{}};t(n,n.exports),e.autosize=n.exports}}(this,function(e,t){"use strict";var n,o,p="function"==typeof Map?new Map:(n=[],o=[],{has:function(e){return-1<n.indexOf(e)},get:function(e){return o[n.indexOf(e)]},set:function(e,t){-1===n.indexOf(e)&&(n.push(e),o.push(t))},delete:function(e){var t=n.indexOf(e);-1<t&&(n.splice(t,1),o.splice(t,1))}}),c=function(e){return new Event(e,{bubbles:!0})};try{new Event("test")}catch(e){c=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!1),t}}function r(r){if(r&&r.nodeName&&"TEXTAREA"===r.nodeName&&!p.has(r)){var e,n=null,o=null,i=null,d=function(){r.clientWidth!==o&&a()},l=function(t){window.removeEventListener("resize",d,!1),r.removeEventListener("input",a,!1),r.removeEventListener("keyup",a,!1),r.removeEventListener("autosize:destroy",l,!1),r.removeEventListener("autosize:update",a,!1),Object.keys(t).forEach(function(e){r.style[e]=t[e]}),p.delete(r)}.bind(r,{height:r.style.height,resize:r.style.resize,overflowY:r.style.overflowY,overflowX:r.style.overflowX,wordWrap:r.style.wordWrap});r.addEventListener("autosize:destroy",l,!1),"onpropertychange"in r&&"oninput"in r&&r.addEventListener("keyup",a,!1),window.addEventListener("resize",d,!1),r.addEventListener("input",a,!1),r.addEventListener("autosize:update",a,!1),r.style.overflowX="hidden",r.style.wordWrap="break-word",p.set(r,{destroy:l,update:a}),"vertical"===(e=window.getComputedStyle(r,null)).resize?r.style.resize="none":"both"===e.resize&&(r.style.resize="horizontal"),n="content-box"===e.boxSizing?-(parseFloat(e.paddingTop)+parseFloat(e.paddingBottom)):parseFloat(e.borderTopWidth)+parseFloat(e.borderBottomWidth),isNaN(n)&&(n=0),a()}function s(e){var t=r.style.width;r.style.width="0px",r.offsetWidth,r.style.width=t,r.style.overflowY=e}function u(){if(0!==r.scrollHeight){var e=function(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}(r),t=document.documentElement&&document.documentElement.scrollTop;r.style.height="",r.style.height=r.scrollHeight+n+"px",o=r.clientWidth,e.forEach(function(e){e.node.scrollTop=e.scrollTop}),t&&(document.documentElement.scrollTop=t)}}function a(){u();var e=Math.round(parseFloat(r.style.height)),t=window.getComputedStyle(r,null),n="content-box"===t.boxSizing?Math.round(parseFloat(t.height)):r.offsetHeight;if(n<e?"hidden"===t.overflowY&&(s("scroll"),u(),n="content-box"===t.boxSizing?Math.round(parseFloat(window.getComputedStyle(r,null).height)):r.offsetHeight):"hidden"!==t.overflowY&&(s("hidden"),u(),n="content-box"===t.boxSizing?Math.round(parseFloat(window.getComputedStyle(r,null).height)):r.offsetHeight),i!==n){i=n;var o=c("autosize:resized");try{r.dispatchEvent(o)}catch(e){}}}}function i(e){var t=p.get(e);t&&t.destroy()}function d(e){var t=p.get(e);t&&t.update()}var l=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?((l=function(e){return e}).destroy=function(e){return e},l.update=function(e){return e}):((l=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return r(e)}),e}).destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],i),e},l.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],d),e}),t.default=l,e.exports=t.default});
|
||||
@@ -27,3 +27,18 @@
|
||||
.flicker {
|
||||
@include animate(fadeIn 0.8s infinite alternate);
|
||||
}
|
||||
|
||||
/* Fonts */
|
||||
|
||||
@import url('https://fonts.googleapis.com/css?family=Ubuntu:400,700&subset=latin-ext');
|
||||
|
||||
body, textarea, input, button {
|
||||
font-size: 14px;
|
||||
font-family: 'Ubuntu', sans-serif;
|
||||
}
|
||||
|
||||
/* Common objects */
|
||||
|
||||
textarea {
|
||||
resize: none;
|
||||
}
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
@CHARSET "UTF-8";@font-face{font-family:'Font Awesome 5 Pro';font-style:normal;font-weight:900;src:url("fa/fonts/fa-solid-900.eot");src:url("fa/fonts/fa-solid-900.eot?#iefix") format("embedded-opentype"),url("fa/fonts/fa-solid-900.woff2") format("woff2"),url("fa/fonts/fa-solid-900.woff") format("woff"),url("fa/fonts/fa-solid-900.ttf") format("truetype"),url("fa/fonts/fa-solid-900.svg#fontawesome") format("svg")}.fa,#messages .leaflet-control-layers-toggle,.fas,.fa,#messages .leaflet-control-layers-toggle{font-family:'Font Awesome 5 Pro';font-weight:900}.fa,#messages .leaflet-control-layers-toggle,.fas,.fa,#messages .leaflet-control-layers-toggle,.far,.fal,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw,.info-window i{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid 0.08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,#messages .fa-pull-left.leaflet-control-layers-toggle,.fas.fa-pull-left,.fa-pull-left.fa,#messages .fa-pull-left.leaflet-control-layers-toggle,.far.fa-pull-left,.fal.fa-pull-left,.fab.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,#messages .fa-pull-right.leaflet-control-layers-toggle,.fas.fa-pull-right,.fa-pull-right.fa,#messages .fa-pull-right.leaflet-control-layers-toggle,.far.fa-pull-right,.fal.fa-pull-right,.fab.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(1, -1)}.fa-flip-horizontal.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(-1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa.push,#messages .push.leaflet-control-layers-toggle{margin-right:0.5em}.fa-post:before{content:"\f075"}.fa-poster:before{content:"\f4ae"}.fa-message:before{content:"\f14e"}.fa-map:before{content:"\f59f"}.fa-time:before{content:"\f017"}.fa-picture:before{content:"\f332"}.fa-send:before{content:"\f1d8"}.fa-spinner:before{content:"\f110"}.fa-tasks:before{content:"\f0ae"}.fa-track-off-track:before{content:"\f6ec"}.fa-track-main:before{content:"\f6ec"}.fa-track-hitchhiking:before{content:"\f5e4"}.fa-layers:before,#messages .leaflet-control-layers-toggle:before{content:"\f5fd"}html.lb-disable-scrolling{overflow:hidden;position:fixed;height:100vh;width:100vw}.lightboxOverlay{position:absolute;top:0;left:0;z-index:9999;background-color:black;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);opacity:0.8;display:none}.lightbox{position:absolute;left:0;width:100%;z-index:10000;text-align:center;line-height:0;font-weight:normal}.lightbox .lb-image{display:block;height:auto;max-width:inherit;max-height:none;border-radius:3px;border:4px solid white}.lightbox a img{border:none}.lb-outerContainer{position:relative;*zoom:1;width:250px;height:250px;margin:0 auto;border-radius:4px;background-color:white}.lb-outerContainer:after{content:"";display:table;clear:both}.lb-loader{position:absolute;top:43%;left:0;height:25%;width:100%;text-align:center;line-height:0}.lb-cancel{display:block;width:32px;height:32px;margin:0 auto;background:url(../images/loading.gif) no-repeat}.lb-nav{position:absolute;top:0;left:0;height:100%;width:100%;z-index:10}.lb-container>.nav{left:0}.lb-nav a{outline:none;background-image:url("data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==")}.lb-prev,.lbLine truncated
|
||||
@import url("https://fonts.googleapis.com/css?family=Ubuntu:400,700&subset=latin-ext");@CHARSET "UTF-8";@font-face{font-family:'Font Awesome 5 Pro';font-style:normal;font-weight:900;src:url("fa/fonts/fa-solid-900.eot");src:url("fa/fonts/fa-solid-900.eot?#iefix") format("embedded-opentype"),url("fa/fonts/fa-solid-900.woff2") format("woff2"),url("fa/fonts/fa-solid-900.woff") format("woff"),url("fa/fonts/fa-solid-900.ttf") format("truetype"),url("fa/fonts/fa-solid-900.svg#fontawesome") format("svg")}.fa,#messages .leaflet-control-layers-toggle,.fas,.fa,#messages .leaflet-control-layers-toggle{font-family:'Font Awesome 5 Pro';font-weight:900}.fa,#messages .leaflet-control-layers-toggle,.fas,.fa,#messages .leaflet-control-layers-toggle,.far,.fal,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw,.info-window i{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid 0.08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,#messages .fa-pull-left.leaflet-control-layers-toggle,.fas.fa-pull-left,.fa-pull-left.fa,#messages .fa-pull-left.leaflet-control-layers-toggle,.far.fa-pull-left,.fal.fa-pull-left,.fab.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,#messages .fa-pull-right.leaflet-control-layers-toggle,.fas.fa-pull-right,.fa-pull-right.fa,#messages .fa-pull-right.leaflet-control-layers-toggle,.far.fa-pull-right,.fal.fa-pull-right,.fab.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(1, -1)}.fa-flip-horizontal.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(-1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa.push,#messages .push.leaflet-control-layers-toggle{margin-right:0.5em}.fa-post:before{content:"\f075"}.fa-poster:before{content:"\f4ae"}.fa-message:before{content:"\f14e"}.fa-map:before{content:"\f59f"}.fa-time:before{content:"\f017"}.fa-picture:before{content:"\f332"}.fa-send:before{content:"\f1d8"}.fa-spinner:before{content:"\f110"}.fa-tasks:before{content:"\f0ae"}.fa-track-off-track:before{content:"\f6ec"}.fa-track-main:before{content:"\f6ec"}.fa-track-hitchhiking:before{content:"\f5e4"}.fa-layers:before,#messages .leaflet-control-layers-toggle:before{content:"\f5fd"}html.lb-disable-scrolling{overflow:hidden;position:fixed;height:100vh;width:100vw}.lightboxOverlay{position:absolute;top:0;left:0;z-index:9999;background-color:black;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);opacity:0.8;display:none}.lightbox{position:absolute;left:0;width:100%;z-index:10000;text-align:center;line-height:0;font-weight:normal}.lightbox .lb-image{display:block;height:auto;max-width:inherit;max-height:none;border-radius:3px;border:4px solid white}.lightbox a img{border:none}.lb-outerContainer{position:relative;*zoom:1;width:250px;height:250px;margin:0 auto;border-radius:4px;background-color:white}.lb-outerContainer:after{content:"";display:table;clear:both}.lb-loader{position:absolute;top:43%;left:0;height:25%;width:100%;text-align:center;line-height:0}.lb-cancel{display:block;width:32px;height:32px;margin:0 auto;background:url(../images/loading.gif) no-repeat}.lb-nav{position:absolute;top:0;left:0;height:100%;width:100%;z-index:10}.lb-container>.nav{left:0}.lb-nav a{outline:none;background-image:url("data:imageLine truncated
|
||||
/*# sourceMappingURL=spot.css.map */
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"mappings": "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 truncated
|
||||
"sources": ["spot.scss","fa/solid.scss","fa/_core.scss","fa/_larger.scss","fa/_fixed-width.scss","fa/_variables.scss","fa/_list.scss","fa/_bordered-pulled.scss","fa/_animated.scss","fa/_rotated-flipped.scss","fa/_mixins.scss","fa/_stacked.scss","_fa.scss","_lightbox.scss","_simplebar.scss","_leaflet.scss","_common.scss"],
|
||||
"mappings": "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 truncated
|
||||
"sources": ["_common.scss","spot.scss","fa/solid.scss","fa/_core.scss","fa/_larger.scss","fa/_fixed-width.scss","fa/_variables.scss","fa/_list.scss","fa/_bordered-pulled.scss","fa/_animated.scss","fa/_rotated-flipped.scss","fa/_mixins.scss","fa/_stacked.scss","_fa.scss","_lightbox.scss","_simplebar.scss","_leaflet.scss"],
|
||||
"names": [],
|
||||
"file": "spot.css"
|
||||
}
|
||||
+3
-4
@@ -64,7 +64,7 @@
|
||||
text-align: center;
|
||||
line-height: 44px;
|
||||
text-decoration: none;
|
||||
color: #888;
|
||||
color: #999;
|
||||
text-shadow: 0px 1px 1px rgba(0,0,0,0.8);
|
||||
background: none;
|
||||
@extend .fa;
|
||||
@@ -112,7 +112,7 @@
|
||||
width: calc(30% - 1em);
|
||||
z-index: 999;
|
||||
|
||||
input, button {
|
||||
input, textarea, button {
|
||||
border: none;
|
||||
padding: 0.5em 1em;
|
||||
background: #F7F7F7;
|
||||
@@ -129,7 +129,6 @@
|
||||
}
|
||||
|
||||
#posts {
|
||||
font-family: Arial;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
@@ -137,7 +136,7 @@
|
||||
|
||||
#poster {
|
||||
|
||||
input, button {
|
||||
input, textarea, button {
|
||||
border-radius: 3px;
|
||||
background-color: #d9deff;
|
||||
color: #323268;
|
||||
|
||||
Reference in new issue
Block a user