summaryrefslogtreecommitdiffstats
path: root/modules-available/locationinfo/templates
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/locationinfo/templates')
-rw-r--r--modules-available/locationinfo/templates/ajax-config-location.html14
-rw-r--r--modules-available/locationinfo/templates/ajax-config-server.html10
-rwxr-xr-xmodules-available/locationinfo/templates/frontend-default.html93
-rw-r--r--modules-available/locationinfo/templates/frontend-summary.html245
-rw-r--r--modules-available/locationinfo/templates/page-config-panel-default.html95
-rw-r--r--modules-available/locationinfo/templates/page-config-panel-summary.html71
-rw-r--r--modules-available/locationinfo/templates/page-config-panel-url.html25
-rw-r--r--modules-available/locationinfo/templates/page-locations.html14
-rw-r--r--modules-available/locationinfo/templates/page-panels.html55
-rw-r--r--modules-available/locationinfo/templates/page-servers.html103
-rw-r--r--modules-available/locationinfo/templates/page-tabs.html6
-rw-r--r--modules-available/locationinfo/templates/server-prop-bool.html6
-rw-r--r--modules-available/locationinfo/templates/server-prop-dropdown.html6
-rw-r--r--modules-available/locationinfo/templates/server-prop-generic.html6
14 files changed, 452 insertions, 297 deletions
diff --git a/modules-available/locationinfo/templates/ajax-config-location.html b/modules-available/locationinfo/templates/ajax-config-location.html
index b42ff98d..102a6ea4 100644
--- a/modules-available/locationinfo/templates/ajax-config-location.html
+++ b/modules-available/locationinfo/templates/ajax-config-location.html
@@ -110,9 +110,9 @@
</select>
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_serverTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_serverTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
<div class="row">
@@ -124,9 +124,9 @@
</div>
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_recursiveSetTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_recursiveSetTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
<div class="row">
@@ -137,9 +137,9 @@
<input class="form-control" name="serverlocationid" id="serverlocationid" value="{{serverlocationid}}">
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_roomIdTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_roomIdTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
@@ -170,7 +170,7 @@
setTimepicker($('#settings-outer').find('.timepicker2'));
- $('a.helptext').tooltip();
+ $('p.helptext').tooltip();
$('#new-openingtime').click(function (e) {
e.preventDefault();
diff --git a/modules-available/locationinfo/templates/ajax-config-server.html b/modules-available/locationinfo/templates/ajax-config-server.html
index 940bc55a..8c2cb3ba 100644
--- a/modules-available/locationinfo/templates/ajax-config-server.html
+++ b/modules-available/locationinfo/templates/ajax-config-server.html
@@ -12,9 +12,9 @@
form="form-{{currentbackend}}">
</div>
<div class="col-md-2">
- <a class="btn btn-default" title="{{lang_nameTooltip}}">
+ <p class="btn btn-static" title="{{lang_nameTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -34,9 +34,9 @@
</select>
</div>
<div class="col-md-2">
- <a class="btn btn-default" id="help-type" title="{{lang_typeTooltip}}">
+ <p class="btn btn-static" id="help-type" title="{{lang_typeTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -92,7 +92,7 @@
currentBackend = value;
}
- $('a.btn[title]').tooltip();
+ $('p.btn[title]').tooltip();
$('#myModalSubmitButton').attr('form', 'form-' + currentBackend);
$('.settings-bs-switch').bootstrapSwitch({size:'small'});
diff --git a/modules-available/locationinfo/templates/frontend-default.html b/modules-available/locationinfo/templates/frontend-default.html
index e457f68d..cbb765d0 100755
--- a/modules-available/locationinfo/templates/frontend-default.html
+++ b/modules-available/locationinfo/templates/frontend-default.html
@@ -327,6 +327,7 @@ optional:
.wc-scrollable-grid {
transition: height 500ms;
background: rgba(0, 0, 0, 0);
+ overflow-y: hidden !important;
}
.wc-grid-timeslot-header,
@@ -351,6 +352,7 @@ optional:
<span data-tag="room">{{lang_room}}</span>
<span data-tag="closed">{{lang_closed}}</span>
<span data-tag="free">{{lang_free}}</span>
+ <span data-tag="for">{{lang_for}}</span>
<span data-tag="shortSun">{{lang_shortSun}}</span>
<span data-tag="shortMon">{{lang_shortMon}}</span>
<span data-tag="shortTue">{{lang_shortTue}}</span>
@@ -369,7 +371,6 @@ optional:
</div>
</body>
-<!--suppress RedundantIfStatementJS -->
<script type="text/javascript">
var rooms = {};
var lastRoomUpdate = 0;
@@ -619,6 +620,15 @@ optional:
generateProgressBar();
}
+ // Manually initialize mode 2, as initRoomLayout isn't called for this mode
+ if (room.config.mode === 2) {
+ var date = MyDate();
+ var now = date.getTime();
+ queryCalendars();
+ queryRooms();
+ lastCalendarUpdate = now;
+ lastRoomUpdate = now;
+ }
mainUpdateLoop();
setInterval(mainUpdateLoop, 10000);
setInterval(updateHeaders, globalConfig.eco ? 10000 : 1000);
@@ -736,7 +746,7 @@ optional:
timeslotHeight: 30,
daysToShow: daysToShow,
height: function () {
- if (room.config.mode === 1 && room.config.vertical && (!room.timetable || !room.timetable.length)) return 20;
+ // if (room.config.mode === 1 && room.config.vertical && (!room.timetable || !room.timetable.length)) return 20;
var height = $(window).height();
if (roomIds.length === 4) {
height /= 2;
@@ -771,7 +781,9 @@ optional:
timeSeparator: " - ",
startOnFirstDayOfWeek: false,
displayFreeBusys: true,
- defaultFreeBusy: {free: false}
+ defaultFreeBusy: {free: false},
+ allowCalEventOverlap: true,
+ overlapEventsSeparate: true
});
}
@@ -919,7 +931,7 @@ optional:
const SEVEN_DAYS = 7 * 86400 * 1000;
/**
- * applays new calendar data to the calendar plugin and also saves it to the room object
+ * applies new calendar data to the calendar plugin and also saves it to the room object
* @param {Array} json Calendar data
* @param room Room Object
*/
@@ -946,9 +958,18 @@ optional:
console.log('Notice: Calendar has no current events for ' + room.name);
}
try {
+ for (var i = json.length - 1; i > 0; i--) {
+ // if title, start and end are the same, "merge" two events by removing one of them
+ if (json[i].title === json[i-1].title && json[i].start === json[i-1].start && json[i].end === json[i-1].end) {
+ json.splice(i, 1);
+ }
+ }
room.timetable = json;
+ for (var property in room.timetable) {
+ room.timetable[property].start = cleanDate(room.timetable[property].start);
+ room.timetable[property].end = cleanDate(room.timetable[property].end);
+ }
if (room.config.mode !== 3) {
- // TODO: Check if they're the same
var cal = room.$.calendar;
cal.weekCalendar('option', 'data', {events: json});
cal.weekCalendar("refresh");
@@ -968,6 +989,27 @@ optional:
}
}
+ function cleanDate(d) {
+ if (typeof d === 'string') {
+ // if is numeric
+ if (!isNaN(Number(d))) {
+ return cleanDate(parseInt(d, 10));
+ }
+
+ // this is a human readable date
+ if (d[d.length - 1] !== 'Z') d += 'Z';
+ var o = new Date(d);
+ o.setTime(o.getTime() + (o.getTimezoneOffset() * 60 * 1000));
+ return o;
+ }
+
+ if (typeof d === 'number') {
+ return new Date(d);
+ }
+
+ return d;
+ }
+
/**
* scales calendar, called once on create and on window resize
* @param room Room Object
@@ -983,7 +1025,7 @@ optional:
if (room.config.scaledaysauto) {
var result = ($cal.weekCalendar("option", "daysToShow") * columnWidth) / 130;
- result = parseInt(Math.min(Math.max(Math.abs(result), 1), 7));
+ result = Math.min(Math.max(Math.abs(result), 1), 7);
if (result !== $cal.weekCalendar("option", "daysToShow")) {
$cal.weekCalendar("option", "daysToShow", result);
columnWidth = $cal.find(".wc-day-1").width();
@@ -1107,14 +1149,13 @@ optional:
/**
* Sets the free PCs number in the right corner and updates the square color accordingly
* @param room Room
- * @param seats Number of free PC's in the room
*/
function SetFreeSeats(room) {
- room.$.seatsCounter.text(room.freePcs >= 0 ? room.freePcs : '');
+ // if room has no allowed value, set text in the box to -
+ room.$.seatsCounter.text(room.freePcs >= 0 ? room.freePcs : '\u2014');
+ room.$.seatsCounter.data('state', JSON.stringify(room.state));
if (room.freePcs > 0 && room.state && room.state.free) {
- room.$.seatsBackground.css('background-color', '#250');
- } else if (room.freePcs === -1) {
- room.$.seatsBackground.css('background-color', 'red');
+ room.$.seatsBackground.css('background-color', '#250');
} else {
room.$.seatsBackground.css('background-color', 'red');
}
@@ -1134,26 +1175,23 @@ optional:
var seats = room.freePcs;
if (tmp.state === 'closed' || tmp.state === 'CalendarEvent' || tmp.state === 'Free') {
newTime = GetTimeDiferenceAsString(tmp.end, MyDate(), globalConfig);
- } else if (!same) {
- newTime = '';
}
if (tmp.state === "closed") {
if (!same) newText = t("closed");
} else if (tmp.state === "CalendarEvent") {
if (!same) newText = tmp.title;
- seats = -1;
- } else if (tmp.state === "Free") {
- if (!same) newText = t("free");
- } else if (tmp.state === "FreeNoEnd") {
+ // whilst event is running set freePcs to -, hopefully not breaking anything else with this
+ room.freePcs = "-";
+ } else if (tmp.state === "Free" || tmp.state === "FreeNoEnd") {
if (!same) newText = t("free");
}
if (newText !== false) {
room.$.currentEvent.text(newText);
}
if (newTime !== false) {
- room.$.currentRemain.text(newTime);
+ room.$.currentRemain.text(t("for") + " " +newTime);
}
- if (room.lastFreeSeats !== seats) {
+ if (room.lastFreeSeats !== seats || !same) {
SetFreeSeats(room);
room.lastFreeSeats = seats;
}
@@ -1167,11 +1205,10 @@ optional:
function ComputeCurrentState(room) {
if (!IsOpen(MyDate(), room)) {
room.state = {state: "closed", end: GetNextOpening(room), title: "", next: ""};
-
return;
}
- var closing = GetNextClosing(room);
+ var closing = GetNextClosing(room);
var event = getNextEvent(room.timetable);
// no event and no closing
@@ -1224,7 +1261,7 @@ optional:
console.log('getNextEvent called with something not array: ' + typeof(calEvents));
return null;
}
- var event;
+ var event = null;
var now = MyDate();
for (var i = 0; i < calEvents.length; i++) {
//event is now active
@@ -1489,8 +1526,14 @@ optional:
for (var i = 0; i < update.length; i++) {
var $div = $("#pc_" + room.id + "_" + update[i].id);
// Pc free
- if (update[i].pcState === "IDLE" || update[i].pcState === "OFFLINE" || update[i].pcState === "STANDBY") {
- freePcs++;
+ if (room.config.roomplanner === true) {
+ if ((update[i].pcState === "IDLE" || update[i].pcState === "OFFLINE" || update[i].pcState === "STANDBY") && !isNaN(update[i].x) && !isNaN(update[i].y)) {
+ freePcs++;
+ }
+ } else {
+ if ((update[i].pcState === "IDLE" || update[i].pcState === "OFFLINE" || update[i].pcState === "STANDBY")) {
+ freePcs++;
+ }
}
$div.removeClass('BROKEN OFFLINE IDLE OCCUPIED STANDBY'.replace(update[i].pcState, '')).addClass(update[i].pcState);
@@ -1586,7 +1629,7 @@ optional:
/**
* Function for translation
- * @param toTranslate key which we wan't to translate
+ * @param toTranslate key which we want to translate
* @returns r translated string
*/
function t(toTranslate) {
diff --git a/modules-available/locationinfo/templates/frontend-summary.html b/modules-available/locationinfo/templates/frontend-summary.html
index 4105dd16..ae089da5 100644
--- a/modules-available/locationinfo/templates/frontend-summary.html
+++ b/modules-available/locationinfo/templates/frontend-summary.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<html lang="de">
+<html lang="{{language}}">
<meta name="viewport" content="width=device-width, initial-scale=1.0" charset="utf-8">
<head>
<script type='text/javascript' src='{{dirprefix}}script/jquery.js'></script>
@@ -63,7 +63,7 @@
}
.pc-idle, .pc-occupied, .pc-offline, .pc-broken, .pc-standby {
- padding: 2px 1px;
+ padding: 2px 0px;
text-align: center;
font-size: 90%;
font-weight: 800;
@@ -82,7 +82,8 @@
}
.pc-offline {
- background-color: darkgrey;
+ background-color: black;
+ color: white;
}
.pc-standby {
@@ -91,8 +92,7 @@
.pc-broken {
- background-color: black;
- color: white;
+ background-color: darkgrey;
border-radius: 0px 3px 3px 0px;
}
@@ -108,6 +108,10 @@
border-radius: 1px;
}
+ #i18n {
+ display: none;
+ }
+
</style>
<script type='text/javascript'>
@@ -116,6 +120,7 @@
var startdate;
var roomidsString = "";
var config = {{{config}}};
+ var lastPanelUpdate = 0;
$(document).ready(function () {
init();
@@ -139,6 +144,7 @@
SetUpDate(time);
generateLayout(config.tree);
update();
+ setInterval(update, 10000);
}
function SetUpDate(d) {
@@ -165,7 +171,7 @@
*/
function generateObject(json, myParent, outermost) {
var obj;
- if (!json.children || json.children.length == 0) {
+ if (!json.children || json.children.length === 0) {
obj = generateChild(myParent, json.locationid, json.locationname, outermost);
} else {
obj = generateParent(myParent, json.locationid, json.locationname, outermost);
@@ -178,59 +184,24 @@
}
/**
- * Helper function to generate id string used in query functions
- * @param list A string, wicht contains ids or not(for now)
- * @param id An ID which should be added to the list
+ * Main Update loop, this loop runs every 10 seconds
*/
- function addIdToUpdateList(list, id) {
- if (list == "") {
- list += id;
- } else {
- list += ("," + id);
- }
- return list;
- }
-
-
- const ROOMUPDATE_MS = 2*60*1000;
- const CALUPDATE_MS = 20*60*1000;
- var timeout = null;
-
function update() {
- var calendarUpdateIds = "";
- var rommUpdateIds = "";
- var count = 0;
- var nextUpdate = 15000;
- var property;
- // TODO: Only query a few rooms is not possible with the new api stuff ...
- for (property in rooms) {
- if (rooms[property].lastCalendarUpdate === null || rooms[property].lastCalendarUpdate + CALUPDATE_MS < MyDate().getTime()) {
- // TODO: NOT NECESSARY ANYMORE?!
- calendarUpdateIds = addIdToUpdateList(calendarUpdateIds, rooms[property].id);
- count++;
- rooms[property].lastCalendarUpdate = MyDate().getTime();
- }
- if (rooms[property].lastRoomUpdate === null || rooms[property].lastRoomUpdate + ROOMUPDATE_MS < MyDate().getTime()) {
- // TODO: NOT NECESSARY ANYMORE?!
- rommUpdateIds = addIdToUpdateList(rommUpdateIds, rooms[property].id);
- count++;
- rooms[property].lastRoomUpdate = MyDate().getTime();
- }
- // TODO if (count > 7) break;
- }
- if (calendarUpdateIds !== "") {
- queryCalendars();
- nextUpdate = 1000;
- }
- if (rommUpdateIds !== "") {
+ var date = MyDate();
+ var now = date.getTime();
+ if (lastPanelUpdate + (config.panelupdate * 1000) < now) {
+ // Set Roomupdate Interval has passed, update.
queryRooms();
- nextUpdate = 1000;
- }
- if (nextUpdate !== 1000) {
+ queryCalendars();
+ lastPanelUpdate = now;
+ for (var property in rooms) {
+ rooms[property].lastCalendarUpdate = now;
+ rooms[property].lastRoomUpdate = now;
+ }
+ } else {
+ // Set Roomupdate Interval has NOT passed, check if panel was changed since last call and reload if true.
queryPanelChange();
}
- clearTimeout(timeout);
- setTimeout(update, nextUpdate);
}
function cleanDate(d) {
@@ -283,7 +254,6 @@
cache: false,
timeout: 30000,
success: function (result) {
- var l = result.length;
if (result[0] == null) {
console.log("Error: Backend reported null back for RoomUpdate, this might happend if the room isn't" +
"configurated.");
@@ -309,17 +279,16 @@
var state = room.getState();
if (state.state == "CalendarEvent") {
- updateCourseText(room.id, state.titel);
+ updateCourseText(room.id, state.title);
updateCoursTimer(room.id, GetTimeDiferenceAsString(state.end, MyDate()));
} else if (state.state == "Free") {
- updateCourseText(room.id, "Frei");
+ updateCourseText(room.id, t("free"));
updateCoursTimer(room.id, GetTimeDiferenceAsString(state.end, MyDate()));
} else if (state.state == "FreeNoEnd") {
- updateCourseText(room.id, "Frei");
+ updateCourseText(room.id, t("free"));
updateCoursTimer(room.id, "");
- }
- else if (state.state == "closed") {
- updateCourseText(room.id, "Geschlossen");
+ } else if (state.state == "closed") {
+ updateCourseText(room.id, t("closed"));
updateCoursTimer(room.id, "");
}
}
@@ -331,7 +300,7 @@
function updatePcStates(json) {
var l = json.length;
for (var i = 0; i < l; i++) {
- updateRoomUsage(json[i].id, json[i].idle, json[i].occupied, json[i].offline, json[i].broken, json[i].standby)
+ updateRoomUsage(json[i].id, json[i].idle, json[i].occupied, json[i].offline, json[i].broken, json[i].standby);
}
}
@@ -428,109 +397,86 @@
/**
* computes state of a room, states are:
- * closed, FreeNoEnd, Free, ClaendarEvent.
- * @param Room Object
+ * closed, FreeNoEnd, Free, CalendarEvent.
+ * @param room Object
*/
function ComputeCurrentState(room) {
- if (room.lastRoomUpdate === null) {
- room.state = {state: 'unknown'};
+ if (!IsOpen(MyDate(), room)) {
+ room.state = {state: "closed", end: GetNextOpening(room), title: "", next: ""};
return;
}
- if (!IsOpenNow(room)) {
- room.state = {state: "closed", end: GetNextOpening(room), titel: "", next: ""};
- return;
- }
- var closing = GetNextClosing(room);
+ console.log("Timetable", room.id, room.timetable);
+ var closing = GetNextClosing(room);
var event = getNextEvent(room.timetable);
+
+ console.log("Event", room.id, event);
+
// no event and no closing
- if (closing == null && event == null) {
- room.state = {state: "FreeNoEnd", end: "", titel: "", next: ""};
+ if (!closing && !event) {
+ room.state = {state: "FreeNoEnd", end: "", title: "", next: "", free: true};
return;
}
// no event so closing is next
- if (event == null) {
- room.state = {state: "Free", end: closing, titel: "", next: "closing"};
+ if (!event) {
+ room.state = {state: "Free", end: closing, title: "", next: "closing", free: true};
return;
}
// event is at the moment
- if ((closing == null || event.start.getTime() < closing.getTime()) && event.start.getTime() < new MyDate()) {
- room.state = {state: "CalendarEvent", end: event.end, titel: event.title, next: ""};
+ if ((!closing || event.start.getTime() < closing.getTime()) && event.start.getTime() < MyDate()) {
+ room.state = {
+ state: "CalendarEvent",
+ end: event.end,
+ title: event.title,
+ next: ""
+ };
+ console.log("CalendarEvent", room.id, room.state);
return;
}
// no closing so event is next
- if (closing == null) {
- room.state = {state: "Free", end: event.start, titel: "", next: "event"};
+ if (!closing) {
+ room.state = {state: "Free", end: event.start, title: "", next: "event", free: true};
return;
}
// event sooner then closing
if (event.start.getTime() < closing) {
- room.state = {state: "Free", end: event.start, titel: "", next: "event"};
- } else if (event.start.getTime() > closing) {
- room.state = {state: "Free", end: closing, titel: "", next: "closing"};
- }
- }
-
- /**
- * checks if a room is open
- * @param room Room object
- * @returns bool for open or not
- */
- function IsOpenNow(room) {
- var now = new MyDate();
- if (room.openingTimes == null) {
-
- // changes from falls needs testing
- return true;
+ room.state = {state: "Free", end: event.start, title: "", next: "event", free: true};
+ } else {
+ room.state = {state: "Free", end: closing, title: "", next: "closing", free: true};
}
- var tmp = room.openingTimes[now.getDay()];
- if (tmp == null) {
- return false;
- }
- for (var i = 0; i < tmp.length; i++) {
- var openDate = new MyDate();
- openDate.setHours(tmp[i].HourOpen);
- openDate.setMinutes(tmp[i].MinutesOpen);
- var closeDate = new MyDate();
- closeDate.setHours(tmp[i].HourClose);
- closeDate.setMinutes(tmp[i].MinutesClose);
- if (openDate < now && closeDate > now) {
- return true;
- }
- }
- return false;
}
/**
* returns next event from a given json of events
- * @param json Json which contains the calendar data.
- * @returns event next Carlendar Event
+ * @param calEvents Json which contains the calendar data.
+ * @returns event next Calendar Event
*/
- function getNextEvent(json) {
- if (json == null) {
- return;
- }
- var event;
- var now = new MyDate();
- for (var i = 0; i < json.length; i++) {
+ function getNextEvent(calEvents) {
+ if (!calEvents) return null;
+ if (calEvents.constructor !== Array) {
+ console.log('getNextEvent called with something not array: ' + typeof(calEvents));
+ return null;
+ }
+ var event = null;
+ var now = MyDate();
+ for (var i = 0; i < calEvents.length; i++) {
//event is now active
- if (json[i].start.getTime() < now.getTime() && json[i].end.getTime() > now.getTime()) {
- return json[i];
+ if (calEvents[i].start.getTime() < now.getTime() && calEvents[i].end.getTime() > now.getTime()) {
+ return calEvents[i];
}
//first element to consider
- if (event == null) {
- if (json[i].start.getTime() > now.getTime()) {
- event = json[i];
+ if (!event) {
+ if (calEvents[i].start.getTime() > now.getTime()) {
+ event = calEvents[i];
}
- }
- if (json[i].start.getTime() > now.getTime() && event.start.getTime() > json[i].start.getTime()) {
- event = json[i];
+ } else if (calEvents[i].start.getTime() > now.getTime() && event.start.getTime() > calEvents[i].start.getTime()) {
+ event = calEvents[i];
}
}
return event;
@@ -658,7 +604,11 @@
// TODO: Add seconds again with a better update rate.
var time_split = time.split(":");
if (time != "") {
- $("#div_Time_" + id).text(time_split[0] + ":" + time_split[1]);
+ if (time_split[0] > 0) {
+ $("#div_Time_" + id).text(t("for") + " " + time_split[0] + "h " + time_split[1]+"min");
+ } else {
+ $("#div_Time_" + id).text(t("for") + " " + time_split[1]+"min");
+ }
} else {
$("#div_Time_" + id).text(time);
}
@@ -791,9 +741,44 @@
})
}
+ /**
+ * Function for translation
+ * @param toTranslate key which we want to translate
+ * @returns r translated string
+ */
+ function t(toTranslate) {
+ if (tCache[toTranslate])
+ return tCache[toTranslate];
+ var r = $('#i18n').find('[data-tag="' + toTranslate + '"]');
+ return tCache[toTranslate] = (r.length === 0 ? toTranslate : r.text());
+ }
+ var tCache = {};
+
</script>
</head>
<body>
<div id="main"></div>
+
+<div id="i18n">
+ <span data-tag="room">{{lang_room}}</span>
+ <span data-tag="closed">{{lang_closed}}</span>
+ <span data-tag="free">{{lang_free}}</span>
+ <span data-tag="for">{{lang_for}}</span>
+ <span data-tag="shortSun">{{lang_shortSun}}</span>
+ <span data-tag="shortMon">{{lang_shortMon}}</span>
+ <span data-tag="shortTue">{{lang_shortTue}}</span>
+ <span data-tag="shortWed">{{lang_shortWed}}</span>
+ <span data-tag="shortThu">{{lang_shortThu}}</span>
+ <span data-tag="shortFri">{{lang_shortFri}}</span>
+ <span data-tag="shortSat">{{lang_shortSat}}</span>
+ <span data-tag="longSun">{{lang_longSun}}</span>
+ <span data-tag="longMon">{{lang_longMon}}</span>
+ <span data-tag="longTue">{{lang_longTue}}</span>
+ <span data-tag="longWed">{{lang_longWed}}</span>
+ <span data-tag="longThu">{{lang_longThu}}</span>
+ <span data-tag="longFri">{{lang_longFri}}</span>
+ <span data-tag="longSat">{{lang_longSat}}</span>
+ <span data-tag="to">{{lang_to}}</span>
+</div>
</body>
</html>
diff --git a/modules-available/locationinfo/templates/page-config-panel-default.html b/modules-available/locationinfo/templates/page-config-panel-default.html
index b55e3d4d..116c2e11 100644
--- a/modules-available/locationinfo/templates/page-config-panel-default.html
+++ b/modules-available/locationinfo/templates/page-config-panel-default.html
@@ -28,9 +28,9 @@
<input class="form-control" name="name" id="panel-title" type="text" value="{{panelname}}">
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_displayNameTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_displayNameTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -48,9 +48,9 @@
</select>
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_languageTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_languageTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -69,9 +69,9 @@
</select>
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_modeTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_modeTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -85,9 +85,9 @@
<input id="input-eco" type="checkbox" name="eco" {{eco_checked}}>
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_ecoTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_ecoTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -101,9 +101,25 @@
<input id="input-prettytime" type="checkbox" name="prettytime" {{prettytime_checked}}>
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_prettytimeTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_prettytimeTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
+ </div>
+ </div>
+ </div>
+
+ <div class="list-group-item">
+ <div class="row">
+ <div class="col-sm-3">
+ <label for="input-roomplanner">{{lang_useRoomplanner}}</label>
+ </div>
+ <div class="col-sm-7">
+ <input id="input-roomplanner" type="checkbox" name="roomplanner" {{roomplanner_checked}}>
+ </div>
+ <div class="col-sm-2">
+ <p class="btn btn-static helptext" title="{{lang_roomplannerTooltip}}">
+ <span class="glyphicon glyphicon-question-sign"></span>
+ </p>
</div>
</div>
</div>
@@ -128,9 +144,9 @@
max="1440" value="{{calupdate}}" required>
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_calupdateTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_calupdateTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -145,9 +161,9 @@
max="86400" value="{{roomupdate}}" required>
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_roomupdateTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_roomupdateTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -177,9 +193,9 @@
<input id="input-vertical" type="checkbox" name="vertical" {{vertical_checked}}>
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_verticalTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_verticalTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -193,9 +209,9 @@
<input id="scaledaysauto" type="checkbox" name="scaledaysauto" {{scaledaysauto_checked}}>
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_autoscaleTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_autoscaleTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -217,9 +233,9 @@
</select>
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_daysToShowTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_daysToShowTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -238,9 +254,9 @@
</select>
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_rotationTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_rotationTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -255,9 +271,9 @@
<input id="input-scale" name="scale" type="range" step="1" min="10" max="90" value="{{scale}}">
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_scaleTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_scaleTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -272,9 +288,9 @@
<input id="input-switchtime" name="switchtime" type="range" step="1" min="1" max="120" value="{{switchtime}}">
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_switchTimeTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_switchTimeTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -293,7 +309,7 @@
</ul>
<div class="dropdown pull-right">
- <button type="button" class="btn btn-success dropdown-toggle" data-toggle="dropdown">
+ <button id="addLocDdBtn" type="button" class="btn btn-success dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-plus"></span>
</button>
<ul class="dropdown-menu" id="location-list">
@@ -309,8 +325,10 @@
</div>
</div>
- <button type="submit" class="btn btn-primary">{{lang_save}}</button>
- <a href="?do=locationinfo&amp;show=panels" class="btn btn-default">{{lang_cancel}}</a>
+ <div class="text-right">
+ <a href="?do=locationinfo&amp;show=panels" class="btn btn-default">{{lang_cancel}}</a>
+ <button type="submit" class="btn btn-primary">{{lang_save}}</button>
+ </div>
</form>
<div class="modal fade" id="no-locations-message" tabindex="-1" role="dialog">
@@ -336,9 +354,10 @@ document.addEventListener("DOMContentLoaded", function () {
var $selLocs = $('#selected-locations');
var $locList = $('#location-list');
var $locInput = $('#locationids');
+ var $addLocDbBtn = $('#addLocDdBtn');
// Initialize fancy tooltips
- $('a.helptext').tooltip();
+ $('p.helptext').tooltip();
// Add listener to range sliders so their label can be updated
$('input[type="range"]').change(function () {
$(this).siblings().find('.range-display').text($(this).val());
@@ -372,6 +391,7 @@ document.addEventListener("DOMContentLoaded", function () {
// Adding/removing locations
$locList.find('a').click(function(ev) {
ev.preventDefault();
+ ev.stopPropagation();
var $this = $(this);
var name = $this.find('.name').text();
var id = $this.data('lid');
@@ -388,13 +408,24 @@ document.addEventListener("DOMContentLoaded", function () {
function addLocation(id, name) {
$selLocs.find('li[data-lid="' + id + '"]').remove();
- var delButton = $('<button class="btn btn-danger btn-xs" type="button">').append($('<span class="glyphicon glyphicon-remove">')).click(delParent);
- $selLocs.append($('<li>').attr('data-lid', id).text(name).prepend(delButton));
+ var delButton = $('<button style="margin-right: 5px;" class="btn btn-danger btn-xs" type="button">').append($('<span class="glyphicon glyphicon-remove">')).click(delParent);
+ $selLocs.append($('<li style="margin-top: 5px;">').attr('data-lid', id).text(name).prepend(delButton));
+
+ if ($selLocs.find('li').length >= 4) {
+ $addLocDbBtn.prop("disabled",true);
+ var $addLocBtnParent = $addLocDbBtn.parent();
+ if ($addLocBtnParent.hasClass('open')) {
+ $addLocBtnParent.removeClass('open');
+ }
+ }
}
function delParent() {
$(this).parent().remove();
serializeLocs();
+ if ($selLocs.find('li').length < 4) {
+ $addLocDbBtn.prop("disabled",false);
+ }
}
function serializeLocs() {
diff --git a/modules-available/locationinfo/templates/page-config-panel-summary.html b/modules-available/locationinfo/templates/page-config-panel-summary.html
index 2a968fc2..a77719b8 100644
--- a/modules-available/locationinfo/templates/page-config-panel-summary.html
+++ b/modules-available/locationinfo/templates/page-config-panel-summary.html
@@ -28,9 +28,9 @@
<input class="form-control" name="name" id="panel-title" type="text" value="{{panelname}}">
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_displayNameTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_displayNameTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -48,9 +48,9 @@
</select>
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_languageTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_languageTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -64,9 +64,25 @@
<input id="input-eco" type="checkbox" name="eco" {{eco_checked}}>
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_ecoTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_ecoTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
+ </div>
+ </div>
+ </div>
+
+ <div class="list-group-item">
+ <div class="row">
+ <div class="col-sm-3">
+ <label for="input-roomplanner">{{lang_useRoomplanner}}</label>
+ </div>
+ <div class="col-sm-7">
+ <input id="input-roomplanner" type="checkbox" name="roomplanner" {{roomplanner_checked}}>
+ </div>
+ <div class="col-sm-2">
+ <p class="btn btn-static helptext" title="{{lang_roomplannerTooltip}}">
+ <span class="glyphicon glyphicon-question-sign"></span>
+ </p>
</div>
</div>
</div>
@@ -91,6 +107,34 @@
</div>
</div>
</div>
+
+ <div class="col-md-6">
+ <div class="panel panel-default">
+ <div class="panel-heading">{{lang_updateRates}}</div>
+ <div class="panel-body">
+ <div class="list-group">
+
+ <div class="list-group-item">
+ <div class="row">
+ <div class="col-sm-3">
+ <label for="form-panelupdate">{{lang_panel}}</label>
+ </div>
+ <div class="col-sm-7">
+ <input class="form-control" name="panelupdate" type="number" min="15" id="form-panelupdate"
+ max="86400" value="{{panelupdate}}" required>
+ </div>
+ <div class="col-sm-2">
+ <p class="btn btn-static helptext" title="{{lang_panelupdateTooltip}}">
+ <span class="glyphicon glyphicon-question-sign"></span>
+ </p>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ </div>
+ </div>
+ </div>
</div>
<div class="modify-inputs">
@@ -101,7 +145,7 @@
<div class="panel-heading">{{lang_locations}}</div>
<div class="panel-body">
<input type="hidden" name="locationids" value="{{locationids}}" id="locationids">
- <p>{{lang_fourLocsHint}}</p>
+ <p>{{lang_locsHint}}</p>
<ul id="selected-locations" class="list-unstyled">
</ul>
@@ -122,8 +166,10 @@
</div>
</div>
- <button type="submit" class="btn btn-primary">{{lang_save}}</button>
- <a href="?do=locationinfo&amp;show=panels" class="btn btn-default">{{lang_cancel}}</a>
+ <div class="text-right">
+ <a href="?do=locationinfo&amp;show=panels" class="btn btn-default">{{lang_cancel}}</a>
+ <button type="submit" class="btn btn-primary">{{lang_save}}</button>
+ </div>
</form>
<div class="modal fade" id="no-locations-message" tabindex="-1" role="dialog">
@@ -151,7 +197,7 @@ document.addEventListener("DOMContentLoaded", function () {
var $locInput = $('#locationids');
// Initialize fancy tooltips
- $('a.helptext').tooltip();
+ $('p.helptext').tooltip();
// Add listener to range sliders so their label can be updated
$('input[type="range"]').change(function () {
$(this).siblings().find('.range-display').text($(this).val());
@@ -171,6 +217,7 @@ document.addEventListener("DOMContentLoaded", function () {
// Adding/removing locations
$locList.find('a').click(function(ev) {
ev.preventDefault();
+ ev.stopPropagation();
var $this = $(this);
var name = $this.find('.name').text();
var id = $this.data('lid');
@@ -187,8 +234,8 @@ document.addEventListener("DOMContentLoaded", function () {
function addLocation(id, name) {
$selLocs.find('li[data-lid="' + id + '"]').remove();
- var delButton = $('<button class="btn btn-danger btn-xs" type="button">').append($('<span class="glyphicon glyphicon-remove">')).click(delParent);
- $selLocs.append($('<li>').attr('data-lid', id).text(name).prepend(delButton));
+ var delButton = $('<button style="margin-right: 5px;" class="btn btn-danger btn-xs" type="button">').append($('<span class="glyphicon glyphicon-remove">')).click(delParent);
+ $selLocs.append($('<li style="margin-top: 5px;">').attr('data-lid', id).text(name).prepend(delButton));
}
function delParent() {
diff --git a/modules-available/locationinfo/templates/page-config-panel-url.html b/modules-available/locationinfo/templates/page-config-panel-url.html
index cca81509..1187c19f 100644
--- a/modules-available/locationinfo/templates/page-config-panel-url.html
+++ b/modules-available/locationinfo/templates/page-config-panel-url.html
@@ -25,9 +25,9 @@
<input class="form-control" name="name" id="panel-title" type="text" value="{{panelname}}">
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_displayNameTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_displayNameTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -42,9 +42,9 @@
placeholder="http://www.bwlehrpool.de/" pattern=".*://.*" required>
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_urlTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_urlTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -61,9 +61,9 @@
</div>
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_ignoreSslTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_ignoreSslTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -77,9 +77,9 @@
<input class="form-control" id="input-reload" type="number" min="0" max="999" name="reloadminutes" pattern="\d*" value="{{reloadminutes}}">
</div>
<div class="col-sm-2">
- <a class="btn btn-default helptext" title="{{lang_reloadIntervalTooltip}}">
+ <p class="btn btn-static helptext" title="{{lang_reloadIntervalTooltip}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
</div>
</div>
</div>
@@ -87,14 +87,17 @@
</div>
</div>
</div>
-
- <button type="submit" class="btn btn-primary">{{lang_save}}</button>
- <a href="?do=locationinfo&amp;show=panels" class="btn btn-default">{{lang_cancel}}</a>
+ <div class="text-right">
+ <a href="?do=locationinfo&amp;show=panels" class="btn btn-default">{{lang_cancel}}</a>
+ <button type="submit" class="btn btn-primary">{{lang_save}}</button>
+ </div>
</form>
<script type="text/javascript"><!--
document.addEventListener("DOMContentLoaded", function () {
+ // Initialize fancy tooltips
+ $('p.helptext').tooltip();
});
diff --git a/modules-available/locationinfo/templates/page-locations.html b/modules-available/locationinfo/templates/page-locations.html
index b30ef2ed..c79cdfe8 100644
--- a/modules-available/locationinfo/templates/page-locations.html
+++ b/modules-available/locationinfo/templates/page-locations.html
@@ -8,7 +8,7 @@
<th>{{lang_locationName}}</th>
<th>{{lang_backend}}</th>
<th>{{lang_lastCalendarUpdate}}</th>
- <th>{{lang_openingtimes}}</th>
+ <th class="text-center slx-smallcol">{{lang_openingtimes}}</th>
</tr>
</thead>
@@ -17,20 +17,24 @@
<tr>
<td>
<div style="display:inline-block;width:{{depth}}em"></div>
+ {{#allowed}}
<a href="#" class="loc-name {{^depth}}slx-bold{{/depth}}" data-locationid="{{locationid}}">
+ {{/allowed}}
{{locationname}}
+ {{#allowed}}
<span class="glyphicon glyphicon-edit"></span>
</a>
+ {{/allowed}}
</td>
<td {{#backendMissing}}class="text-danger"{{/backendMissing}}>
{{backend}}
</td>
- <td>
+ <td class="text-center">
{{#backend}}
{{lastCalendarUpdate}}
{{/backend}}
</td>
- <td>
+ <td class="text-center">
<span class="glyphicon glyphicon-{{openingGlyph}}"></span>
</td>
</tr>
@@ -49,8 +53,8 @@
<div class="modal-header"><h2 id="location-modal-header"></h2></div>
<div class="modal-body"></div>
<div class="modal-footer">
+ <a class="btn btn-default" data-dismiss="modal">{{lang_close}}</a>
<button type="submit" class="btn btn-primary">{{lang_save}}</button>
- <a class="btn btn-primary" data-dismiss="modal">{{lang_close}}</a>
</div>
</form>
</div>
@@ -103,4 +107,4 @@ document.addEventListener("DOMContentLoaded", function () {
$('#settings-form').submit(submitLocationSettings);
});
-//--></script> \ No newline at end of file
+//--></script>
diff --git a/modules-available/locationinfo/templates/page-panels.html b/modules-available/locationinfo/templates/page-panels.html
index e17b6584..b30e7c87 100644
--- a/modules-available/locationinfo/templates/page-panels.html
+++ b/modules-available/locationinfo/templates/page-panels.html
@@ -9,16 +9,13 @@
<th>{{lang_panelType}}</th>
<th>{{lang_locations}}</th>
{{#hasRunmode}}
- <th class="slx-smallcol">{{lang_runmodeTHead}}</th>
+ <th class="text-center slx-smallcol">{{lang_runmodeTHead}}</th>
{{/hasRunmode}}
- <th class="slx-smallcol">{{lang_edit}}</th>
- <th class="slx-smallcol">{{lang_delete}}</th>
+ <th class="text-center slx-smallcol">{{lang_edit}}</th>
+ <th class="text-center slx-smallcol">{{lang_delete}}</th>
</tr>
</thead>
<tbody>
- <form method="post" action="?do=locationinfo" onsubmit="return confirm('{{lang_areYouSure}}')">
- <input type="hidden" name="token" value="{{token}}">
- <input type="hidden" name="action" value="deletePanel">
{{#panels}}
<tr>
<td>
@@ -33,26 +30,27 @@
{{#locationurl}}</a>{{/locationurl}}
</td>
{{#hasRunmode}}
- <td>
- <a class="btn btn-default btn-xs" href="?do=runmode&amp;module=locationinfo&amp;modeid={{paneluuid}}&amp;redirect=?do=locationinfo">
+ <td class="text-center" style="vertical-align: middle">
+ <a class="btn btn-default btn-xs {{runmode_disabled}}"
+ href="?do=runmode&amp;module=locationinfo&amp;modeid={{paneluuid}}&amp;redirect=?do=locationinfo">
<span class="glyphicon glyphicon-edit"></span>
</a>
{{assignedMachineCount}}
</td>
{{/hasRunmode}}
- <td>
- <a class="btn btn-default btn-xs" href="?do=locationinfo&amp;show=edit-panel&amp;uuid={{paneluuid}}">
+ <td class="text-center" style="vertical-align: middle">
+ <a class="btn btn-default btn-xs {{edit_disabled}}"
+ href="?do=locationinfo&amp;show=edit-panel&amp;uuid={{paneluuid}}">
<span class="glyphicon glyphicon-cog"></span>
</a>
</td>
- <td>
- <button type="submit" name="uuid" value="{{paneluuid}}" class="btn btn-danger btn-xs">
+ <td class="text-center" style="vertical-align: middle">
+ <button type="button" class="btn btn-xs btn-danger" data-toggle="modal" data-target="#deleteModal" onclick="deletePanel('{{paneluuid}}')" {{edit_disabled}}>
<span class="glyphicon glyphicon-trash"></span>
</button>
</td>
</tr>
{{/panels}}
- </form>
</tbody>
</table>
@@ -69,4 +67,33 @@
<span class="glyphicon glyphicon-plus"></span>
{{lang_urlPanel}}
</a>
-</div> \ No newline at end of file
+</div>
+
+<form method="post" action="?do=locationinfo">
+<input type="hidden" name="token" value="{{token}}">
+
+<div class ="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
+ <div class="modal-dialog" role="document">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+ <h4 class="modal-title" id="myModalLabel">{{lang_delete}}</h4>
+ </div>
+ <div class="modal-body">
+ <p>{{lang_deleteConfirmation}}</p>
+ </div>
+ <div class="modal-footer">
+ <input type="hidden" id="delete-panel-id" name="uuid" value="">
+ <button type="button" class="btn btn-default" data-dismiss="modal">{{lang_cancel}}</button>
+ <button type="submit" name="action" value="deletePanel" class="btn btn-danger"><span class="glyphicon glyphicon-trash"></span> {{lang_delete}}</button>
+ </div>
+ </div>
+ </div>
+</div>
+</form>
+
+<script>
+ function deletePanel(panelid) {
+ $("#delete-panel-id").val(panelid);
+ }
+</script> \ No newline at end of file
diff --git a/modules-available/locationinfo/templates/page-servers.html b/modules-available/locationinfo/templates/page-servers.html
index eefb1ed5..46a148ce 100644
--- a/modules-available/locationinfo/templates/page-servers.html
+++ b/modules-available/locationinfo/templates/page-servers.html
@@ -2,49 +2,67 @@
<p>{{lang_serverTableHints}}</p>
-<table class="table table-hover">
- <thead>
- <tr>
- <th width="1">{{lang_serverType}}</th>
- <th>{{lang_locationName}}</th>
- <th width="1"></th>
- <th width="1"></th>
- </tr>
- </thead>
- <tbody>
- {{#serverlist}}
- <form method="post" action="?do=locationinfo">
- <input type="hidden" name="token" value="{{token}}">
- <input type="hidden" name="serverid" value="{{serverid}}">
+<form method="post" action="?do=locationinfo">
+ <table class="table table-hover">
+ <thead>
<tr>
- <td nowrap>{{typename}}</td>
- <td nowrap>{{servername}}</td>
-
- <td align="center" nowrap>
- <button class="btn btn-xs {{^autherror}}btn-default{{/autherror}}{{#autherror}}btn-danger{{/autherror}}"
- data-server-edit="{{serverid}}" {{disabled}} type="button">
- <span class="glyphicon glyphicon-cog"></span>
- {{lang_edit}}
- </button>
- <button class="btn btn-xs btn-primary server-check" {{disabled}} name="action" value="checkConnection"
- type="submit">
- <span class="glyphicon glyphicon-refresh"></span>
- {{lang_checkConnection}}
- </button>
- </td>
- <td align="center" nowrap>
- <button class="btn btn-xs btn-danger server-delete" type="submit" name="action" value="deleteServer">
- <span class="glyphicon glyphicon-trash"></span>
- {{lang_delete}}
- </button>
- </td>
+ <th class="text-center slx-smallcol">{{lang_serverType}}</th>
+ <th>{{lang_locationName}}</th>
+ <th class="text-center slx-smallcol">{{lang_edit}}</th>
+ <th class="text-center slx-smallcol">{{lang_checkConnection}}</th>
+ <th class="text-center slx-smallcol">{{lang_delete}}</th>
</tr>
- </form>
- {{/serverlist}}
- </tbody>
-</table>
+ </thead>
+ <tbody>
+ {{#serverlist}}
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="serverid" value="{{serverid}}">
+ <tr>
+ <td nowrap>{{typename}}</td>
+ <td nowrap>{{servername}}</td>
+
+ <td class="text-center">
+ <button class="btn btn-xs {{^autherror}}btn-default{{/autherror}}{{#autherror}}btn-danger{{/autherror}}"
+ data-server-edit="{{serverid}}" {{disabled}} {{perms.backend.edit.disabled}} type="button">
+ <span class="glyphicon glyphicon-cog"></span>
+ </button>
+ </td>
+ <td class="text-center">
+ <button class="btn btn-xs btn-primary server-check" {{disabled}} {{perms.backend.check.disabled}}
+ name="action" value="checkConnection" type="submit">
+ <span class="glyphicon glyphicon-refresh"></span>
+ </button>
+ </td>
+ <td class="text-center">
+ <button type="button" class="btn btn-xs btn-danger" data-toggle="modal" data-target="#deleteModal" {{perms.backend.edit.disabled}}>
+ <span class="glyphicon glyphicon-trash"></span>
+ </button>
+ </td>
+ </tr>
+ {{/serverlist}}
+ </tbody>
+ </table>
+
+ <div class ="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
+ <div class="modal-dialog" role="document">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+ <h4 class="modal-title" id="myModalLabel">{{lang_delete}}</h4>
+ </div>
+ <div class="modal-body">
+ <p>{{lang_deleteConfirmation}}</p>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-default" data-dismiss="modal">{{lang_cancel}}</button>
+ <button type="submit" name="action" value="deleteServer" class="btn btn-danger"><span class="glyphicon glyphicon-trash"></span> {{lang_delete}}</button>
+ </div>
+ </div>
+ </div>
+ </div>
+</form>
-<div>
+<div class="text-right">
<button class="btn btn-sm btn-success" id="addServerButton" onclick="addServer()">
<span class="glyphicon glyphicon-plus"></span>
{{lang_addServer}}
@@ -53,17 +71,14 @@
<div class="modal fade" id="myModal" tabindex="-1" role="dialog">
<div class="modal-dialog">
-
<div class="modal-content">
<div class="modal-header" id="myModalHeader"></div>
<div class="modal-body" id="myModalBody"></div>
<div class="modal-footer">
+ <a class="btn btn-default" data-dismiss="modal">{{lang_close}}</a>
<button type="submit" id="myModalSubmitButton" class="btn btn-primary" form="">{{lang_save}}</button>
-
- <a class="btn btn-primary" data-dismiss="modal">{{lang_close}}</a>
</div>
</div>
-
</div>
</div>
diff --git a/modules-available/locationinfo/templates/page-tabs.html b/modules-available/locationinfo/templates/page-tabs.html
index ed3f01fd..743297e7 100644
--- a/modules-available/locationinfo/templates/page-tabs.html
+++ b/modules-available/locationinfo/templates/page-tabs.html
@@ -1,6 +1,6 @@
<ul class="nav nav-tabs">
- <li class="{{class-}}"><a href="?do=locationinfo">{{lang_panels}}</a></li>
- <li class="{{class-locations}}"><a href="?do=locationinfo&amp;show=locations">{{lang_locationSettings}}</a></li>
- <li class="{{class-backends}}"><a href="?do=locationinfo&amp;show=backends">{{lang_backends}}</a></li>
+ <li class="{{class-panels}} {{perms.panel.list.disabled}}"><a href="?do=locationinfo&show=panels">{{lang_panels}}</a></li>
+ <li class="{{class-locations}} {{perms.location.disabled}}"><a href="?do=locationinfo&amp;show=locations">{{lang_locationSettings}}</a></li>
+ <li class="{{class-backends}} {{perms.backend.disabled}}"><a href="?do=locationinfo&amp;show=backends">{{lang_backends}}</a></li>
</ul>
<br> \ No newline at end of file
diff --git a/modules-available/locationinfo/templates/server-prop-bool.html b/modules-available/locationinfo/templates/server-prop-bool.html
index f430d02c..bd9dcc64 100644
--- a/modules-available/locationinfo/templates/server-prop-bool.html
+++ b/modules-available/locationinfo/templates/server-prop-bool.html
@@ -7,10 +7,10 @@
</div>
<div class="col-md-2">
{{#helptext}}
- <a class="btn btn-default" title="{{helptext}}">
+ <p class="btn btn-static" title="{{helptext}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
{{/helptext}}
</div>
</div>
-</div> \ No newline at end of file
+</div>
diff --git a/modules-available/locationinfo/templates/server-prop-dropdown.html b/modules-available/locationinfo/templates/server-prop-dropdown.html
index 80667766..d1351551 100644
--- a/modules-available/locationinfo/templates/server-prop-dropdown.html
+++ b/modules-available/locationinfo/templates/server-prop-dropdown.html
@@ -10,10 +10,10 @@
</div>
<div class="col-md-2">
{{#helptext}}
- <a class="btn btn-default" title="{{helptext}}">
+ <p class="btn btn-static" title="{{helptext}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
{{/helptext}}
</div>
</div>
-</div> \ No newline at end of file
+</div>
diff --git a/modules-available/locationinfo/templates/server-prop-generic.html b/modules-available/locationinfo/templates/server-prop-generic.html
index 9e94c23d..23ff1e4e 100644
--- a/modules-available/locationinfo/templates/server-prop-generic.html
+++ b/modules-available/locationinfo/templates/server-prop-generic.html
@@ -7,10 +7,10 @@
</div>
<div class="col-md-2">
{{#helptext}}
- <a class="btn btn-default" title="{{helptext}}">
+ <p class="btn btn-static" title="{{helptext}}">
<span class="glyphicon glyphicon-question-sign"></span>
- </a>
+ </p>
{{/helptext}}
</div>
</div>
-</div> \ No newline at end of file
+</div>