admin page v1

This commit is contained in:
franzz committed 2019-03-31 22:07:21 +02:00
1 parent e4a8cc7dbb
commit a9956a6a2e
10 files changed
+180 -15

No files matched your search

+40 -11
View File
@@ -29,6 +29,10 @@ class Project extends PhpObject {
$this->oDb = &$oDb; $this->oDb = &$oDb;
} }
public function getProjectId() {
return $this->iProjectId;
}
public function setProjectId($iProjectId=0) { public function setProjectId($iProjectId=0) {
if($iProjectId > 0) { if($iProjectId > 0) {
$this->iProjectId = $iProjectId; $this->iProjectId = $iProjectId;
@@ -53,25 +57,47 @@ class Project extends PhpObject {
return $this->sMode; return $this->sMode;
} }
public function getProjectId() {
return $this->iProjectId;
}
public function getProjectCodeName() { public function getProjectCodeName() {
return $this->sCodeName; return $this->sCodeName;
} }
public function setProjectCodeName($sCodeName) {
return $this->updateField('codename', $sCodeName);
}
public function getActivePeriod($sFromTo='') { public function getActivePeriod($sFromTo='') {
return ($sFromTo=='')?$this->asActive:$this->asActive[$sFromTo]; return ($sFromTo=='')?$this->asActive:$this->asActive[$sFromTo];
} }
public function setActivePeriod($oValue, $sFromTo='') {
if($sFromTo=='') {
$this->updateField('active_from', $oValue['from']);
return $this->updateField('active_to', $oValue['to']);
}
else {
return $this->updateField('active_'.$sFromTo, $oValue);
}
}
public function getTimeZone() { public function getTimeZone() {
return $this->asGeo['timezone']; return $this->asGeo['timezone'];
} }
public function setTimeZone($sTimeZone) {
return $this->updateField('timezone', $sTimeZone);
}
public function getGeoFile() { public function getGeoFile() {
return $this->asGeo['file']; return $this->asGeo['file'];
} }
public function getFeedIds() {
return $this->oDb->selectColumn(
Feed::FEED_TABLE,
Db::getId(Feed::FEED_TABLE),
array(Db::getId(self::PROJ_TABLE) => $this->getProjectId())
);
}
public function getProjects($iProjectId=0) { public function getProjects($iProjectId=0) {
$bSpecificProj = ($iProjectId > 0); $bSpecificProj = ($iProjectId > 0);
@@ -109,17 +135,13 @@ class Project extends PhpObject {
return $bSpecificProj?$asProject:$asProjects; return $bSpecificProj?$asProject:$asProjects;
} }
public function getFeedIds() { public function getProject() {
return $this->oDb->selectColumn( return $this->getProjects($this->getProjectId());
Feed::FEED_TABLE,
Db::getId(Feed::FEED_TABLE),
array(Db::getId(self::PROJ_TABLE) => $this->getProjectId())
);
} }
private function setProjectInfo() { private function setProjectInfo() {
if($this->getProjectId() > 0) { if($this->getProjectId() > 0) {
$asProject = $this->getProjects($this->getProjectId()); $asProject = $this->getProject();
$this->sMode = $asProject['mode']; $this->sMode = $asProject['mode'];
$this->asActive = array('from'=>$asProject['active_from'], 'to'=>$asProject['active_to']); $this->asActive = array('from'=>$asProject['active_from'], 'to'=>$asProject['active_to']);
@@ -129,4 +151,11 @@ class Project extends PhpObject {
} }
else $this->addError('Error while setting project: no project ID'); else $this->addError('Error while setting project: no project ID');
} }
private function updateField($sField, $oValue) {
$bResult = ($this->oDb->updateRow(self::PROJ_TABLE, $this->getProjectId(), array($sField=>$oValue)) > 0);
$this->setProjectInfo();
return $bResult;
}
} }
+25
View File
@@ -327,6 +327,31 @@ class Spot extends Main
return self::getJsonResult(true, ''); return self::getJsonResult(true, '');
} }
public function getAdminSettings() {
return self::getJsonResult(true, '', array('projects'=>$this->oProject->getProjects()));
}
public function setAdminSettings($sField, $sValue) {
$bSuccess = false;
$sDesc = '';
switch($sField) {
case 'codename':
$bSuccess = $this->oProject->setProjectCodeName($sValue);
break;
case 'active_from':
case 'active_to':
$bSuccess = $this->oProject->setActivePeriod($sValue, mb_substr($sField, 7));
break;
case 'timezone':
$bSuccess = $this->oProject->setTimeZone($sValue);
break;
}
if(!$bSuccess) $sDesc = 'Issue committing to DB';
return self::getJsonResult($bSuccess, $sDesc, array('values'=>$this->oProject->getProject()));
}
public static function DecToDMS($dValue, $sType='lat') { public static function DecToDMS($dValue, $sType='lat') {
if($sType=='lat') $sDirection = ($dValue >= 0)?'N':'S'; if($sType=='lat') $sDirection = ($dValue >= 0)?'N':'S';
else $sDirection = ($dValue >= 0)?'E':'W'; else $sDirection = ($dValue >= 0)?'E':'W';
+8
View File
@@ -17,6 +17,8 @@ $sName = isset($_GET['name'])?$_GET['name']:'';
$sContent = isset($_GET['content'])?$_GET['content']:''; $sContent = isset($_GET['content'])?$_GET['content']:'';
$iChunk = isset($_GET['chunk'])?$_GET['chunk']:0; $iChunk = isset($_GET['chunk'])?$_GET['chunk']:0;
$iProjectId = isset($_REQUEST['project_id'])?$_REQUEST['project_id']:0; $iProjectId = isset($_REQUEST['project_id'])?$_REQUEST['project_id']:0;
$sField = isset($_REQUEST['field'])?$_REQUEST['field']:'';
$oValue = isset($_REQUEST['value'])?$_REQUEST['value']:'';
//Initiate class //Initiate class
$oSpot = new Spot($oClassManagement, __FILE__); $oSpot = new Spot($oClassManagement, __FILE__);
@@ -45,6 +47,12 @@ if($sAction!='')
case 'sync_pics': case 'sync_pics':
$sResult = $oSpot->syncPics(); $sResult = $oSpot->syncPics();
break; break;
case 'get_admin':
$sResult = $oSpot->getAdminSettings();
break;
case 'set_admin':
$sResult = $oSpot->setAdminSettings($sField, $oValue);
break;
default: default:
$sResult = Main::getJsonResult(false, Main::NOT_FOUND); $sResult = Main::getJsonResult(false, Main::NOT_FOUND);
} }
+88
View File
@@ -0,0 +1,88 @@
<div id="admin">
<div id="projects">
<table>
<tr>
<th>Project</th>
<th>Mode</th>
<th>Code Name</th>
<th>Start</th>
<th>End</th>
<th>Time Zone</th>
</tr>
</table>
</div>
<div id="feedback"></div>
</div>
<script type="text/javascript">
oSpot.pageInit = function(asHash) {
self.get(
'get_admin',
function(asData){
setProjects(asData.projects);
},
{},
function(e){console.log(e);}
);
};
oSpot.onFeedback = function(sType, sMsg, asContext) {
delete asContext.a;
sMsg += ' (context: ';
$.each(asContext, function(sKey, sElem) {
sMsg += sKey+'='+sElem+' / ' ;
});
sMsg = sMsg.slice(0, -3)+')';
$('#feedback').append($('<p>', {'class': sType}).text(sMsg));
};
function setProjects(asProjects) {
$.each(asProjects, function(iKey, oProject) {
var sElemId = 'proj_'+oProject.id;
var $Project = ($('#'+sElemId).length==0)?$('<tr>', {'id': sElemId}):$('#'+sElemId).empty();
console.log(sElemId);
console.log($('#'.sElemId).length);
$Project
.data('project_id', oProject.id)
.append($('<td>', {'class': 'name'}).text(oProject.name))
.append($('<td>', {'class': 'mode'}).text(oProject.mode))
.append($('<td>').addInput('text', 'codename', oProject.codename))
.append($('<td>').addInput('date', 'active_from', oProject.active_from.substr(0, 10)))
.append($('<td>').addInput('date', 'active_to', oProject.active_to.substr(0, 10)))
.append($('<td>').addInput('text', 'timezone', oProject.timezone))
.appendTo($('#projects').find('table'));
});
$('input')
.change(commit)
.keyup(waitAndCommit);
}
function commit(event, $This) {
$This = $This || $(this);
var sNewVal = $This.val();
if($This.data('old_value')!=sNewVal) { console.log('commit');
$This.data('old_value', sNewVal);
var asInputs = {project_id: $This.closest('tr').data('project_id'), field: $This.attr('name'), value: sNewVal};
self.get(
'set_admin',
function(asData){
oSpot.onFeedback('success', 'Sauvegarde OK', asInputs);
setProjects([asData.values]);
},
asInputs,
function(sError){
oSpot.onFeedback('error', sError, asInputs);
}
);
}
}
function waitAndCommit(event) { console.log('waitAndCommit');
if(typeof self.tmp('wait') != 'undefined') clearTimeout(self.tmp('wait'));
self.tmp('wait', setTimeout(()=>{commit(event,$(this));}, 1000));
}
</script>
+5
View File
@@ -226,6 +226,11 @@ function setElem(aoAnchor, asPath, oValue)
} }
} }
$.prototype.addInput = function(sType, sName, sValue)
{
return $(this).append($('<input>', {type: sType, name: sName, value: sValue}).data('old_value', sValue));
};
$.prototype.addIcon = function(sIcon, bMargin, sStyle) $.prototype.addIcon = function(sIcon, bMargin, sStyle)
{ {
bMargin = bMargin || false; bMargin = bMargin || false;
+9
View File
@@ -0,0 +1,9 @@
#feedback {
.error {
color: red;
}
.success {
color: green;
}
}
+1 -1
View File
@@ -1,2 +1,2 @@
@font-face{font-family:'Ubuntu';font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCs6KVjbNBYlgoKcg72j00.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCs6KVjbNBYlgoKew72j00.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCs6KVjbNBYlgoKcw72j00.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCs6KVjbNBYlgoKfA72j00.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCs6KVjbNBYlgoKcQ72j00.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(fonts/4iCs6KVjbNBYlgoKfw72.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCv6KVjbNBYlgoCxCvjvWyNL4U.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCv6KVjbNBYlgoCxCvjtGyNL4U.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCv6KVjbNBYlgoCxCvjvGyNL4U.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCv6KVjbNBYlgoCxCvjs2yNL4U.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCv6KVjbNBYlgoCxCvjvmyNL4U.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(fonts/4iCv6KVjbNBYlgoCxCvjsGyN.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@-webkit-keyframes fadeIn{from{opacity:0.3}}@-moz-keyframes fadeIn{from{opacity:0.3}}@-ms-keyframes fadeIn{from{opacity:0.3}}@-o-keyframes fadeIn{from{opacity:0.3}}@keyframes fadeIn{from{opacity:0.3}}.flicker,.lb-cancel{-webkit-animation:fadeIn 0.5s infinite alternate;-moz-animation:fadeIn 0.5s infinite alternate;-ms-animation:fadeIn 0.5s infinite alternate;-o-animation:fadeIn 0.5s infinite alternate;animation:fadeIn 0.5s infinite alternate}body,textarea,input,button{font-size:14px;font-family:'Ubuntu', sans-serif}textarea{resize:none}button{cursor:pointer;font-weight:bold}@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,.control-icon,.spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,#projects .leaflet-control-layers-toggle,#projects #post-button .fa,.lb-cancel,.lb-nav a.lb-prev,.lb-nav a.lb-next,.lb-data .lb-close,.fas,.fa,.control-icon,.spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,#projects .leaflet-control-layers-toggle,#projects #post-button .fa,.lb-cancel,.lb-nav a.lb-prev,.lb-nav a.lb-next,.lb-data .lb-close{font-family:'Font Awesome 5 Pro';font-weight:900}.fa,.control-icon,.spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,#projects .leaflet-control-layers-toggle,#projects #post-button .fa,.lb-cancel,.lb-nav a.lb-prev,.lb-nav a.lb-next,.lb-data .lb-close,.Line truncated @font-face{font-family:'Ubuntu';font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCs6KVjbNBYlgoKcg72j00.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCs6KVjbNBYlgoKew72j00.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCs6KVjbNBYlgoKcw72j00.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCs6KVjbNBYlgoKfA72j00.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCs6KVjbNBYlgoKcQ72j00.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(fonts/4iCs6KVjbNBYlgoKfw72.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCv6KVjbNBYlgoCxCvjvWyNL4U.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCv6KVjbNBYlgoCxCvjtGyNL4U.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCv6KVjbNBYlgoCxCvjvGyNL4U.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCv6KVjbNBYlgoCxCvjs2yNL4U.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCv6KVjbNBYlgoCxCvjvmyNL4U.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Ubuntu';font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(fonts/4iCv6KVjbNBYlgoCxCvjsGyN.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@-webkit-keyframes fadeIn{from{opacity:0.3}}@-moz-keyframes fadeIn{from{opacity:0.3}}@-ms-keyframes fadeIn{from{opacity:0.3}}@-o-keyframes fadeIn{from{opacity:0.3}}@keyframes fadeIn{from{opacity:0.3}}.flicker,.lb-cancel{-webkit-animation:fadeIn 0.5s infinite alternate;-moz-animation:fadeIn 0.5s infinite alternate;-ms-animation:fadeIn 0.5s infinite alternate;-o-animation:fadeIn 0.5s infinite alternate;animation:fadeIn 0.5s infinite alternate}body,textarea,input,button{font-size:14px;font-family:'Ubuntu', sans-serif}textarea{resize:none}button{cursor:pointer;font-weight:bold}@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,.control-icon,.spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,#projects .leaflet-control-layers-toggle,#projects #post-button .fa,.lb-cancel,.lb-nav a.lb-prev,.lb-nav a.lb-next,.lb-data .lb-close,.fas,.fa,.control-icon,.spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,#projects .leaflet-control-layers-toggle,#projects #post-button .fa,.lb-cancel,.lb-nav a.lb-prev,.lb-nav a.lb-next,.lb-data .lb-close{font-family:'Font Awesome 5 Pro';font-weight:900}.fa,.control-icon,.spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,#projects .leaflet-control-layers-toggle,#projects #post-button .fa,.lb-cancel,.lb-nav a.lb-prev,.lb-nav a.lb-next,.lb-data .lb-close,.Line truncated
/*# sourceMappingURL=spot.css.map */ /*# sourceMappingURL=spot.css.map */
+2 -2
View File
@@ -1,7 +1,7 @@
{ {
"version": 3, "version": 3,
"mappings": "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 truncated "mappings": "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 truncated
"sources": ["_fonts.scss","_common.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/_lightbox.scss","_lightbox.scss","_simplebar.scss","leaflet/_leaflet.scss","leaflet/_leaflet_elevation.scss","_leaflet.scss","_mask_project.scss","_mask_upload.scss","_mobile.scss"], "sources": ["_fonts.scss","_common.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/_lightbox.scss","_lightbox.scss","_simplebar.scss","leaflet/_leaflet.scss","leaflet/_leaflet_elevation.scss","_leaflet.scss","_mask_project.scss","_mask_upload.scss","_mask_admin.scss","_mobile.scss"],
"names": [], "names": [],
"file": "spot.css" "file": "spot.css"
} }
+1
View File
@@ -11,5 +11,6 @@
/* Pages Specific CSS (masks) */ /* Pages Specific CSS (masks) */
@import 'mask_project'; @import 'mask_project';
@import 'mask_upload'; @import 'mask_upload';
@import 'mask_admin';
@import 'mobile'; @import 'mobile';
+1 -1
View File
@@ -1,4 +1,4 @@
To Do List To Do List
---------- ----------
- Check that update feed works - Check that update feed works
- admin page #admin to manage projects - require js