Merge pull request #830 from ArthurHoaro/theme/timezone
Change timezone data structure send to the templates
This commit is contained in:
commit
4c7045229c
12 changed files with 289 additions and 144 deletions
|
@ -73,15 +73,35 @@
|
|||
<div class="pure-u-lg-{$ratioLabel} pure-u-1 ">
|
||||
<div class="form-label">
|
||||
<label>
|
||||
<span class="label-name">{'Timezone'|t}</span>
|
||||
<span class="label-name">{'Timezone'|t}</span><br>
|
||||
<span class="label-desc">{'Continent'|t} · {'City'|t}</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pure-u-lg-{$ratioInput} pure-u-1 ">
|
||||
<div class="form-input">
|
||||
{ignore}FIXME! too hackish, needs to be fixed upstream{/ignore}
|
||||
<div class="timezone" id="timezone-remove">{$timezone_form}</div>
|
||||
<div class="timezone" id="timezone-add"></div>
|
||||
<div class="timezone">
|
||||
<select id="continent" name="continent">
|
||||
{loop="$continents"}
|
||||
{if="$key !== 'selected'"}
|
||||
<option value="{$value}" {if="$continents.selected === $value"}selected{/if}>
|
||||
{$value}
|
||||
</option>
|
||||
{/if}
|
||||
{/loop}
|
||||
</select>
|
||||
<select id="city" name="city">
|
||||
{loop="$cities"}
|
||||
{if="$key !== 'selected'"}
|
||||
<option value="{$value.city}"
|
||||
{if="$cities.selected === $value.city"}selected{/if}
|
||||
data-continent="{$value.continent}">
|
||||
{$value.city}
|
||||
</option>
|
||||
{/if}
|
||||
{/loop}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -50,23 +50,6 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pure-g">
|
||||
<div class="pure-u-lg-{$ratioLabel} pure-u-1 ">
|
||||
<div class="form-label">
|
||||
<label>
|
||||
<span class="label-name">{'Timezone'|t}</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pure-u-lg-{$ratioInput} pure-u-1 ">
|
||||
<div class="form-input">
|
||||
{ignore}FIXME! too hackish, needs to be fixed upstream{/ignore}
|
||||
<div class="timezone" id="timezone-remove">{$timezone_html}</div>
|
||||
<div class="timezone" id="timezone-add"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pure-g">
|
||||
<div class="pure-u-lg-{$ratioLabel} pure-u-1">
|
||||
<div class="form-label">
|
||||
|
@ -82,6 +65,43 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pure-g">
|
||||
<div class="pure-u-lg-{$ratioLabel} pure-u-1">
|
||||
<div class="form-label">
|
||||
<label>
|
||||
<span class="label-name">{'Timezone'|t}</span><br>
|
||||
<span class="label-desc">{'Continent'|t} · {'City'|t}</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pure-u-lg-{$ratioInput} pure-u-1">
|
||||
<div class="form-input">
|
||||
<div class="timezone">
|
||||
<select id="continent" name="continent">
|
||||
{loop="$continents"}
|
||||
{if="$key !== 'selected'"}
|
||||
<option value="{$value}" {if="$continents.selected === $value"}selected{/if}>
|
||||
{$value}
|
||||
</option>
|
||||
{/if}
|
||||
{/loop}
|
||||
</select>
|
||||
<select id="city" name="city">
|
||||
{loop="$cities"}
|
||||
{if="$key !== 'selected'"}
|
||||
<option value="{$value.city}"
|
||||
{if="$cities.selected === $value.city"}selected{/if}
|
||||
data-continent="{$value.continent}">
|
||||
{$value.city}
|
||||
</option>
|
||||
{/if}
|
||||
{/loop}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pure-g">
|
||||
<div class="pure-u-lg-{$ratioLabel} pure-u-7-8">
|
||||
<div class="form-label">
|
||||
|
|
|
@ -76,9 +76,12 @@ window.onload = function () {
|
|||
}
|
||||
}
|
||||
|
||||
document.getElementById('menu-toggle').addEventListener('click', function (e) {
|
||||
toggleMenu();
|
||||
});
|
||||
var menuToggle = document.getElementById('menu-toggle');
|
||||
if (menuToggle != null) {
|
||||
menuToggle.addEventListener('click', function (e) {
|
||||
toggleMenu();
|
||||
});
|
||||
}
|
||||
|
||||
window.addEventListener(WINDOW_CHANGE_EVENT, closeMenu);
|
||||
})(this, this.document);
|
||||
|
@ -298,21 +301,6 @@ window.onload = function () {
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* TimeZome select
|
||||
* FIXME! way too hackish
|
||||
*/
|
||||
var toRemove = document.getElementById('timezone-remove');
|
||||
if (toRemove != null) {
|
||||
var firstSelect = toRemove.getElementsByTagName('select')[0];
|
||||
var secondSelect = toRemove.getElementsByTagName('select')[1];
|
||||
toRemove.parentNode.removeChild(toRemove);
|
||||
var toAdd = document.getElementById('timezone-add');
|
||||
var newTimezone = '<span class="timezone-continent">Continent ' + firstSelect.outerHTML + '</span>';
|
||||
newTimezone += ' <span class="timezone-country">Country ' + secondSelect.outerHTML + '</span>';
|
||||
toAdd.innerHTML = newTimezone;
|
||||
}
|
||||
|
||||
/**
|
||||
* Awesomplete trigger.
|
||||
*/
|
||||
|
@ -365,6 +353,15 @@ window.onload = function () {
|
|||
}
|
||||
});
|
||||
});
|
||||
|
||||
var continent = document.getElementById('continent');
|
||||
var city = document.getElementById('city');
|
||||
if (continent != null && city != null) {
|
||||
continent.addEventListener('change', function(event) {
|
||||
hideTimezoneCities(city, continent.options[continent.selectedIndex].value, true);
|
||||
});
|
||||
hideTimezoneCities(city, continent.options[continent.selectedIndex].value, false);
|
||||
}
|
||||
};
|
||||
|
||||
function activateFirefoxSocial(node) {
|
||||
|
@ -390,3 +387,25 @@ function activateFirefoxSocial(node) {
|
|||
var activate = new CustomEvent("ActivateSocialFeature");
|
||||
node.dispatchEvent(activate);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the class 'hidden' to city options not attached to the current selected continent.
|
||||
*
|
||||
* @param cities List of <option> elements
|
||||
* @param currentContinent Current selected continent
|
||||
* @param reset Set to true to reset the selected value
|
||||
*/
|
||||
function hideTimezoneCities(cities, currentContinent, reset = false) {
|
||||
var first = true;
|
||||
[].forEach.call(cities, function(option) {
|
||||
if (option.getAttribute('data-continent') != currentContinent) {
|
||||
option.className = 'hidden';
|
||||
} else {
|
||||
option.className = '';
|
||||
if (reset === true && first === true) {
|
||||
option.setAttribute('selected', 'selected');
|
||||
first = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
<body onload="document.configform.title.focus();">
|
||||
<div id="pageheader">
|
||||
{include="page.header"}
|
||||
{$timezone_js}
|
||||
<form method="POST" action="#" name="configform" id="configform">
|
||||
<input type="hidden" name="token" value="{$token}">
|
||||
<table id="configuration_table">
|
||||
|
@ -35,7 +34,28 @@
|
|||
|
||||
<tr>
|
||||
<td><b>Timezone:</b></td>
|
||||
<td>{$timezone_form}</td>
|
||||
<td>
|
||||
<select id="continent" name="continent">
|
||||
{loop="$continents"}
|
||||
{if="$key !== 'selected'"}
|
||||
<option value="{$value}" {if="$continents.selected === $value"}selected{/if}>
|
||||
{$value}
|
||||
</option>
|
||||
{/if}
|
||||
{/loop}
|
||||
</select>
|
||||
<select id="city" name="city">
|
||||
{loop="$cities"}
|
||||
{if="$key !== 'selected'"}
|
||||
<option value="{$value.city}"
|
||||
{if="$cities.selected === $value.city"}selected{/if}
|
||||
data-continent="{$value.continent}">
|
||||
{$value.city}
|
||||
</option>
|
||||
{/if}
|
||||
{/loop}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
|
|
@ -41,6 +41,10 @@ strong {
|
|||
font-weight: bold;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Buttons */
|
||||
.bigbutton, #pageheader a.bigbutton {
|
||||
background-color: #c0c0c0;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>{include="includes"}{$timezone_js}</head>
|
||||
<head>{include="includes"}</head>
|
||||
<body onload="document.installform.setlogin.focus();">
|
||||
<div id="install">
|
||||
<h1>Shaarli</h1>
|
||||
|
@ -9,7 +9,31 @@
|
|||
<table>
|
||||
<tr><td><b>Login:</b></td><td><input type="text" name="setlogin" size="30"></td></tr>
|
||||
<tr><td><b>Password:</b></td><td><input type="password" name="setpassword" size="30"></td></tr>
|
||||
{$timezone_html}
|
||||
<tr>
|
||||
<td><b>Timezone:</b></td>
|
||||
<td>
|
||||
<select id="continent" name="continent">
|
||||
{loop="$continents"}
|
||||
{if="$key !== 'selected'"}
|
||||
<option value="{$value}" {if="$continents.selected === $value"}selected{/if}>
|
||||
{$value}
|
||||
</option>
|
||||
{/if}
|
||||
{/loop}
|
||||
</select>
|
||||
<select id="city" name="city">
|
||||
{loop="$cities"}
|
||||
{if="$key !== 'selected'"}
|
||||
<option value="{$value.city}"
|
||||
{if="$cities.selected === $value.city"}selected{/if}
|
||||
data-continent="{$value.continent}">
|
||||
{$value.city}
|
||||
</option>
|
||||
{/if}
|
||||
{/loop}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td><b>Page title:</b></td><td><input type="text" name="title" size="30"></td></tr>
|
||||
<tr><td valign="top"><b>Update:</b></td><td>
|
||||
<input type="checkbox" name="updateCheck" id="updateCheck" checked="checked"><label for="updateCheck"> Notify me when a new release is ready</label></td>
|
||||
|
|
32
tpl/vintage/js/shaarli.js
Normal file
32
tpl/vintage/js/shaarli.js
Normal file
|
@ -0,0 +1,32 @@
|
|||
window.onload = function () {
|
||||
var continent = document.getElementById('continent');
|
||||
var city = document.getElementById('city');
|
||||
if (continent != null && city != null) {
|
||||
continent.addEventListener('change', function(event) {
|
||||
hideTimezoneCities(city, continent.options[continent.selectedIndex].value, true);
|
||||
});
|
||||
hideTimezoneCities(city, continent.options[continent.selectedIndex].value, false);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Add the class 'hidden' to city options not attached to the current selected continent.
|
||||
*
|
||||
* @param cities List of <option> elements
|
||||
* @param currentContinent Current selected continent
|
||||
* @param reset Set to true to reset the selected value
|
||||
*/
|
||||
function hideTimezoneCities(cities, currentContinent, reset = false) {
|
||||
var first = true;
|
||||
[].forEach.call(cities, function(option) {
|
||||
if (option.getAttribute('data-continent') != currentContinent) {
|
||||
option.className = 'hidden';
|
||||
} else {
|
||||
option.className = '';
|
||||
if (reset === true && first === true) {
|
||||
option.setAttribute('selected', 'selected');
|
||||
first = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
|
@ -26,6 +26,7 @@
|
|||
<script>function confirmDeleteLink() { var agree=confirm("Are you sure you want to delete this link ?"); if (agree) return true ; else return false ; }</script>
|
||||
{/if}
|
||||
|
||||
<script src="js/shaarli.js"></script>
|
||||
{loop="$plugins_footer.js_files"}
|
||||
<script src="{$value}#"></script>
|
||||
{/loop}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue