Merge lp:~dangarner/xibo/server-162 into lp:xibo/1.7

Proposed by Dan Garner
Status: Merged
Approved by: Dan Garner
Approved revision: 384
Merged at revision: 336
Proposed branch: lp:~dangarner/xibo/server-162
Merge into: lp:xibo/1.7
Diff against target: 9040 lines (+4180/-1203)
101 files modified
client/dotNET/KeyStore.cs (+178/-0)
client/dotNET/MainForm.cs (+53/-39)
client/dotNET/OptionForm.Designer.cs (+76/-41)
client/dotNET/OptionForm.cs (+5/-1)
client/dotNET/Properties/Settings.Designer.cs (+24/-0)
client/dotNET/Properties/Settings.settings (+6/-0)
client/dotNET/XiboClient.csproj (+1/-0)
client/dotNET/app.config (+6/-0)
default.pot (+319/-288)
example_oauth/index.php (+239/-18)
example_oauth/nice-json.php (+73/-0)
example_oauth/test_files/test.csv (+6/-0)
server/3rdparty/simplepie/library/SimplePie/File.php (+4/-0)
server/3rdparty/simplepie/library/SimplePie/HTTP/Parser.php (+21/-0)
server/config/config.class.php (+3/-24)
server/install.php (+2/-2)
server/install/database/69.sql (+4/-0)
server/install/database/70.sql (+15/-0)
server/install/master/data.sql (+1/-1)
server/lib/app/kit.class.php (+5/-0)
server/lib/app/session.class.php (+1/-1)
server/lib/data/dataset.data.class.php (+165/-1)
server/lib/data/datasetcolumn.data.class.php (+88/-2)
server/lib/data/datasetdata.data.class.php (+177/-0)
server/lib/data/datasetgroupsecurity.data.class.php (+63/-2)
server/lib/data/file.data.class.php (+14/-0)
server/lib/data/layout.data.class.php (+17/-2)
server/lib/data/region.data.class.php (+59/-3)
server/lib/include.php (+7/-4)
server/lib/modules/module.class.php (+96/-64)
server/lib/oauth.inc.php (+1/-1)
server/lib/pages/admin.class.php (+1/-1)
server/lib/pages/campaign.class.php (+5/-5)
server/lib/pages/dataset.class.php (+33/-47)
server/lib/pages/display.class.php (+35/-6)
server/lib/pages/displaygroup.class.php (+37/-28)
server/lib/pages/fault.class.php (+3/-59)
server/lib/pages/group.class.php (+4/-4)
server/lib/pages/help.class.php (+3/-3)
server/lib/pages/index.class.php (+1/-1)
server/lib/pages/layout.class.php (+9/-6)
server/lib/pages/log.class.php (+45/-1)
server/lib/pages/module.class.php (+1/-1)
server/lib/pages/oauth.class.php (+1/-1)
server/lib/pages/resolution.class.php (+3/-3)
server/lib/pages/schedule.class.php (+91/-217)
server/lib/pages/sessions.class.php (+6/-4)
server/lib/pages/stats.class.php (+47/-7)
server/lib/pages/statusdashboard.class.php (+24/-18)
server/lib/pages/template.class.php (+3/-3)
server/lib/pages/timeline.class.php (+6/-6)
server/lib/pages/transition.class.php (+1/-1)
server/lib/pages/user.class.php (+12/-12)
server/lib/service/rest.class.php (+464/-8)
server/lib/service/restjson.class.php (+20/-16)
server/lib/service/xmdssoap.class.php (+15/-4)
server/locale/dbtranslate.php (+1/-0)
server/manual/content/admin/api_datasets.php (+615/-0)
server/manual/content/admin/api_library.php (+33/-15)
server/manual/content/admin/release_notes_1.6.1.php (+78/-0)
server/manual/content/admin/release_notes_1.6.2.php (+76/-0)
server/manual/content/routes.php (+3/-0)
server/manual/content/toc_developer_api.php (+1/-0)
server/manual/content/toc_developer_releasenotes.php (+2/-0)
server/manual/css/manual.css (+5/-0)
server/manual/template.php (+1/-1)
server/modules/datasetview.module.php (+23/-25)
server/modules/embedded.module.php (+27/-3)
server/modules/flash.module.php (+6/-21)
server/modules/genericfile.module.php (+6/-27)
server/modules/image.module.php (+6/-21)
server/modules/module_user_general.php (+42/-9)
server/modules/powerpoint.module.php (+18/-22)
server/modules/preview/HtmlTemplateForGetResource.html (+11/-4)
server/modules/preview/HtmlTemplateSimple.html (+30/-0)
server/modules/preview/html-preview.js (+7/-12)
server/modules/preview/vendor/jquery-1.11.1.min.js (+4/-0)
server/modules/preview/xibo-text-render.js (+55/-19)
server/modules/preview/xibo-webpage-render.js (+66/-0)
server/modules/text.module.php (+3/-2)
server/modules/ticker.module.php (+36/-8)
server/modules/video.module.php (+6/-21)
server/modules/webpage.module.php (+51/-12)
server/services.php (+0/-2)
server/theme/default/css/xibo.css (+12/-0)
server/theme/default/html/dataset_form_csv_import.php (+6/-4)
server/theme/default/html/display_page.php (+10/-1)
server/theme/default/html/displaygroup_form_display_assign.php (+2/-2)
server/theme/default/html/fault_page.php (+6/-6)
server/theme/default/html/layout_designer.php (+3/-0)
server/theme/default/html/log_form_display_last100.php (+47/-0)
server/theme/default/html/media_form_embedded_add.php (+6/-0)
server/theme/default/html/media_form_embedded_edit.php (+6/-0)
server/theme/default/html/media_form_ticker_edit.php (+8/-2)
server/theme/default/html/schedule_form_add_event.php (+96/-0)
server/theme/default/html/schedule_form_edit_event.php (+96/-0)
server/theme/default/html/schedule_form_schedule_now.php (+62/-0)
server/theme/default/html/status_dashboard.php (+3/-3)
server/theme/default/js/xibo-layout-designer.js (+1/-1)
server/theme/default/libraries/bootstrap/js/bootstrap-ckeditor-fix.js (+3/-2)
server/upgrade.php (+2/-2)
To merge this branch: bzr merge lp:~dangarner/xibo/server-162
Reviewer Review Type Date Requested Status
Xibo Maintainters Pending
Review via email: mp+226866@code.launchpad.net
To post a comment you must log in.
lp:~dangarner/xibo/server-162 updated
382. By Dan Garner

[cms] Bump version in install.

383. By Dan Garner

[cms] Bump version in include.php

384. By Dan Garner

[api] Disable errors in API.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added file 'client/dotNET/KeyStore.cs'
--- client/dotNET/KeyStore.cs 1970-01-01 00:00:00 +0000
+++ client/dotNET/KeyStore.cs 2014-07-15 15:37:37 +0000
@@ -0,0 +1,178 @@
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Runtime.InteropServices;
5using System.Text;
6using System.Windows.Forms;
7
8namespace XiboClient
9{
10 /// <summary>
11 /// The KeyStoreEventHandler is used by the KeyPress event of the KeyStore
12 /// class. It notifies listeners of a named key press.
13 /// </summary>
14 /// <param name="name">The name of the key.</param>
15 public delegate void KeyStoreEventHandler(string name);
16
17 class KeyStore : IMessageFilter
18 {
19 // Interop
20 [DllImport("user32.dll")]
21 static extern short GetKeyState(Keys key);
22
23 // Windows message constants
24 private const int WM_KEYDOWN = 0x100;
25 private const int WM_KEYUP = 0x101;
26
27 // The singleton instance
28 private static KeyStore s_instance = null;
29
30 // The modifier keys
31 private bool _shift = false;
32 private bool _control = false;
33
34 // The definitions
35 private Dictionary<Keys, string> _definitions;
36
37 // The KeyPressed Event
38 public event KeyStoreEventHandler KeyPress;
39
40 /// <summary>
41 /// Adds a key definition to the store.
42 /// </summary>
43 /// <param name="name">The name of the key.</param>
44 /// <param name="key">The key</param>
45 /// <param name="modifiers">The modifiers (shift, control)</param>
46 public void AddKeyDefinition(string name, Keys key, Keys modifiers)
47 {
48 Keys combined = key | modifiers;
49
50 _definitions[combined] = name;
51 }
52
53 /// <summary>
54 /// The filter message.
55 /// </summary>
56 public bool PreFilterMessage(ref Message m)
57 {
58 bool handled = false;
59 Keys key = Keys.None;
60
61 switch (m.Msg)
62 {
63 case WM_KEYUP:
64 key = (Keys)m.WParam;
65 handled = HandleModifier(key, false);
66 break;
67
68 case WM_KEYDOWN:
69 key = (Keys)m.WParam;
70 handled = HandleModifier(key, true);
71 if (false == handled)
72 {
73 // If one of the defined keys was pressed then we
74 // raise an event.
75 handled = HandleDefinedKey(key);
76 }
77 break;
78 }
79
80 return handled;
81 }
82
83 /// <summary>
84 /// Compares a key against the definitions, and raises an event
85 /// if there is a match.
86 /// </summary>
87 /// <param name="key">The key</param>
88 /// <returns>True if the key was one of the defined key combinations.</returns>
89 private bool HandleDefinedKey(Keys key)
90 {
91 bool handled = false;
92
93 Keys combined = key;
94 if (_shift) combined |= Keys.Shift;
95 if (_control) combined |= Keys.Control;
96
97 // If we have found a matching combination then we
98 // raise an event.
99 string name = null;
100 if (true == _definitions.TryGetValue(combined, out name))
101 {
102 OnKeyPress(name);
103
104 handled = true;
105 }
106 return handled;
107 }
108
109 /// <summary>
110 /// Attempt to handle a modifier key, and return a boolean indicating if a modifier key was
111 /// handled.
112 /// </summary>
113 /// <param name="key">The key</param>
114 /// <param name="isDown">True if the key is pressed; False if it is released.</param>
115 /// <returns>True if a modifier key was selected; False otherwise.</returns>
116 private bool HandleModifier(Keys key, bool isDown)
117 {
118 bool handled = false;
119
120 switch (key)
121 {
122 case Keys.RControlKey:
123 case Keys.ControlKey:
124 _control = isDown;
125 handled = true;
126 break;
127
128 case Keys.RShiftKey:
129 case Keys.ShiftKey:
130 _shift = isDown;
131 handled = true;
132 break;
133 }
134
135 return handled;
136 }
137
138 /// <summary>
139 /// Raises the KeyPress event.
140 /// </summary>
141 /// <param name="name">The name of the key.</param>
142 private void OnKeyPress(string name)
143 {
144 // Raise event
145 if (null != KeyPress) KeyPress(name);
146
147 // Check if modifier keys were released in the mean time.
148 _control =
149 -127 == GetKeyState(Keys.ControlKey) ||
150 -127 == GetKeyState(Keys.RControlKey);
151
152 _shift =
153 -127 == GetKeyState(Keys.ShiftKey) ||
154 -127 == GetKeyState(Keys.RShiftKey);
155
156 }
157
158 /// <summary>
159 /// Returns the singleton instance.
160 /// </summary>
161 public static KeyStore Instance
162 {
163 get
164 {
165 if (null == s_instance)
166 s_instance = new KeyStore();
167
168 return s_instance;
169 }
170 }
171
172 // The constructor is private because this is a singleton class.
173 private KeyStore()
174 {
175 _definitions = new Dictionary<Keys, string>();
176 }
177 }
178}
0179
=== modified file 'client/dotNET/MainForm.cs'
--- client/dotNET/MainForm.cs 2013-11-03 22:44:50 +0000
+++ client/dotNET/MainForm.cs 2014-07-15 15:37:37 +0000
@@ -1,6 +1,6 @@
1/*1/*
2 * Xibo - Digitial Signage - http://www.xibo.org.uk2 * Xibo - Digitial Signage - http://www.xibo.org.uk
3 * Copyright (C) 2006-13 Daniel Garner3 * Copyright (C) 2006-14 Daniel Garner
4 *4 *
5 * This file is part of Xibo.5 * This file is part of Xibo.
6 *6 *
@@ -35,6 +35,7 @@
35using XiboClient.Log;35using XiboClient.Log;
36using System.Threading;36using System.Threading;
37using XiboClient.Properties;37using XiboClient.Properties;
38using System.Runtime.InteropServices;
3839
39namespace XiboClient40namespace XiboClient
40{41{
@@ -59,6 +60,18 @@
5960
60 private delegate void ChangeToNextLayoutDelegate(string layoutPath);61 private delegate void ChangeToNextLayoutDelegate(string layoutPath);
6162
63 [FlagsAttribute]
64 enum EXECUTION_STATE : uint
65 {
66 ES_AWAYMODE_REQUIRED = 0x00000040,
67 ES_CONTINUOUS = 0x80000000,
68 ES_DISPLAY_REQUIRED = 0x00000002,
69 ES_SYSTEM_REQUIRED = 0x00000001
70 }
71
72 [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
73 static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags);
74
62 public MainForm()75 public MainForm()
63 {76 {
64 InitializeComponent();77 InitializeComponent();
@@ -95,10 +108,24 @@
95 _clientInfoForm.Hide();108 _clientInfoForm.Hide();
96109
97 // Add a message filter to listen for the i key110 // Add a message filter to listen for the i key
98 KeyFilter keyFilter = new KeyFilter();111 Application.AddMessageFilter(KeyStore.Instance);
99 keyFilter.ClientInfoForm = _clientInfoForm;112
100113 // Define the hotkey
101 Application.AddMessageFilter(keyFilter);114 Keys key;
115 try
116 {
117 key = (Keys)Enum.Parse(typeof(Keys), Settings.Default.ClientInformationKeyCode.ToUpper());
118 }
119 catch
120 {
121 // Default back to I
122 key = Keys.I;
123 }
124
125 KeyStore.Instance.AddKeyDefinition("ClientInfo", key, ((Settings.Default.ClientInfomationCtrlKey) ? Keys.Control : Keys.None));
126
127 // Register a handler for the key event
128 KeyStore.Instance.KeyPress += Instance_KeyPress;
102129
103 // Trace listener for Client Info130 // Trace listener for Client Info
104 ClientInfoTraceListener clientInfoTraceListener = new ClientInfoTraceListener(_clientInfoForm);131 ClientInfoTraceListener clientInfoTraceListener = new ClientInfoTraceListener(_clientInfoForm);
@@ -116,6 +143,25 @@
116 }143 }
117144
118 /// <summary>145 /// <summary>
146 /// Handle the Key Event
147 /// </summary>
148 /// <param name="name"></param>
149 void Instance_KeyPress(string name)
150 {
151 if (name != "ClientInfo")
152 return;
153
154 // Toggle
155 if (_clientInfoForm.Visible)
156 _clientInfoForm.Hide();
157 else
158 {
159 _clientInfoForm.Show();
160 _clientInfoForm.BringToFront();
161 }
162 }
163
164 /// <summary>
119 /// Called after the form has been shown165 /// Called after the form has been shown
120 /// </summary>166 /// </summary>
121 /// <param name="sender"></param>167 /// <param name="sender"></param>
@@ -271,6 +317,8 @@
271 {317 {
272 try318 try
273 {319 {
320 SetThreadExecutionState(EXECUTION_STATE.ES_DISPLAY_REQUIRED | EXECUTION_STATE.ES_SYSTEM_REQUIRED | EXECUTION_STATE.ES_CONTINUOUS);
321
274 // TODO: Check we are never out of the UI thread at this point322 // TODO: Check we are never out of the UI thread at this point
275323
276 DestroyLayout();324 DestroyLayout();
@@ -733,38 +781,4 @@
733 }781 }
734 }782 }
735 }783 }
736
737 /// <summary>
738 /// Key Filter to show the Client Information Screen
739 /// </summary>
740 public class KeyFilter : IMessageFilter
741 {
742 public ClientInfo ClientInfoForm;
743
744 public bool PreFilterMessage(ref Message msg)
745 {
746 const int WM_KEYDOWN = 0x100;
747 const int WM_SYSKEYDOWN = 0x104;
748
749 // Only interested in Key Down messages
750 if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
751 {
752 Keys keyCode = (Keys)(int)msg.WParam & Keys.KeyCode;
753
754 if (keyCode == Keys.I)
755 {
756 // Toggle
757 if (ClientInfoForm.Visible)
758 ClientInfoForm.Hide();
759 else
760 {
761 ClientInfoForm.Show();
762 ClientInfoForm.BringToFront();
763 }
764 }
765 }
766
767 return false;
768 }
769 }
770}784}
771\ No newline at end of file785\ No newline at end of file
772786
=== modified file 'client/dotNET/OptionForm.Designer.cs'
--- client/dotNET/OptionForm.Designer.cs 2013-05-01 19:24:35 +0000
+++ client/dotNET/OptionForm.Designer.cs 2014-07-15 15:37:37 +0000
@@ -82,6 +82,8 @@
82 this.clientHeight = new System.Windows.Forms.NumericUpDown();82 this.clientHeight = new System.Windows.Forms.NumericUpDown();
83 this.clientWidth = new System.Windows.Forms.NumericUpDown();83 this.clientWidth = new System.Windows.Forms.NumericUpDown();
84 this.tabPage5 = new System.Windows.Forms.TabPage();84 this.tabPage5 = new System.Windows.Forms.TabPage();
85 this.cursorStartPosition = new System.Windows.Forms.ComboBox();
86 this.label22 = new System.Windows.Forms.Label();
85 this.logToDiskLocation = new System.Windows.Forms.TextBox();87 this.logToDiskLocation = new System.Windows.Forms.TextBox();
86 this.label21 = new System.Windows.Forms.Label();88 this.label21 = new System.Windows.Forms.Label();
87 this.showInTaskbar = new System.Windows.Forms.CheckBox();89 this.showInTaskbar = new System.Windows.Forms.CheckBox();
@@ -104,8 +106,9 @@
104 this.folderBrowserLibrary = new System.Windows.Forms.FolderBrowserDialog();106 this.folderBrowserLibrary = new System.Windows.Forms.FolderBrowserDialog();
105 this.splashScreenOverride = new System.Windows.Forms.OpenFileDialog();107 this.splashScreenOverride = new System.Windows.Forms.OpenFileDialog();
106 this.xmds1 = new XiboClient.xmds.xmds();108 this.xmds1 = new XiboClient.xmds.xmds();
107 this.label22 = new System.Windows.Forms.Label();109 this.label23 = new System.Windows.Forms.Label();
108 this.cursorStartPosition = new System.Windows.Forms.ComboBox();110 this.clientInfoHotKeyTextBox = new System.Windows.Forms.TextBox();
111 this.clientInfoCtrlModifierCheckBox = new System.Windows.Forms.CheckBox();
109 this.tabControl1.SuspendLayout();112 this.tabControl1.SuspendLayout();
110 this.tabPage1.SuspendLayout();113 this.tabPage1.SuspendLayout();
111 ((System.ComponentModel.ISupportInitialize)(this.nupScrollStepAmount)).BeginInit();114 ((System.ComponentModel.ISupportInitialize)(this.nupScrollStepAmount)).BeginInit();
@@ -684,6 +687,9 @@
684 // 687 //
685 // tabPage5688 // tabPage5
686 // 689 //
690 this.tabPage5.Controls.Add(this.clientInfoCtrlModifierCheckBox);
691 this.tabPage5.Controls.Add(this.clientInfoHotKeyTextBox);
692 this.tabPage5.Controls.Add(this.label23);
687 this.tabPage5.Controls.Add(this.cursorStartPosition);693 this.tabPage5.Controls.Add(this.cursorStartPosition);
688 this.tabPage5.Controls.Add(this.label22);694 this.tabPage5.Controls.Add(this.label22);
689 this.tabPage5.Controls.Add(this.logToDiskLocation);695 this.tabPage5.Controls.Add(this.logToDiskLocation);
@@ -707,17 +713,39 @@
707 this.tabPage5.Text = "Advanced";713 this.tabPage5.Text = "Advanced";
708 this.tabPage5.UseVisualStyleBackColor = true;714 this.tabPage5.UseVisualStyleBackColor = true;
709 // 715 //
716 // cursorStartPosition
717 //
718 this.cursorStartPosition.FormattingEnabled = true;
719 this.cursorStartPosition.Items.AddRange(new object[] {
720 "Top Left",
721 "Top Right",
722 "Bottom Left",
723 "Bottom Right"});
724 this.cursorStartPosition.Location = new System.Drawing.Point(161, 128);
725 this.cursorStartPosition.Name = "cursorStartPosition";
726 this.cursorStartPosition.Size = new System.Drawing.Size(263, 21);
727 this.cursorStartPosition.TabIndex = 21;
728 //
729 // label22
730 //
731 this.label22.AutoSize = true;
732 this.label22.Location = new System.Drawing.Point(5, 131);
733 this.label22.Name = "label22";
734 this.label22.Size = new System.Drawing.Size(102, 13);
735 this.label22.TabIndex = 20;
736 this.label22.Text = "Cursor Start Position";
737 //
710 // logToDiskLocation738 // logToDiskLocation
711 // 739 //
712 this.logToDiskLocation.Location = new System.Drawing.Point(176, 176);740 this.logToDiskLocation.Location = new System.Drawing.Point(161, 99);
713 this.logToDiskLocation.Name = "logToDiskLocation";741 this.logToDiskLocation.Name = "logToDiskLocation";
714 this.logToDiskLocation.Size = new System.Drawing.Size(121, 20);742 this.logToDiskLocation.Size = new System.Drawing.Size(263, 20);
715 this.logToDiskLocation.TabIndex = 19;743 this.logToDiskLocation.TabIndex = 19;
716 // 744 //
717 // label21745 // label21
718 // 746 //
719 this.label21.AutoSize = true;747 this.label21.AutoSize = true;
720 this.label21.Location = new System.Drawing.Point(20, 179);748 this.label21.Location = new System.Drawing.Point(5, 102);
721 this.label21.Name = "label21";749 this.label21.Name = "label21";
722 this.label21.Size = new System.Drawing.Size(105, 13);750 this.label21.Size = new System.Drawing.Size(105, 13);
723 this.label21.TabIndex = 18;751 this.label21.TabIndex = 18;
@@ -726,7 +754,7 @@
726 // showInTaskbar754 // showInTaskbar
727 // 755 //
728 this.showInTaskbar.AutoSize = true;756 this.showInTaskbar.AutoSize = true;
729 this.showInTaskbar.Location = new System.Drawing.Point(176, 238);757 this.showInTaskbar.Location = new System.Drawing.Point(51, 220);
730 this.showInTaskbar.Name = "showInTaskbar";758 this.showInTaskbar.Name = "showInTaskbar";
731 this.showInTaskbar.Size = new System.Drawing.Size(130, 17);759 this.showInTaskbar.Size = new System.Drawing.Size(130, 17);
732 this.showInTaskbar.TabIndex = 17;760 this.showInTaskbar.TabIndex = 17;
@@ -736,7 +764,7 @@
736 // label20764 // label20
737 // 765 //
738 this.label20.AutoSize = true;766 this.label20.AutoSize = true;
739 this.label20.Location = new System.Drawing.Point(20, 151);767 this.label20.Location = new System.Drawing.Point(5, 73);
740 this.label20.Name = "label20";768 this.label20.Name = "label20";
741 this.label20.Size = new System.Drawing.Size(54, 13);769 this.label20.Size = new System.Drawing.Size(54, 13);
742 this.label20.TabIndex = 16;770 this.label20.TabIndex = 16;
@@ -749,15 +777,15 @@
749 "audit",777 "audit",
750 "info",778 "info",
751 "error"});779 "error"});
752 this.logLevel.Location = new System.Drawing.Point(176, 148);780 this.logLevel.Location = new System.Drawing.Point(161, 70);
753 this.logLevel.Name = "logLevel";781 this.logLevel.Name = "logLevel";
754 this.logLevel.Size = new System.Drawing.Size(121, 21);782 this.logLevel.Size = new System.Drawing.Size(263, 21);
755 this.logLevel.TabIndex = 15;783 this.logLevel.TabIndex = 15;
756 // 784 //
757 // label19785 // label19
758 // 786 //
759 this.label19.AutoSize = true;787 this.label19.AutoSize = true;
760 this.label19.Location = new System.Drawing.Point(20, 123);788 this.label19.Location = new System.Drawing.Point(225, 10);
761 this.label19.Name = "label19";789 this.label19.Name = "label19";
762 this.label19.Size = new System.Drawing.Size(138, 13);790 this.label19.Size = new System.Drawing.Size(138, 13);
763 this.label19.TabIndex = 14;791 this.label19.TabIndex = 14;
@@ -765,14 +793,14 @@
765 // 793 //
766 // maxConcurrentDownloads794 // maxConcurrentDownloads
767 // 795 //
768 this.maxConcurrentDownloads.Location = new System.Drawing.Point(176, 121);796 this.maxConcurrentDownloads.Location = new System.Drawing.Point(381, 8);
769 this.maxConcurrentDownloads.Minimum = new decimal(new int[] {797 this.maxConcurrentDownloads.Minimum = new decimal(new int[] {
770 1,798 1,
771 0,799 0,
772 0,800 0,
773 0});801 0});
774 this.maxConcurrentDownloads.Name = "maxConcurrentDownloads";802 this.maxConcurrentDownloads.Name = "maxConcurrentDownloads";
775 this.maxConcurrentDownloads.Size = new System.Drawing.Size(121, 20);803 this.maxConcurrentDownloads.Size = new System.Drawing.Size(43, 20);
776 this.maxConcurrentDownloads.TabIndex = 13;804 this.maxConcurrentDownloads.TabIndex = 13;
777 this.maxConcurrentDownloads.Value = new decimal(new int[] {805 this.maxConcurrentDownloads.Value = new decimal(new int[] {
778 1,806 1,
@@ -783,7 +811,7 @@
783 // label18811 // label18
784 // 812 //
785 this.label18.AutoSize = true;813 this.label18.AutoSize = true;
786 this.label18.Location = new System.Drawing.Point(20, 98);814 this.label18.Location = new System.Drawing.Point(5, 43);
787 this.label18.Name = "label18";815 this.label18.Name = "label18";
788 this.label18.Size = new System.Drawing.Size(127, 13);816 this.label18.Size = new System.Drawing.Size(127, 13);
789 this.label18.TabIndex = 12;817 this.label18.TabIndex = 12;
@@ -791,15 +819,15 @@
791 // 819 //
792 // shellCommandAllowList820 // shellCommandAllowList
793 // 821 //
794 this.shellCommandAllowList.Location = new System.Drawing.Point(176, 95);822 this.shellCommandAllowList.Location = new System.Drawing.Point(161, 40);
795 this.shellCommandAllowList.Name = "shellCommandAllowList";823 this.shellCommandAllowList.Name = "shellCommandAllowList";
796 this.shellCommandAllowList.Size = new System.Drawing.Size(121, 20);824 this.shellCommandAllowList.Size = new System.Drawing.Size(263, 20);
797 this.shellCommandAllowList.TabIndex = 11;825 this.shellCommandAllowList.TabIndex = 11;
798 // 826 //
799 // enableShellCommandsCb827 // enableShellCommandsCb
800 // 828 //
801 this.enableShellCommandsCb.AutoSize = true;829 this.enableShellCommandsCb.AutoSize = true;
802 this.enableShellCommandsCb.Location = new System.Drawing.Point(176, 72);830 this.enableShellCommandsCb.Location = new System.Drawing.Point(247, 220);
803 this.enableShellCommandsCb.Name = "enableShellCommandsCb";831 this.enableShellCommandsCb.Name = "enableShellCommandsCb";
804 this.enableShellCommandsCb.Size = new System.Drawing.Size(140, 17);832 this.enableShellCommandsCb.Size = new System.Drawing.Size(140, 17);
805 this.enableShellCommandsCb.TabIndex = 10;833 this.enableShellCommandsCb.TabIndex = 10;
@@ -809,7 +837,7 @@
809 // doubleBufferingCheckBox837 // doubleBufferingCheckBox
810 // 838 //
811 this.doubleBufferingCheckBox.AutoSize = true;839 this.doubleBufferingCheckBox.AutoSize = true;
812 this.doubleBufferingCheckBox.Location = new System.Drawing.Point(176, 49);840 this.doubleBufferingCheckBox.Location = new System.Drawing.Point(247, 197);
813 this.doubleBufferingCheckBox.Name = "doubleBufferingCheckBox";841 this.doubleBufferingCheckBox.Name = "doubleBufferingCheckBox";
814 this.doubleBufferingCheckBox.Size = new System.Drawing.Size(141, 17);842 this.doubleBufferingCheckBox.Size = new System.Drawing.Size(141, 17);
815 this.doubleBufferingCheckBox.TabIndex = 4;843 this.doubleBufferingCheckBox.TabIndex = 4;
@@ -818,9 +846,9 @@
818 // 846 //
819 // numericUpDownEmptyRegions847 // numericUpDownEmptyRegions
820 // 848 //
821 this.numericUpDownEmptyRegions.Location = new System.Drawing.Point(176, 23);849 this.numericUpDownEmptyRegions.Location = new System.Drawing.Point(161, 8);
822 this.numericUpDownEmptyRegions.Name = "numericUpDownEmptyRegions";850 this.numericUpDownEmptyRegions.Name = "numericUpDownEmptyRegions";
823 this.numericUpDownEmptyRegions.Size = new System.Drawing.Size(121, 20);851 this.numericUpDownEmptyRegions.Size = new System.Drawing.Size(44, 20);
824 this.numericUpDownEmptyRegions.TabIndex = 1;852 this.numericUpDownEmptyRegions.TabIndex = 1;
825 this.numericUpDownEmptyRegions.Value = new decimal(new int[] {853 this.numericUpDownEmptyRegions.Value = new decimal(new int[] {
826 10,854 10,
@@ -831,7 +859,7 @@
831 // label15859 // label15
832 // 860 //
833 this.label15.AutoSize = true;861 this.label15.AutoSize = true;
834 this.label15.Location = new System.Drawing.Point(20, 25);862 this.label15.Location = new System.Drawing.Point(5, 10);
835 this.label15.Name = "label15";863 this.label15.Name = "label15";
836 this.label15.Size = new System.Drawing.Size(136, 13);864 this.label15.Size = new System.Drawing.Size(136, 13);
837 this.label15.TabIndex = 0;865 this.label15.TabIndex = 0;
@@ -896,27 +924,31 @@
896 this.xmds1.Url = "http://localhost/Xibo/server/xmds.php";924 this.xmds1.Url = "http://localhost/Xibo/server/xmds.php";
897 this.xmds1.UseDefaultCredentials = false;925 this.xmds1.UseDefaultCredentials = false;
898 // 926 //
899 // label22927 // label23
900 // 928 //
901 this.label22.AutoSize = true;929 this.label23.AutoSize = true;
902 this.label22.Location = new System.Drawing.Point(23, 206);930 this.label23.Location = new System.Drawing.Point(5, 158);
903 this.label22.Name = "label22";931 this.label23.Name = "label23";
904 this.label22.Size = new System.Drawing.Size(102, 13);932 this.label23.Size = new System.Drawing.Size(92, 13);
905 this.label22.TabIndex = 20;933 this.label23.TabIndex = 22;
906 this.label22.Text = "Cursor Start Position";934 this.label23.Text = "Client Info HotKey";
907 // 935 //
908 // cursorStartPosition936 // clientInfoHotKeyTextBox
909 // 937 //
910 this.cursorStartPosition.FormattingEnabled = true;938 this.clientInfoHotKeyTextBox.Location = new System.Drawing.Point(161, 158);
911 this.cursorStartPosition.Items.AddRange(new object[] {939 this.clientInfoHotKeyTextBox.Name = "clientInfoHotKeyTextBox";
912 "Top Left",940 this.clientInfoHotKeyTextBox.Size = new System.Drawing.Size(263, 20);
913 "Top Right",941 this.clientInfoHotKeyTextBox.TabIndex = 23;
914 "Bottom Left",942 //
915 "Bottom Right"});943 // clientInfoCtrlModifierCheckBox
916 this.cursorStartPosition.Location = new System.Drawing.Point(176, 203);944 //
917 this.cursorStartPosition.Name = "cursorStartPosition";945 this.clientInfoCtrlModifierCheckBox.AutoSize = true;
918 this.cursorStartPosition.Size = new System.Drawing.Size(121, 21);946 this.clientInfoCtrlModifierCheckBox.Location = new System.Drawing.Point(51, 197);
919 this.cursorStartPosition.TabIndex = 21;947 this.clientInfoCtrlModifierCheckBox.Name = "clientInfoCtrlModifierCheckBox";
948 this.clientInfoCtrlModifierCheckBox.Size = new System.Drawing.Size(177, 17);
949 this.clientInfoCtrlModifierCheckBox.TabIndex = 24;
950 this.clientInfoCtrlModifierCheckBox.Text = "Client Info CTRL Key Required?";
951 this.clientInfoCtrlModifierCheckBox.UseVisualStyleBackColor = true;
920 // 952 //
921 // OptionForm953 // OptionForm
922 // 954 //
@@ -1037,5 +1069,8 @@
1037 private System.Windows.Forms.TextBox logToDiskLocation;1069 private System.Windows.Forms.TextBox logToDiskLocation;
1038 private System.Windows.Forms.Label label22;1070 private System.Windows.Forms.Label label22;
1039 private System.Windows.Forms.ComboBox cursorStartPosition;1071 private System.Windows.Forms.ComboBox cursorStartPosition;
1072 private System.Windows.Forms.CheckBox clientInfoCtrlModifierCheckBox;
1073 private System.Windows.Forms.TextBox clientInfoHotKeyTextBox;
1074 private System.Windows.Forms.Label label23;
1040 }1075 }
1041}1076}
1042\ No newline at end of file1077\ No newline at end of file
10431078
=== modified file 'client/dotNET/OptionForm.cs'
--- client/dotNET/OptionForm.cs 2014-02-09 15:08:13 +0000
+++ client/dotNET/OptionForm.cs 2014-07-15 15:37:37 +0000
@@ -1,6 +1,6 @@
1/*1/*
2 * Xibo - Digitial Signage - http://www.xibo.org.uk2 * Xibo - Digitial Signage - http://www.xibo.org.uk
3 * Copyright (C) 2006-2012 Daniel Garner3 * Copyright (C) 2006-2014 Daniel Garner
4 *4 *
5 * This file is part of Xibo.5 * This file is part of Xibo.
6 *6 *
@@ -105,6 +105,8 @@
105 logToDiskLocation.Text = Settings.Default.LogToDiskLocation;105 logToDiskLocation.Text = Settings.Default.LogToDiskLocation;
106 showInTaskbar.Checked = Settings.Default.ShowInTaskbar;106 showInTaskbar.Checked = Settings.Default.ShowInTaskbar;
107 cursorStartPosition.Text = Settings.Default.CursorStartPosition;107 cursorStartPosition.Text = Settings.Default.CursorStartPosition;
108 clientInfoHotKeyTextBox.Text = Settings.Default.ClientInformationKeyCode;
109 clientInfoCtrlModifierCheckBox.Checked = Settings.Default.ClientInfomationCtrlKey;
108110
109 Debug.WriteLine("Loaded Options Form", "OptionForm");111 Debug.WriteLine("Loaded Options Form", "OptionForm");
110 }112 }
@@ -202,6 +204,8 @@
202 Settings.Default.LogToDiskLocation = logToDiskLocation.Text;204 Settings.Default.LogToDiskLocation = logToDiskLocation.Text;
203 Settings.Default.ShowInTaskbar = showInTaskbar.Checked;205 Settings.Default.ShowInTaskbar = showInTaskbar.Checked;
204 Settings.Default.CursorStartPosition = cursorStartPosition.Text;206 Settings.Default.CursorStartPosition = cursorStartPosition.Text;
207 Settings.Default.ClientInformationKeyCode = clientInfoHotKeyTextBox.Text;
208 Settings.Default.ClientInfomationCtrlKey = clientInfoCtrlModifierCheckBox.Checked;
205209
206 // Commit these changes back to the user settings210 // Commit these changes back to the user settings
207 Settings.Default.Save();211 Settings.Default.Save();
208212
=== modified file 'client/dotNET/Properties/Settings.Designer.cs'
--- client/dotNET/Properties/Settings.Designer.cs 2014-03-09 14:46:20 +0000
+++ client/dotNET/Properties/Settings.Designer.cs 2014-07-15 15:37:37 +0000
@@ -541,5 +541,29 @@
541 return ((int)(this["ClientCodeVersion"]));541 return ((int)(this["ClientCodeVersion"]));
542 }542 }
543 }543 }
544
545 [global::System.Configuration.UserScopedSettingAttribute()]
546 [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
547 [global::System.Configuration.DefaultSettingValueAttribute("I")]
548 public string ClientInformationKeyCode {
549 get {
550 return ((string)(this["ClientInformationKeyCode"]));
551 }
552 set {
553 this["ClientInformationKeyCode"] = value;
554 }
555 }
556
557 [global::System.Configuration.UserScopedSettingAttribute()]
558 [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
559 [global::System.Configuration.DefaultSettingValueAttribute("False")]
560 public bool ClientInfomationCtrlKey {
561 get {
562 return ((bool)(this["ClientInfomationCtrlKey"]));
563 }
564 set {
565 this["ClientInfomationCtrlKey"] = value;
566 }
567 }
544 }568 }
545}569}
546570
=== modified file 'client/dotNET/Properties/Settings.settings'
--- client/dotNET/Properties/Settings.settings 2014-03-09 14:46:20 +0000
+++ client/dotNET/Properties/Settings.settings 2014-07-15 15:37:37 +0000
@@ -140,5 +140,11 @@
140 <Setting Name="ClientCodeVersion" Type="System.Int32" Scope="Application">140 <Setting Name="ClientCodeVersion" Type="System.Int32" Scope="Application">
141 <Value Profile="(Default)">83</Value>141 <Value Profile="(Default)">83</Value>
142 </Setting>142 </Setting>
143 <Setting Name="ClientInformationKeyCode" Type="System.String" Scope="User">
144 <Value Profile="(Default)">I</Value>
145 </Setting>
146 <Setting Name="ClientInfomationCtrlKey" Type="System.Boolean" Scope="User">
147 <Value Profile="(Default)">False</Value>
148 </Setting>
143 </Settings>149 </Settings>
144</SettingsFile>150</SettingsFile>
145\ No newline at end of file151\ No newline at end of file
146152
=== modified file 'client/dotNET/XiboClient.csproj'
--- client/dotNET/XiboClient.csproj 2013-11-09 12:14:38 +0000
+++ client/dotNET/XiboClient.csproj 2014-07-15 15:37:37 +0000
@@ -116,6 +116,7 @@
116 </Compile>116 </Compile>
117 <Compile Include="BlackList.cs" />117 <Compile Include="BlackList.cs" />
118 <Compile Include="CacheManager.cs" />118 <Compile Include="CacheManager.cs" />
119 <Compile Include="KeyStore.cs" />
119 <Compile Include="RegionOptions.cs" />120 <Compile Include="RegionOptions.cs" />
120 <Compile Include="TemporaryFile.cs" />121 <Compile Include="TemporaryFile.cs" />
121 <Compile Include="VideoDS.cs">122 <Compile Include="VideoDS.cs">
122123
=== modified file 'client/dotNET/app.config'
--- client/dotNET/app.config 2014-03-09 14:46:20 +0000
+++ client/dotNET/app.config 2014-07-15 15:37:37 +0000
@@ -115,6 +115,12 @@
115 <setting name="CursorStartPosition" serializeAs="String">115 <setting name="CursorStartPosition" serializeAs="String">
116 <value>Bottom Right</value>116 <value>Bottom Right</value>
117 </setting>117 </setting>
118 <setting name="ClientInformationKeyCode" serializeAs="String">
119 <value>I</value>
120 </setting>
121 <setting name="ClientInfomationCtrlKey" serializeAs="String">
122 <value>False</value>
123 </setting>
118 </XiboClient.Properties.Settings>124 </XiboClient.Properties.Settings>
119 </userSettings>125 </userSettings>
120 <applicationSettings>126 <applicationSettings>
121127
=== modified file 'default.mo'
122Binary files default.mo 2014-03-29 16:01:24 +0000 and default.mo 2014-07-15 15:37:37 +0000 differ128Binary files default.mo 2014-03-29 16:01:24 +0000 and default.mo 2014-07-15 15:37:37 +0000 differ
=== modified file 'default.pot'
--- default.pot 2014-03-29 16:01:24 +0000
+++ default.pot 2014-07-15 15:37:37 +0000
@@ -2,7 +2,7 @@
2msgstr ""2msgstr ""
3"Project-Id-Version: Xibo Digital Signage\n"3"Project-Id-Version: Xibo Digital Signage\n"
4"Report-Msgid-Bugs-To: \n"4"Report-Msgid-Bugs-To: \n"
5"POT-Creation-Date: 2014-03-29 16:01-0000\n"5"POT-Creation-Date: 2014-06-09 20:00-0000\n"
6"PO-Revision-Date: \n"6"PO-Revision-Date: \n"
7"Last-Translator: Dan Garner <dan@xibo.org.uk>\n"7"Last-Translator: Dan Garner <dan@xibo.org.uk>\n"
8"Language-Team: <info@xibo.org.uk>\n"8"Language-Team: <info@xibo.org.uk>\n"
@@ -10,7 +10,7 @@
10"MIME-Version: 1.0\n"10"MIME-Version: 1.0\n"
11"Content-Type: text/plain; charset=UTF-8\n"11"Content-Type: text/plain; charset=UTF-8\n"
12"Content-Transfer-Encoding: 8bit\n"12"Content-Transfer-Encoding: 8bit\n"
13"X-Poedit-Basepath: C:\\Users\\dan\\www\\release\\1.6.0-rc2\n"13"X-Poedit-Basepath: C:\\Users\\dan\\www\\1.6\\server-162\n"
14"X-Poedit-KeywordsList: __;Translate\n"14"X-Poedit-KeywordsList: __;Translate\n"
15"X-Generator: Poedit 1.5.5\n"15"X-Generator: Poedit 1.5.5\n"
16"X-Poedit-SearchPath-0: server\n"16"X-Poedit-SearchPath-0: server\n"
@@ -37,7 +37,7 @@
37#: server/install.php:329 server/install.php:345 server/install.php:38437#: server/install.php:329 server/install.php:345 server/install.php:384
38#: server/install.php:413 server/install.php:516 server/upgrade.php:10438#: server/install.php:413 server/install.php:516 server/upgrade.php:104
39#: server/upgrade.php:199 server/upgrade.php:206 server/upgrade.php:27839#: server/upgrade.php:199 server/upgrade.php:206 server/upgrade.php:278
40#: server/lib/pages/schedule.class.php:144940#: server/lib/pages/schedule.class.php:1452
41msgid "Next"41msgid "Next"
42msgstr ""42msgstr ""
4343
@@ -409,6 +409,14 @@
409msgid "Maintenance key invalid."409msgid "Maintenance key invalid."
410msgstr ""410msgstr ""
411411
412#: server/settings.php:11
413msgid "Sorry, you are not allowed to directly access this page."
414msgstr ""
415
416#: server/settings.php:11
417msgid "Please press the back button in your browser."
418msgstr ""
419
412#: server/upgrade.php:63420#: server/upgrade.php:63
413msgid ""421msgid ""
414"Unable to connect to the MySQL database using the settings stored in "422"Unable to connect to the MySQL database using the settings stored in "
@@ -658,8 +666,8 @@
658msgstr ""666msgstr ""
659667
660#: server/lib/app/helpmanager.class.php:54668#: server/lib/app/helpmanager.class.php:54
661#: server/lib/modules/module.class.php:493669#: server/lib/modules/module.class.php:498
662#: server/lib/modules/module.class.php:1401670#: server/lib/modules/module.class.php:1433
663#: server/lib/pages/campaign.class.php:144671#: server/lib/pages/campaign.class.php:144
664#: server/lib/pages/campaign.class.php:214672#: server/lib/pages/campaign.class.php:214
665#: server/lib/pages/campaign.class.php:283673#: server/lib/pages/campaign.class.php:283
@@ -684,14 +692,14 @@
684#: server/lib/pages/displaygroup.class.php:156692#: server/lib/pages/displaygroup.class.php:156
685#: server/lib/pages/displaygroup.class.php:204693#: server/lib/pages/displaygroup.class.php:204
686#: server/lib/pages/displaygroup.class.php:232694#: server/lib/pages/displaygroup.class.php:232
687#: server/lib/pages/displaygroup.class.php:306695#: server/lib/pages/displaygroup.class.php:309
688#: server/lib/pages/displaygroup.class.php:540696#: server/lib/pages/displaygroup.class.php:549
689#: server/lib/pages/displaygroup.class.php:701697#: server/lib/pages/displaygroup.class.php:710
690#: server/lib/pages/group.class.php:224 server/lib/pages/group.class.php:248698#: server/lib/pages/group.class.php:224 server/lib/pages/group.class.php:248
691#: server/lib/pages/group.class.php:342 server/lib/pages/group.class.php:501699#: server/lib/pages/group.class.php:342 server/lib/pages/group.class.php:501
692#: server/lib/pages/group.class.php:698 server/lib/pages/help.class.php:107700#: server/lib/pages/group.class.php:698 server/lib/pages/help.class.php:107
693#: server/lib/pages/layout.class.php:267 server/lib/pages/layout.class.php:512701#: server/lib/pages/layout.class.php:270 server/lib/pages/layout.class.php:515
694#: server/lib/pages/layout.class.php:598 server/lib/pages/layout.class.php:800702#: server/lib/pages/layout.class.php:601 server/lib/pages/layout.class.php:803
695#: server/lib/pages/log.class.php:182 server/lib/pages/module.class.php:201703#: server/lib/pages/log.class.php:182 server/lib/pages/module.class.php:201
696#: server/lib/pages/oauth.class.php:130 server/lib/pages/oauth.class.php:208704#: server/lib/pages/oauth.class.php:130 server/lib/pages/oauth.class.php:208
697#: server/lib/pages/oauth.class.php:286705#: server/lib/pages/oauth.class.php:286
@@ -699,11 +707,11 @@
699#: server/lib/pages/resolution.class.php:165707#: server/lib/pages/resolution.class.php:165
700#: server/lib/pages/resolution.class.php:190708#: server/lib/pages/resolution.class.php:190
701#: server/lib/pages/schedule.class.php:435709#: server/lib/pages/schedule.class.php:435
702#: server/lib/pages/schedule.class.php:1447710#: server/lib/pages/schedule.class.php:1450
703#: server/lib/pages/schedule.class.php:1613711#: server/lib/pages/schedule.class.php:1616
704#: server/lib/pages/schedule.class.php:1819712#: server/lib/pages/schedule.class.php:1822
705#: server/lib/pages/schedule.class.php:1939713#: server/lib/pages/schedule.class.php:1942
706#: server/lib/pages/schedule.class.php:2026714#: server/lib/pages/schedule.class.php:2029
707#: server/lib/pages/sessions.class.php:152715#: server/lib/pages/sessions.class.php:152
708#: server/lib/pages/template.class.php:154716#: server/lib/pages/template.class.php:154
709#: server/lib/pages/template.class.php:256717#: server/lib/pages/template.class.php:256
@@ -722,22 +730,22 @@
722msgid "Help"730msgid "Help"
723msgstr ""731msgstr ""
724732
725#: server/lib/app/kit.class.php:240733#: server/lib/app/kit.class.php:241
726#, php-format734#, php-format
727msgid "No integer match found for [%s] and return value is not an integer"735msgid "No integer match found for [%s] and return value is not an integer"
728msgstr ""736msgstr ""
729737
730#: server/lib/app/kit.class.php:254738#: server/lib/app/kit.class.php:255
731#, php-format739#, php-format
732msgid "No integer match found for %s, and return value is not an integer"740msgid "No integer match found for %s, and return value is not an integer"
733msgstr ""741msgstr ""
734742
735#: server/lib/app/kit.class.php:289743#: server/lib/app/kit.class.php:290
736#, php-format744#, php-format
737msgid "No integer found for %s, and return value is not an integer"745msgid "No integer found for %s, and return value is not an integer"
738msgstr ""746msgstr ""
739747
740#: server/lib/app/kit.class.php:355748#: server/lib/app/kit.class.php:360
741#, php-format749#, php-format
742msgid "Unknown Type %s"750msgid "Unknown Type %s"
743msgstr ""751msgstr ""
@@ -800,21 +808,22 @@
800msgstr ""808msgstr ""
801809
802#: server/lib/data/campaign.data.class.php:104810#: server/lib/data/campaign.data.class.php:104
803#: server/lib/modules/module.class.php:1440811#: server/lib/modules/module.class.php:1472
804#: server/lib/modules/module.class.php:1446812#: server/lib/modules/module.class.php:1478
805#: server/lib/modules/module.class.php:1476813#: server/lib/modules/module.class.php:1508
806#: server/lib/modules/module.class.php:1481
807#: server/lib/modules/module.class.php:1513814#: server/lib/modules/module.class.php:1513
808#: server/lib/modules/module.class.php:1518815#: server/lib/modules/module.class.php:1545
816#: server/lib/modules/module.class.php:1550
809#: server/lib/pages/campaign.class.php:416817#: server/lib/pages/campaign.class.php:416
810#: server/lib/pages/campaign.class.php:443818#: server/lib/pages/campaign.class.php:443
811#: server/lib/pages/campaign.class.php:472819#: server/lib/pages/campaign.class.php:472
812#: server/lib/pages/dataset.class.php:938820#: server/lib/pages/dataset.class.php:938
813#: server/lib/pages/dataset.class.php:965821#: server/lib/pages/dataset.class.php:965
814#: server/lib/pages/dataset.class.php:994822#: server/lib/pages/dataset.class.php:994
815#: server/lib/pages/displaygroup.class.php:570823#: server/lib/pages/displaygroup.class.php:342
816#: server/lib/pages/displaygroup.class.php:597824#: server/lib/pages/displaygroup.class.php:579
817#: server/lib/pages/displaygroup.class.php:626825#: server/lib/pages/displaygroup.class.php:606
826#: server/lib/pages/displaygroup.class.php:635
818#: server/lib/pages/template.class.php:400827#: server/lib/pages/template.class.php:400
819#: server/lib/pages/template.class.php:427828#: server/lib/pages/template.class.php:427
820#: server/lib/pages/template.class.php:456829#: server/lib/pages/template.class.php:456
@@ -1041,11 +1050,12 @@
1041#: server/lib/data/mediagroupsecurity.data.class.php:981050#: server/lib/data/mediagroupsecurity.data.class.php:98
1042#: server/lib/data/region.data.class.php:6271051#: server/lib/data/region.data.class.php:627
1043#: server/lib/data/region.data.class.php:6701052#: server/lib/data/region.data.class.php:670
1044#: server/lib/data/region.data.class.php:9751053#: server/lib/data/region.data.class.php:977
1045#: server/lib/data/schedule.data.class.php:4131054#: server/lib/data/schedule.data.class.php:413
1046#: server/lib/data/schedule.data.class.php:6011055#: server/lib/data/schedule.data.class.php:601
1047#: server/lib/data/usergroup.data.class.php:3371056#: server/lib/data/usergroup.data.class.php:337
1048#: server/lib/modules/module.class.php:10581057#: server/lib/modules/module.class.php:1063
1058#: server/lib/modules/module.class.php:1279
1049#: server/lib/pages/error.class.php:491059#: server/lib/pages/error.class.php:49
1050msgid "Unknown Error"1060msgid "Unknown Error"
1051msgstr ""1061msgstr ""
@@ -1182,7 +1192,7 @@
1182msgstr ""1192msgstr ""
11831193
1184#: server/lib/data/displaygroup.data.class.php:4351194#: server/lib/data/displaygroup.data.class.php:435
1185#: server/lib/pages/displaygroup.class.php:8601195#: server/lib/pages/displaygroup.class.php:869
1186msgid ""1196msgid ""
1187"You have selected media that you no longer have permission to use. Please "1197"You have selected media that you no longer have permission to use. Please "
1188"reload the form."1198"reload the form."
@@ -1324,7 +1334,7 @@
1324msgstr ""1334msgstr ""
13251335
1326#: server/lib/data/layout.data.class.php:8431336#: server/lib/data/layout.data.class.php:843
1327#: server/lib/pages/layout.class.php:5871337#: server/lib/pages/layout.class.php:590
1328msgid "Unable to get the Resolution information"1338msgid "Unable to get the Resolution information"
1329msgstr ""1339msgstr ""
13301340
@@ -1369,7 +1379,7 @@
13691379
1370#: server/lib/data/media.data.class.php:611380#: server/lib/data/media.data.class.php:61
1371#: server/lib/data/media.data.class.php:2511381#: server/lib/data/media.data.class.php:251
1372#: server/lib/modules/module.class.php:7971382#: server/lib/modules/module.class.php:802
1373#, php-format1383#, php-format
1374msgid "Your library is full. Library Limit: %s K"1384msgid "Your library is full. Library Limit: %s K"
1375msgstr ""1385msgstr ""
@@ -1385,8 +1395,8 @@
13851395
1386#: server/lib/data/media.data.class.php:811396#: server/lib/data/media.data.class.php:81
1387#: server/lib/data/media.data.class.php:1901397#: server/lib/data/media.data.class.php:190
1388#: server/modules/datasetview.module.php:2521398#: server/modules/datasetview.module.php:231
1389#: server/modules/datasetview.module.php:3091399#: server/modules/datasetview.module.php:288
1390msgid "You must enter a duration."1400msgid "You must enter a duration."
1391msgstr ""1401msgstr ""
13921402
@@ -1452,7 +1462,6 @@
1452msgstr ""1462msgstr ""
14531463
1454#: server/lib/data/region.data.class.php:811464#: server/lib/data/region.data.class.php:81
1455#: server/lib/data/region.data.class.php:559
1456msgid "Size and coordinates must be generic"1465msgid "Size and coordinates must be generic"
1457msgstr ""1466msgstr ""
14581467
@@ -1478,13 +1487,17 @@
1478msgid "Database error deleting this link record."1487msgid "Database error deleting this link record."
1479msgstr ""1488msgstr ""
14801489
1481#: server/lib/data/region.data.class.php:9321490#: server/lib/data/region.data.class.php:559
1491msgid "Size and coordinates must be numeric"
1492msgstr ""
1493
1494#: server/lib/data/region.data.class.php:934
1482msgid ""1495msgid ""
1483"You have selected media that you no longer have permission to use. Please "1496"You have selected media that you no longer have permission to use. Please "
1484"reload Library form."1497"reload Library form."
1485msgstr ""1498msgstr ""
14861499
1487#: server/lib/data/region.data.class.php:9411500#: server/lib/data/region.data.class.php:943
1488#: server/lib/service/rest.class.php:10371501#: server/lib/service/rest.class.php:1037
1489msgid "Error getting type from a media item."1502msgid "Error getting type from a media item."
1490msgstr ""1503msgstr ""
@@ -1678,154 +1691,155 @@
1678msgid "Cannot find this media item. Please refresh the region options."1691msgid "Cannot find this media item. Please refresh the region options."
1679msgstr ""1692msgstr ""
16801693
1681#: server/lib/modules/module.class.php:2561694#: server/lib/modules/module.class.php:248
1695#: server/lib/modules/module.class.php:260
1682msgid "Unable to find media record with the provided ID"1696msgid "Unable to find media record with the provided ID"
1683msgstr ""1697msgstr ""
16841698
1685#: server/lib/modules/module.class.php:4101699#: server/lib/modules/module.class.php:415
1686msgid "There is an error in the HTML/XML"1700msgid "There is an error in the HTML/XML"
1687msgstr ""1701msgstr ""
16881702
1689#: server/lib/modules/module.class.php:4581703#: server/lib/modules/module.class.php:463
1690msgid "Unable to Remove this media from the Layout"1704msgid "Unable to Remove this media from the Layout"
1691msgstr ""1705msgstr ""
16921706
1693#: server/lib/modules/module.class.php:4681707#: server/lib/modules/module.class.php:473
1694msgid "Unable to assign to the Region"1708msgid "Unable to assign to the Region"
1695msgstr ""1709msgstr ""
16961710
1697#: server/lib/modules/module.class.php:4761711#: server/lib/modules/module.class.php:481
1698msgid "Error adding this media to the library"1712msgid "Error adding this media to the library"
1699msgstr ""1713msgstr ""
17001714
1701#: server/lib/modules/module.class.php:5111715#: server/lib/modules/module.class.php:516
1702msgid "Return to the Region Options"1716msgid "Return to the Region Options"
1703msgstr ""1717msgstr ""
17041718
1705#: server/lib/modules/module.class.php:5121719#: server/lib/modules/module.class.php:517
1706msgid "Are you sure you want to remove this item?"1720msgid "Are you sure you want to remove this item?"
1707msgstr ""1721msgstr ""
17081722
1709#: server/lib/modules/module.class.php:5131723#: server/lib/modules/module.class.php:518
1710msgid "It will be lost"1724msgid "It will be lost"
1711msgstr ""1725msgstr ""
17121726
1713#: server/lib/modules/module.class.php:5141727#: server/lib/modules/module.class.php:519
1714#: server/lib/modules/module.class.php:5281728#: server/lib/modules/module.class.php:533
1715#: server/lib/modules/module.class.php:6291729#: server/lib/modules/module.class.php:634
1716#: server/lib/pages/campaign.class.php:2851730#: server/lib/pages/campaign.class.php:285
1717#: server/lib/pages/display.class.php:4781731#: server/lib/pages/display.class.php:478
1718#: server/lib/pages/display.class.php:6161732#: server/lib/pages/display.class.php:616
1719#: server/lib/pages/displaygroup.class.php:2341733#: server/lib/pages/displaygroup.class.php:234
1720#: server/lib/pages/group.class.php:344 server/lib/pages/help.class.php:2561734#: server/lib/pages/group.class.php:344 server/lib/pages/help.class.php:256
1721#: server/lib/pages/layout.class.php:269 server/lib/pages/log.class.php:1841735#: server/lib/pages/layout.class.php:272 server/lib/pages/log.class.php:184
1722#: server/lib/pages/resolution.class.php:1921736#: server/lib/pages/resolution.class.php:192
1723#: server/lib/pages/schedule.class.php:18211737#: server/lib/pages/schedule.class.php:1824
1724#: server/lib/pages/schedule.class.php:20281738#: server/lib/pages/schedule.class.php:2031
1725#: server/lib/pages/sessions.class.php:1541739#: server/lib/pages/sessions.class.php:154
1726#: server/lib/pages/template.class.php:2581740#: server/lib/pages/template.class.php:258
1727#: server/lib/pages/timeline.class.php:334 server/lib/pages/user.class.php:5741741#: server/lib/pages/timeline.class.php:334 server/lib/pages/user.class.php:574
1728msgid "Yes"1742msgid "Yes"
1729msgstr ""1743msgstr ""
17301744
1731#: server/lib/modules/module.class.php:5151745#: server/lib/modules/module.class.php:520
1732#: server/lib/modules/module.class.php:5271746#: server/lib/modules/module.class.php:532
1733#: server/lib/modules/module.class.php:6251747#: server/lib/modules/module.class.php:630
1734#: server/lib/modules/module.class.php:6271748#: server/lib/modules/module.class.php:632
1735#: server/lib/pages/campaign.class.php:2841749#: server/lib/pages/campaign.class.php:284
1736#: server/lib/pages/display.class.php:4771750#: server/lib/pages/display.class.php:477
1737#: server/lib/pages/display.class.php:6161751#: server/lib/pages/display.class.php:616
1738#: server/lib/pages/displaygroup.class.php:2331752#: server/lib/pages/displaygroup.class.php:233
1739#: server/lib/pages/group.class.php:343 server/lib/pages/help.class.php:2551753#: server/lib/pages/group.class.php:343 server/lib/pages/help.class.php:255
1740#: server/lib/pages/layout.class.php:268 server/lib/pages/log.class.php:1831754#: server/lib/pages/layout.class.php:271 server/lib/pages/log.class.php:183
1741#: server/lib/pages/resolution.class.php:1911755#: server/lib/pages/resolution.class.php:191
1742#: server/lib/pages/schedule.class.php:18201756#: server/lib/pages/schedule.class.php:1823
1743#: server/lib/pages/schedule.class.php:20271757#: server/lib/pages/schedule.class.php:2030
1744#: server/lib/pages/sessions.class.php:1531758#: server/lib/pages/sessions.class.php:153
1745#: server/lib/pages/template.class.php:2571759#: server/lib/pages/template.class.php:257
1746#: server/lib/pages/timeline.class.php:335 server/lib/pages/user.class.php:5731760#: server/lib/pages/timeline.class.php:335 server/lib/pages/user.class.php:573
1747msgid "No"1761msgid "No"
1748msgstr ""1762msgstr ""
17491763
1750#: server/lib/modules/module.class.php:5361764#: server/lib/modules/module.class.php:541
1751msgid "Unassign from this region only"1765msgid "Unassign from this region only"
1752msgstr ""1766msgstr ""
17531767
1754#: server/lib/modules/module.class.php:5511768#: server/lib/modules/module.class.php:556
1755#: server/lib/modules/module.class.php:9351769#: server/lib/modules/module.class.php:940
1756msgid "Error querying for the Media information"1770msgid "Error querying for the Media information"
1757msgstr ""1771msgstr ""
17581772
1759#: server/lib/modules/module.class.php:5561773#: server/lib/modules/module.class.php:561
1760msgid "Unassign from this region and retire"1774msgid "Unassign from this region and retire"
1761msgstr ""1775msgstr ""
17621776
1763#: server/lib/modules/module.class.php:5781777#: server/lib/modules/module.class.php:583
1764msgid "Cannot determine if this media has been used."1778msgid "Cannot determine if this media has been used."
1765msgstr ""1779msgstr ""
17661780
1767#: server/lib/modules/module.class.php:5851781#: server/lib/modules/module.class.php:590
1768msgid "Delete this media"1782msgid "Delete this media"
1769msgstr ""1783msgstr ""
17701784
1771#: server/lib/modules/module.class.php:5891785#: server/lib/modules/module.class.php:594
1772msgid "Unassign from all Layouts"1786msgid "Unassign from all Layouts"
1773msgstr ""1787msgstr ""
17741788
1775#: server/lib/modules/module.class.php:5901789#: server/lib/modules/module.class.php:595
1776msgid "Retire this media"1790msgid "Retire this media"
1777msgstr ""1791msgstr ""
17781792
1779#: server/lib/modules/module.class.php:5981793#: server/lib/modules/module.class.php:603
1780msgid "You do not have permission to alter/delete this media."1794msgid "You do not have permission to alter/delete this media."
1781msgstr ""1795msgstr ""
17821796
1783#: server/lib/modules/module.class.php:6081797#: server/lib/modules/module.class.php:613
1784msgid "Are you sure you want to delete this media?"1798msgid "Are you sure you want to delete this media?"
1785msgstr ""1799msgstr ""
17861800
1787#: server/lib/modules/module.class.php:6091801#: server/lib/modules/module.class.php:614
1788msgid "Please select from the following options"1802msgid "Please select from the following options"
1789msgstr ""1803msgstr ""
17901804
1791#: server/lib/modules/module.class.php:6101805#: server/lib/modules/module.class.php:615
1792msgid "Deleting media cannot be undone"1806msgid "Deleting media cannot be undone"
1793msgstr ""1807msgstr ""
17941808
1795#: server/lib/modules/module.class.php:6331809#: server/lib/modules/module.class.php:638
1796msgid "Delete Media"1810msgid "Delete Media"
1797msgstr ""1811msgstr ""
17981812
1799#: server/lib/modules/module.class.php:7061813#: server/lib/modules/module.class.php:711
1800msgid "Completed Successfully"1814msgid "Completed Successfully"
1801msgstr ""1815msgstr ""
18021816
1803#: server/lib/modules/module.class.php:7621817#: server/lib/modules/module.class.php:767
1804msgid "Media unassigned from all Layouts"1818msgid "Media unassigned from all Layouts"
1805msgstr ""1819msgstr ""
18061820
1807#: server/lib/modules/module.class.php:7721821#: server/lib/modules/module.class.php:777
1808#: server/lib/modules/module.class.php:8901822#: server/lib/modules/module.class.php:895
1809msgid "Not yet implemented by this module."1823msgid "Not yet implemented by this module."
1810msgstr ""1824msgstr ""
18111825
1812#: server/lib/modules/module.class.php:7751826#: server/lib/modules/module.class.php:780
1813#: server/lib/modules/module.class.php:8931827#: server/lib/modules/module.class.php:898
1814msgid "Add Item"1828msgid "Add Item"
1815msgstr ""1829msgstr ""
18161830
1817#: server/lib/modules/module.class.php:8421831#: server/lib/modules/module.class.php:847
1818msgid "Assign to Layout"1832msgid "Assign to Layout"
1819msgstr ""1833msgstr ""
18201834
1821#: server/lib/modules/module.class.php:8431835#: server/lib/modules/module.class.php:848
1822msgid "View Library"1836msgid "View Library"
1823msgstr ""1837msgstr ""
18241838
1825#: server/lib/modules/module.class.php:8441839#: server/lib/modules/module.class.php:849
1826#: server/lib/modules/module.class.php:8481840#: server/lib/modules/module.class.php:853
1827#: server/lib/modules/module.class.php:8521841#: server/lib/modules/module.class.php:857
1828#: server/lib/modules/module.class.php:8591842#: server/lib/modules/module.class.php:864
1829#: server/lib/pages/admin.class.php:588 server/lib/pages/admin.class.php:6111843#: server/lib/pages/admin.class.php:588 server/lib/pages/admin.class.php:611
1830#: server/lib/pages/content.class.php:2091844#: server/lib/pages/content.class.php:209
1831#: server/lib/pages/dataset.class.php:3731845#: server/lib/pages/dataset.class.php:373
@@ -1838,13 +1852,13 @@
1838msgid "Close"1852msgid "Close"
1839msgstr ""1853msgstr ""
18401854
1841#: server/lib/modules/module.class.php:9521855#: server/lib/modules/module.class.php:957
1842#: server/lib/modules/module.class.php:9561856#: server/lib/modules/module.class.php:961
1843#: server/lib/modules/module.class.php:9601857#: server/lib/modules/module.class.php:965
1844#: server/lib/modules/module.class.php:14041858#: server/lib/modules/module.class.php:1436
1845#: server/lib/modules/module.class.php:14071859#: server/lib/modules/module.class.php:1439
1846#: server/lib/modules/module.class.php:16541860#: server/lib/modules/module.class.php:1686
1847#: server/lib/modules/module.class.php:16561861#: server/lib/modules/module.class.php:1688
1848#: server/lib/pages/admin.class.php:6721862#: server/lib/pages/admin.class.php:672
1849#: server/lib/pages/campaign.class.php:1451863#: server/lib/pages/campaign.class.php:145
1850#: server/lib/pages/campaign.class.php:2151864#: server/lib/pages/campaign.class.php:215
@@ -1865,20 +1879,20 @@
1865#: server/lib/pages/display.class.php:8251879#: server/lib/pages/display.class.php:825
1866#: server/lib/pages/displaygroup.class.php:1571880#: server/lib/pages/displaygroup.class.php:157
1867#: server/lib/pages/displaygroup.class.php:2051881#: server/lib/pages/displaygroup.class.php:205
1868#: server/lib/pages/displaygroup.class.php:3071882#: server/lib/pages/displaygroup.class.php:310
1869#: server/lib/pages/displaygroup.class.php:5411883#: server/lib/pages/displaygroup.class.php:550
1870#: server/lib/pages/displaygroup.class.php:7021884#: server/lib/pages/displaygroup.class.php:711
1871#: server/lib/pages/displaygroup.class.php:8361885#: server/lib/pages/displaygroup.class.php:845
1872#: server/lib/pages/group.class.php:225 server/lib/pages/group.class.php:6991886#: server/lib/pages/group.class.php:225 server/lib/pages/group.class.php:699
1873#: server/lib/pages/help.class.php:195 server/lib/pages/help.class.php:2331887#: server/lib/pages/help.class.php:195 server/lib/pages/help.class.php:233
1874#: server/lib/pages/layout.class.php:513 server/lib/pages/layout.class.php:6001888#: server/lib/pages/layout.class.php:516 server/lib/pages/layout.class.php:603
1875#: server/lib/pages/layout.class.php:801 server/lib/pages/module.class.php:2021889#: server/lib/pages/layout.class.php:804 server/lib/pages/module.class.php:202
1876#: server/lib/pages/oauth.class.php:2091890#: server/lib/pages/oauth.class.php:209
1877#: server/lib/pages/resolution.class.php:1251891#: server/lib/pages/resolution.class.php:125
1878#: server/lib/pages/resolution.class.php:1661892#: server/lib/pages/resolution.class.php:166
1879#: server/lib/pages/schedule.class.php:14481893#: server/lib/pages/schedule.class.php:1451
1880#: server/lib/pages/schedule.class.php:16151894#: server/lib/pages/schedule.class.php:1618
1881#: server/lib/pages/schedule.class.php:19401895#: server/lib/pages/schedule.class.php:1943
1882#: server/lib/pages/template.class.php:1551896#: server/lib/pages/template.class.php:155
1883#: server/lib/pages/template.class.php:3681897#: server/lib/pages/template.class.php:368
1884#: server/lib/pages/timeline.class.php:1901898#: server/lib/pages/timeline.class.php:190
@@ -1888,10 +1902,10 @@
1888#: server/lib/pages/user.class.php:547 server/lib/pages/user.class.php:6011902#: server/lib/pages/user.class.php:547 server/lib/pages/user.class.php:601
1889#: server/modules/counter.module.php:60 server/modules/counter.module.php:641903#: server/modules/counter.module.php:60 server/modules/counter.module.php:64
1890#: server/modules/counter.module.php:126 server/modules/counter.module.php:1301904#: server/modules/counter.module.php:126 server/modules/counter.module.php:130
1891#: server/modules/datasetview.module.php:861905#: server/modules/datasetview.module.php:65
1892#: server/modules/datasetview.module.php:901906#: server/modules/datasetview.module.php:69
1893#: server/modules/datasetview.module.php:2061907#: server/modules/datasetview.module.php:185
1894#: server/modules/datasetview.module.php:2101908#: server/modules/datasetview.module.php:189
1895#: server/modules/embedded.module.php:67 server/modules/embedded.module.php:711909#: server/modules/embedded.module.php:67 server/modules/embedded.module.php:71
1896#: server/modules/embedded.module.php:1351910#: server/modules/embedded.module.php:135
1897#: server/modules/embedded.module.php:1391911#: server/modules/embedded.module.php:139
@@ -1917,9 +1931,9 @@
1917msgid "Cancel"1931msgid "Cancel"
1918msgstr ""1932msgstr ""
19191933
1920#: server/lib/modules/module.class.php:9631934#: server/lib/modules/module.class.php:968
1921#: server/lib/modules/module.class.php:14101935#: server/lib/modules/module.class.php:1442
1922#: server/lib/modules/module.class.php:16591936#: server/lib/modules/module.class.php:1691
1923#: server/lib/pages/admin.class.php:1681937#: server/lib/pages/admin.class.php:168
1924#: server/lib/pages/campaign.class.php:1461938#: server/lib/pages/campaign.class.php:146
1925#: server/lib/pages/campaign.class.php:2161939#: server/lib/pages/campaign.class.php:216
@@ -1933,18 +1947,18 @@
1933#: server/lib/pages/display.class.php:7311947#: server/lib/pages/display.class.php:731
1934#: server/lib/pages/displaygroup.class.php:1581948#: server/lib/pages/displaygroup.class.php:158
1935#: server/lib/pages/displaygroup.class.php:2061949#: server/lib/pages/displaygroup.class.php:206
1936#: server/lib/pages/displaygroup.class.php:3081950#: server/lib/pages/displaygroup.class.php:311
1937#: server/lib/pages/displaygroup.class.php:5421951#: server/lib/pages/displaygroup.class.php:551
1938#: server/lib/pages/displaygroup.class.php:8371952#: server/lib/pages/displaygroup.class.php:846
1939#: server/lib/pages/group.class.php:226 server/lib/pages/group.class.php:7001953#: server/lib/pages/group.class.php:226 server/lib/pages/group.class.php:700
1940#: server/lib/pages/help.class.php:196 server/lib/pages/help.class.php:2341954#: server/lib/pages/help.class.php:196 server/lib/pages/help.class.php:234
1941#: server/lib/pages/layout.class.php:514 server/lib/pages/layout.class.php:6011955#: server/lib/pages/layout.class.php:517 server/lib/pages/layout.class.php:604
1942#: server/lib/pages/module.class.php:2031956#: server/lib/pages/module.class.php:203
1943#: server/lib/pages/resolution.class.php:1261957#: server/lib/pages/resolution.class.php:126
1944#: server/lib/pages/resolution.class.php:1671958#: server/lib/pages/resolution.class.php:167
1945#: server/lib/pages/schedule.class.php:14501959#: server/lib/pages/schedule.class.php:1453
1946#: server/lib/pages/schedule.class.php:16161960#: server/lib/pages/schedule.class.php:1619
1947#: server/lib/pages/schedule.class.php:19411961#: server/lib/pages/schedule.class.php:1944
1948#: server/lib/pages/template.class.php:1561962#: server/lib/pages/template.class.php:156
1949#: server/lib/pages/template.class.php:3691963#: server/lib/pages/template.class.php:369
1950#: server/lib/pages/timeline.class.php:1911964#: server/lib/pages/timeline.class.php:191
@@ -1953,8 +1967,8 @@
1953#: server/lib/pages/user.class.php:548 server/lib/pages/user.class.php:6021967#: server/lib/pages/user.class.php:548 server/lib/pages/user.class.php:602
1954#: server/lib/pages/user.class.php:693 server/lib/pages/user.class.php:7441968#: server/lib/pages/user.class.php:693 server/lib/pages/user.class.php:744
1955#: server/modules/counter.module.php:70 server/modules/counter.module.php:1361969#: server/modules/counter.module.php:70 server/modules/counter.module.php:136
1956#: server/modules/datasetview.module.php:931970#: server/modules/datasetview.module.php:72
1957#: server/modules/datasetview.module.php:2131971#: server/modules/datasetview.module.php:192
1958#: server/modules/embedded.module.php:791972#: server/modules/embedded.module.php:79
1959#: server/modules/embedded.module.php:1471973#: server/modules/embedded.module.php:147
1960#: server/modules/localvideo.module.php:781974#: server/modules/localvideo.module.php:78
@@ -1970,21 +1984,21 @@
1970msgid "Save"1984msgid "Save"
1971msgstr ""1985msgstr ""
19721986
1973#: server/lib/modules/module.class.php:10011987#: server/lib/modules/module.class.php:1006
1974msgid "Add Media has not been implemented for this module."1988msgid "Add Media has not been implemented for this module."
1975msgstr ""1989msgstr ""
19761990
1977#: server/lib/modules/module.class.php:10481991#: server/lib/modules/module.class.php:1053
1978msgid "Unable to get the storage name"1992msgid "Unable to get the storage name"
1979msgstr ""1993msgstr ""
19801994
1981#: server/lib/modules/module.class.php:10841995#: server/lib/modules/module.class.php:1089
1982msgid "Edit Media has not been implemented for this module."1996msgid "Edit Media has not been implemented for this module."
1983msgstr ""1997msgstr ""
19841998
1985#: server/lib/modules/module.class.php:13001999#: server/lib/modules/module.class.php:1332
1986#: server/lib/pages/schedule.class.php:11952000#: server/lib/pages/schedule.class.php:1198
1987#: server/lib/pages/schedule.class.php:13152001#: server/lib/pages/schedule.class.php:1318
1988#: server/modules/ticker.module.php:4332002#: server/modules/ticker.module.php:433
1989#: server/theme/default/html/displaygroup_fileassociations_form_assign.php:492003#: server/theme/default/html/displaygroup_fileassociations_form_assign.php:49
1990#: server/theme/default/html/displaygroup_fileassociations_form_assign_list.php:272004#: server/theme/default/html/displaygroup_fileassociations_form_assign_list.php:27
@@ -2001,10 +2015,10 @@
2001msgid "Type"2015msgid "Type"
2002msgstr ""2016msgstr ""
20032017
2004#: server/lib/modules/module.class.php:13012018#: server/lib/modules/module.class.php:1333
2005#: server/lib/pages/schedule.class.php:4622019#: server/lib/pages/schedule.class.php:462
2006#: server/lib/pages/schedule.class.php:11942020#: server/lib/pages/schedule.class.php:1197
2007#: server/lib/pages/schedule.class.php:13142021#: server/lib/pages/schedule.class.php:1317
2008#: server/theme/default/html/campaign_form_add.php:312022#: server/theme/default/html/campaign_form_add.php:31
2009#: server/theme/default/html/campaign_form_edit.php:322023#: server/theme/default/html/campaign_form_edit.php:32
2010#: server/theme/default/html/campaign_form_layout_assign.php:472024#: server/theme/default/html/campaign_form_layout_assign.php:47
@@ -2045,7 +2059,7 @@
2045msgid "Name"2059msgid "Name"
2046msgstr ""2060msgstr ""
20472061
2048#: server/lib/modules/module.class.php:13022062#: server/lib/modules/module.class.php:1334
2049#: server/modules/localvideo.module.php:482063#: server/modules/localvideo.module.php:48
2050#: server/modules/localvideo.module.php:1122064#: server/modules/localvideo.module.php:112
2051#: server/modules/ticker.module.php:4352065#: server/modules/ticker.module.php:435
@@ -2071,18 +2085,18 @@
2071msgid "Duration"2085msgid "Duration"
2072msgstr ""2086msgstr ""
20732087
2074#: server/lib/modules/module.class.php:13142088#: server/lib/modules/module.class.php:1346
2075#: server/modules/ticker.module.php:4522089#: server/modules/ticker.module.php:452
2076msgid "seconds"2090msgid "seconds"
2077msgstr ""2091msgstr ""
20782092
2079#: server/lib/modules/module.class.php:13382093#: server/lib/modules/module.class.php:1370
2080msgid "You do not have permissions to edit this media"2094msgid "You do not have permissions to edit this media"
2081msgstr ""2095msgstr ""
20822096
2083#: server/lib/modules/module.class.php:13472097#: server/lib/modules/module.class.php:1379
2084#: server/lib/pages/schedule.class.php:4772098#: server/lib/pages/schedule.class.php:477
2085#: server/lib/pages/schedule.class.php:13292099#: server/lib/pages/schedule.class.php:1332
2086#: server/lib/pages/timeline.class.php:5042100#: server/lib/pages/timeline.class.php:504
2087#: server/theme/default/html/campaign_form_permissions.php:392101#: server/theme/default/html/campaign_form_permissions.php:39
2088#: server/theme/default/html/dataset_form_permissions.php:392102#: server/theme/default/html/dataset_form_permissions.php:39
@@ -2091,7 +2105,7 @@
2091msgid "Group"2105msgid "Group"
2092msgstr ""2106msgstr ""
20932107
2094#: server/lib/modules/module.class.php:13482108#: server/lib/modules/module.class.php:1380
2095#: server/lib/pages/timeline.class.php:5052109#: server/lib/pages/timeline.class.php:505
2096#: server/theme/default/html/campaign_form_permissions.php:402110#: server/theme/default/html/campaign_form_permissions.php:40
2097#: server/theme/default/html/dataset_form_permissions.php:402111#: server/theme/default/html/dataset_form_permissions.php:40
@@ -2100,7 +2114,7 @@
2100msgid "View"2114msgid "View"
2101msgstr ""2115msgstr ""
21022116
2103#: server/lib/modules/module.class.php:13492117#: server/lib/modules/module.class.php:1381
2104#: server/lib/pages/campaign.class.php:932118#: server/lib/pages/campaign.class.php:93
2105#: server/lib/pages/content.class.php:1272119#: server/lib/pages/content.class.php:127
2106#: server/lib/pages/dataset.class.php:1022120#: server/lib/pages/dataset.class.php:102
@@ -2109,7 +2123,7 @@
2109#: server/lib/pages/display.class.php:3452123#: server/lib/pages/display.class.php:345
2110#: server/lib/pages/displaygroup.class.php:912124#: server/lib/pages/displaygroup.class.php:91
2111#: server/lib/pages/group.class.php:144 server/lib/pages/help.class.php:1532125#: server/lib/pages/group.class.php:144 server/lib/pages/help.class.php:153
2112#: server/lib/pages/layout.class.php:4222126#: server/lib/pages/layout.class.php:425
2113#: server/lib/pages/mediamanager.class.php:1582127#: server/lib/pages/mediamanager.class.php:158
2114#: server/lib/pages/module.class.php:1352128#: server/lib/pages/module.class.php:135
2115#: server/lib/pages/resolution.class.php:872129#: server/lib/pages/resolution.class.php:87
@@ -2125,7 +2139,7 @@
2125msgid "Edit"2139msgid "Edit"
2126msgstr ""2140msgstr ""
21272141
2128#: server/lib/modules/module.class.php:13502142#: server/lib/modules/module.class.php:1382
2129#: server/lib/pages/campaign.class.php:1032143#: server/lib/pages/campaign.class.php:103
2130#: server/lib/pages/content.class.php:1372144#: server/lib/pages/content.class.php:137
2131#: server/lib/pages/dataset.class.php:1192145#: server/lib/pages/dataset.class.php:119
@@ -2135,10 +2149,10 @@
2135#: server/lib/pages/display.class.php:3692149#: server/lib/pages/display.class.php:369
2136#: server/lib/pages/displaygroup.class.php:1082150#: server/lib/pages/displaygroup.class.php:108
2137#: server/lib/pages/group.class.php:151 server/lib/pages/help.class.php:1602151#: server/lib/pages/group.class.php:151 server/lib/pages/help.class.php:160
2138#: server/lib/pages/layout.class.php:438 server/lib/pages/layout.class.php:7462152#: server/lib/pages/layout.class.php:441 server/lib/pages/layout.class.php:749
2139#: server/lib/pages/resolution.class.php:942153#: server/lib/pages/resolution.class.php:94
2140#: server/lib/pages/schedule.class.php:4822154#: server/lib/pages/schedule.class.php:482
2141#: server/lib/pages/schedule.class.php:16142155#: server/lib/pages/schedule.class.php:1617
2142#: server/lib/pages/template.class.php:1122156#: server/lib/pages/template.class.php:112
2143#: server/lib/pages/timeline.class.php:3492157#: server/lib/pages/timeline.class.php:349
2144#: server/lib/pages/timeline.class.php:5072158#: server/lib/pages/timeline.class.php:507
@@ -2150,11 +2164,11 @@
2150msgid "Delete"2164msgid "Delete"
2151msgstr ""2165msgstr ""
21522166
2153#: server/lib/modules/module.class.php:13812167#: server/lib/modules/module.class.php:1413
2154msgid "Unable to get permissions for this layout"2168msgid "Unable to get permissions for this layout"
2155msgstr ""2169msgstr ""
21562170
2157#: server/lib/modules/module.class.php:14002171#: server/lib/modules/module.class.php:1432
2158#: server/lib/pages/campaign.class.php:1132172#: server/lib/pages/campaign.class.php:113
2159#: server/lib/pages/campaign.class.php:3872173#: server/lib/pages/campaign.class.php:387
2160#: server/lib/pages/content.class.php:1472174#: server/lib/pages/content.class.php:147
@@ -2162,8 +2176,8 @@
2162#: server/lib/pages/dataset.class.php:9092176#: server/lib/pages/dataset.class.php:909
2163#: server/lib/pages/display.class.php:3862177#: server/lib/pages/display.class.php:386
2164#: server/lib/pages/displaygroup.class.php:1182178#: server/lib/pages/displaygroup.class.php:118
2165#: server/lib/pages/displaygroup.class.php:5392179#: server/lib/pages/displaygroup.class.php:548
2166#: server/lib/pages/layout.class.php:448 server/lib/pages/layout.class.php:7472180#: server/lib/pages/layout.class.php:451 server/lib/pages/layout.class.php:750
2167#: server/lib/pages/template.class.php:1222181#: server/lib/pages/template.class.php:122
2168#: server/lib/pages/template.class.php:3662182#: server/lib/pages/template.class.php:366
2169#: server/lib/pages/timeline.class.php:5462183#: server/lib/pages/timeline.class.php:546
@@ -2175,124 +2189,124 @@
2175msgid "Permissions"2189msgid "Permissions"
2176msgstr ""2190msgstr ""
21772191
2178#: server/lib/modules/module.class.php:14332192#: server/lib/modules/module.class.php:1465
2179#: server/lib/pages/layout.class.php:65 server/lib/pages/layout.class.php:5302193#: server/lib/pages/layout.class.php:65 server/lib/pages/layout.class.php:533
2180#: server/lib/pages/layout.class.php:6252194#: server/lib/pages/layout.class.php:628
2181msgid "You do not have permissions to edit this layout"2195msgid "You do not have permissions to edit this layout"
2182msgstr ""2196msgstr ""
21832197
2184#: server/lib/modules/module.class.php:15222198#: server/lib/modules/module.class.php:1554
2185#: server/lib/pages/campaign.class.php:4752199#: server/lib/pages/campaign.class.php:475
2186#: server/lib/pages/dataset.class.php:9972200#: server/lib/pages/dataset.class.php:997
2187#: server/lib/pages/displaygroup.class.php:6292201#: server/lib/pages/displaygroup.class.php:638
2188#: server/lib/pages/template.class.php:4592202#: server/lib/pages/template.class.php:459
2189#: server/lib/pages/timeline.class.php:6342203#: server/lib/pages/timeline.class.php:634
2190msgid "Permissions Changed"2204msgid "Permissions Changed"
2191msgstr ""2205msgstr ""
21922206
2193#: server/lib/modules/module.class.php:15952207#: server/lib/modules/module.class.php:1627
2194#: server/lib/modules/module.class.php:17072208#: server/lib/modules/module.class.php:1739
2195#: server/lib/modules/module.class.php:17402209#: server/lib/modules/module.class.php:1772
2196msgid "Unknown transition type"2210msgid "Unknown transition type"
2197msgstr ""2211msgstr ""
21982212
2199#: server/lib/modules/module.class.php:16072213#: server/lib/modules/module.class.php:1639
2200#: server/lib/pages/timeline.class.php:1692214#: server/lib/pages/timeline.class.php:169
2201msgid "North"2215msgid "North"
2202msgstr ""2216msgstr ""
22032217
2204#: server/lib/modules/module.class.php:16082218#: server/lib/modules/module.class.php:1640
2205#: server/lib/pages/timeline.class.php:1702219#: server/lib/pages/timeline.class.php:170
2206msgid "North East"2220msgid "North East"
2207msgstr ""2221msgstr ""
22082222
2209#: server/lib/modules/module.class.php:16092223#: server/lib/modules/module.class.php:1641
2210#: server/lib/pages/timeline.class.php:1712224#: server/lib/pages/timeline.class.php:171
2211msgid "East"2225msgid "East"
2212msgstr ""2226msgstr ""
22132227
2214#: server/lib/modules/module.class.php:16102228#: server/lib/modules/module.class.php:1642
2215#: server/lib/pages/timeline.class.php:1722229#: server/lib/pages/timeline.class.php:172
2216msgid "South East"2230msgid "South East"
2217msgstr ""2231msgstr ""
22182232
2219#: server/lib/modules/module.class.php:16112233#: server/lib/modules/module.class.php:1643
2220#: server/lib/pages/timeline.class.php:1732234#: server/lib/pages/timeline.class.php:173
2221msgid "South"2235msgid "South"
2222msgstr ""2236msgstr ""
22232237
2224#: server/lib/modules/module.class.php:16122238#: server/lib/modules/module.class.php:1644
2225#: server/lib/pages/timeline.class.php:1742239#: server/lib/pages/timeline.class.php:174
2226msgid "South West"2240msgid "South West"
2227msgstr ""2241msgstr ""
22282242
2229#: server/lib/modules/module.class.php:16132243#: server/lib/modules/module.class.php:1645
2230#: server/lib/pages/timeline.class.php:1752244#: server/lib/pages/timeline.class.php:175
2231msgid "West"2245msgid "West"
2232msgstr ""2246msgstr ""
22332247
2234#: server/lib/modules/module.class.php:16142248#: server/lib/modules/module.class.php:1646
2235#: server/lib/pages/timeline.class.php:1762249#: server/lib/pages/timeline.class.php:176
2236msgid "North West"2250msgid "North West"
2237msgstr ""2251msgstr ""
22382252
2239#: server/lib/modules/module.class.php:16212253#: server/lib/modules/module.class.php:1653
2240msgid "What transition should be applied to this media item?"2254msgid "What transition should be applied to this media item?"
2241msgstr ""2255msgstr ""
22422256
2243#: server/lib/modules/module.class.php:16222257#: server/lib/modules/module.class.php:1654
2244#: server/theme/default/html/region_form_options.php:562258#: server/theme/default/html/region_form_options.php:56
2245msgid "The duration for this transition, in milliseconds."2259msgid "The duration for this transition, in milliseconds."
2246msgstr ""2260msgstr ""
22472261
2248#: server/lib/modules/module.class.php:16232262#: server/lib/modules/module.class.php:1655
2249msgid "The direction for this transition."2263msgid "The direction for this transition."
2250msgstr ""2264msgstr ""
22512265
2252#: server/lib/modules/module.class.php:1744 server/modules/text.module.php:522266#: server/lib/modules/module.class.php:1776 server/modules/text.module.php:52
2253#: server/modules/text.module.php:130 server/modules/ticker.module.php:1322267#: server/modules/text.module.php:130 server/modules/ticker.module.php:132
2254#: server/modules/webpage.module.php:51 server/modules/webpage.module.php:1082268#: server/modules/webpage.module.php:51 server/modules/webpage.module.php:108
2255msgid "None"2269msgid "None"
2256msgstr ""2270msgstr ""
22572271
2258#: server/lib/modules/module.class.php:17612272#: server/lib/modules/module.class.php:1793
2259msgid "No XLF provided"2273msgid "No XLF provided"
2260msgstr ""2274msgstr ""
22612275
2262#: server/lib/modules/module.class.php:17692276#: server/lib/modules/module.class.php:1801
2263msgid "Invalid XLF"2277msgid "Invalid XLF"
2264msgstr ""2278msgstr ""
22652279
2266#: server/lib/modules/module.class.php:17972280#: server/lib/modules/module.class.php:1829
2267msgid "Too many media nodes"2281msgid "Too many media nodes"
2268msgstr ""2282msgstr ""
22692283
2270#: server/lib/modules/module.class.php:18042284#: server/lib/modules/module.class.php:1836
2271msgid "SchemaVersion does not match"2285msgid "SchemaVersion does not match"
2272msgstr ""2286msgstr ""
22732287
2274#: server/lib/modules/module.class.php:18082288#: server/lib/modules/module.class.php:1840
2275msgid "Media Type does not match"2289msgid "Media Type does not match"
2276msgstr ""2290msgstr ""
22772291
2278#: server/lib/modules/module.class.php:18172292#: server/lib/modules/module.class.php:1849
2279#, php-format2293#, php-format
2280msgid "ID does not match [%s vs %s]"2294msgid "ID does not match [%s vs %s]"
2281msgstr ""2295msgstr ""
22822296
2283#: server/lib/modules/module.class.php:18212297#: server/lib/modules/module.class.php:1853
2284msgid "UserId does not match"2298msgid "UserId does not match"
2285msgstr ""2299msgstr ""
22862300
2287#: server/lib/modules/module.class.php:18362301#: server/lib/modules/module.class.php:1868
2288msgid "ID does not match"2302msgid "ID does not match"
2289msgstr ""2303msgstr ""
22902304
2291#: server/lib/modules/module.class.php:18482305#: server/lib/modules/module.class.php:1880
2292msgid "Duration not provided or not a number"2306msgid "Duration not provided or not a number"
2293msgstr ""2307msgstr ""
22942308
2295#: server/lib/modules/module.class.php:18512309#: server/lib/modules/module.class.php:1883
2296msgid "Cannot be less than zero"2310msgid "Cannot be less than zero"
2297msgstr ""2311msgstr ""
22982312
@@ -2516,8 +2530,8 @@
25162530
2517#: server/lib/pages/campaign.class.php:762531#: server/lib/pages/campaign.class.php:76
2518#: server/lib/pages/display.class.php:3222532#: server/lib/pages/display.class.php:322
2519#: server/lib/pages/layout.class.php:3992533#: server/lib/pages/layout.class.php:402
2520#: server/lib/pages/schedule.class.php:19382534#: server/lib/pages/schedule.class.php:1941
2521#: server/theme/default/html/layout_designer.php:492535#: server/theme/default/html/layout_designer.php:49
2522msgid "Schedule Now"2536msgid "Schedule Now"
2523msgstr ""2537msgstr ""
@@ -2644,7 +2658,7 @@
2644msgstr ""2658msgstr ""
26452659
2646#: server/lib/pages/content.class.php:2602660#: server/lib/pages/content.class.php:260
2647#: server/lib/pages/displaygroup.class.php:7032661#: server/lib/pages/displaygroup.class.php:712
2648msgid "Assign"2662msgid "Assign"
2649msgstr ""2663msgstr ""
26502664
@@ -2798,7 +2812,7 @@
2798msgstr ""2812msgstr ""
27992813
2800#: server/lib/pages/dataset.class.php:10972814#: server/lib/pages/dataset.class.php:1097
2801msgid "Files with a CSV extention only."2815msgid "Files with a CSV extension only."
2802msgstr ""2816msgstr ""
28032817
2804#: server/lib/pages/dataset.class.php:11342818#: server/lib/pages/dataset.class.php:1134
@@ -2929,13 +2943,13 @@
2929msgstr ""2943msgstr ""
29302944
2931#: server/lib/pages/display.class.php:7282945#: server/lib/pages/display.class.php:728
2932#: server/lib/pages/displaygroup.class.php:3052946#: server/lib/pages/displaygroup.class.php:308
2933#: server/lib/pages/group.class.php:6972947#: server/lib/pages/group.class.php:697
2934msgid "Manage Membership"2948msgid "Manage Membership"
2935msgstr ""2949msgstr ""
29362950
2937#: server/lib/pages/display.class.php:7972951#: server/lib/pages/display.class.php:797
2938#: server/lib/pages/displaygroup.class.php:4702952#: server/lib/pages/displaygroup.class.php:479
2939#: server/lib/pages/group.class.php:7652953#: server/lib/pages/group.class.php:765
2940msgid "Group membership set"2954msgid "Group membership set"
2941msgstr ""2955msgstr ""
@@ -2967,12 +2981,12 @@
29672981
2968#: server/lib/pages/displaygroup.class.php:1772982#: server/lib/pages/displaygroup.class.php:177
2969#: server/lib/pages/displaygroup.class.php:2222983#: server/lib/pages/displaygroup.class.php:222
2970#: server/lib/pages/displaygroup.class.php:3592984#: server/lib/pages/displaygroup.class.php:368
2971#: server/lib/pages/displaygroup.class.php:3912985#: server/lib/pages/displaygroup.class.php:400
2972#: server/lib/pages/displaygroup.class.php:4222986#: server/lib/pages/displaygroup.class.php:431
2973#: server/lib/pages/displaygroup.class.php:6402987#: server/lib/pages/displaygroup.class.php:649
2974#: server/lib/pages/displaygroup.class.php:7772988#: server/lib/pages/displaygroup.class.php:786
2975#: server/lib/pages/displaygroup.class.php:8542989#: server/lib/pages/displaygroup.class.php:863
2976msgid "You do not have permission to edit this display group"2990msgid "You do not have permission to edit this display group"
2977msgstr ""2991msgstr ""
29782992
@@ -2992,65 +3006,65 @@
2992msgid "Delete Display Group"3006msgid "Delete Display Group"
2993msgstr ""3007msgstr ""
29943008
2995#: server/lib/pages/displaygroup.class.php:2723009#: server/lib/pages/displaygroup.class.php:270
2996#: server/lib/pages/displaygroup.class.php:2973010#: server/lib/pages/displaygroup.class.php:290
2997#: server/lib/pages/displaygroup.class.php:4353011#: server/lib/pages/displaygroup.class.php:444
2998msgid "Error getting Displays"3012msgid "Error getting Displays"
2999msgstr ""3013msgstr ""
30003014
3001#: server/lib/pages/displaygroup.class.php:3353015#: server/lib/pages/displaygroup.class.php:344
3002msgid "Display Group Added"3016msgid "Display Group Added"
3003msgstr ""3017msgstr ""
30043018
3005#: server/lib/pages/displaygroup.class.php:3693019#: server/lib/pages/displaygroup.class.php:378
3006msgid "Display Group Edited"3020msgid "Display Group Edited"
3007msgstr ""3021msgstr ""
30083022
3009#: server/lib/pages/displaygroup.class.php:4013023#: server/lib/pages/displaygroup.class.php:410
3010msgid "Display Group Deleted"3024msgid "Display Group Deleted"
3011msgstr ""3025msgstr ""
30123026
3013#: server/lib/pages/displaygroup.class.php:4893027#: server/lib/pages/displaygroup.class.php:498
3014#: server/lib/pages/displaygroup.class.php:5653028#: server/lib/pages/displaygroup.class.php:574
3015msgid "You do not have permissions to edit this display group"3029msgid "You do not have permissions to edit this display group"
3016msgstr ""3030msgstr ""
30173031
3018#: server/lib/pages/displaygroup.class.php:5103032#: server/lib/pages/displaygroup.class.php:519
3019msgid "Unable to get permissions for this DisplayGroup"3033msgid "Unable to get permissions for this DisplayGroup"
3020msgstr ""3034msgstr ""
30213035
3022#: server/lib/pages/displaygroup.class.php:6833036#: server/lib/pages/displaygroup.class.php:692
3023#: server/lib/pages/displaygroup.class.php:7353037#: server/lib/pages/displaygroup.class.php:744
3024msgid "Unable to get existing assignments."3038msgid "Unable to get existing assignments."
3025msgstr ""3039msgstr ""
30263040
3027#: server/lib/pages/displaygroup.class.php:6993041#: server/lib/pages/displaygroup.class.php:708
3028msgid "Associate an item from the Library"3042msgid "Associate an item from the Library"
3029msgstr ""3043msgstr ""
30303044
3031#: server/lib/pages/displaygroup.class.php:7723045#: server/lib/pages/displaygroup.class.php:781
3032msgid "Display Group not selected"3046msgid "Display Group not selected"
3033msgstr ""3047msgstr ""
30343048
3035#: server/lib/pages/displaygroup.class.php:7863049#: server/lib/pages/displaygroup.class.php:795
3036#: server/lib/pages/timeline.class.php:3913050#: server/lib/pages/timeline.class.php:391
3037#, php-format3051#, php-format
3038msgid "%d Media Items Assigned"3052msgid "%d Media Items Assigned"
3039msgstr ""3053msgstr ""
30403054
3041#: server/lib/pages/displaygroup.class.php:8033055#: server/lib/pages/displaygroup.class.php:812
3042msgid "Unknown Display"3056msgid "Unknown Display"
3043msgstr ""3057msgstr ""
30443058
3045#: server/lib/pages/displaygroup.class.php:8083059#: server/lib/pages/displaygroup.class.php:817
3046msgid "No displays in this group"3060msgid "No displays in this group"
3047msgstr ""3061msgstr ""
30483062
3049#: server/lib/pages/displaygroup.class.php:8353063#: server/lib/pages/displaygroup.class.php:844
3050msgid "Set Instructions for Upgrading this client"3064msgid "Set Instructions for Upgrading this client"
3051msgstr ""3065msgstr ""
30523066
3053#: server/lib/pages/displaygroup.class.php:8813067#: server/lib/pages/displaygroup.class.php:890
3054msgid "Version Instructions Set"3068msgid "Version Instructions Set"
3055msgstr ""3069msgstr ""
30563070
@@ -3205,111 +3219,115 @@
3205"corrupt."3219"corrupt."
3206msgstr ""3220msgstr ""
32073221
3208#: server/lib/pages/layout.class.php:189 server/lib/pages/layout.class.php:2203222#: server/lib/pages/layout.class.php:152
3223msgid "Save Position"
3224msgstr ""
3225
3226#: server/lib/pages/layout.class.php:192 server/lib/pages/layout.class.php:223
3209msgid "Layout Details Changed."3227msgid "Layout Details Changed."
3210msgstr ""3228msgstr ""
32113229
3212#: server/lib/pages/layout.class.php:232 server/lib/pages/layout.class.php:2873230#: server/lib/pages/layout.class.php:235 server/lib/pages/layout.class.php:290
3213#: server/lib/pages/layout.class.php:3143231#: server/lib/pages/layout.class.php:317
3214msgid "You do not have permissions to delete this layout"3232msgid "You do not have permissions to delete this layout"
3215msgstr ""3233msgstr ""
32163234
3217#: server/lib/pages/layout.class.php:2453235#: server/lib/pages/layout.class.php:248
3218msgid "Can not get layout information"3236msgid "Can not get layout information"
3219msgstr ""3237msgstr ""
32203238
3221#: server/lib/pages/layout.class.php:2663239#: server/lib/pages/layout.class.php:269
3222msgid "Delete Layout"3240msgid "Delete Layout"
3223msgstr ""3241msgstr ""
32243242
3225#: server/lib/pages/layout.class.php:2943243#: server/lib/pages/layout.class.php:297
3226msgid "The Layout has been Deleted"3244msgid "The Layout has been Deleted"
3227msgstr ""3245msgstr ""
32283246
3229#: server/lib/pages/layout.class.php:3223247#: server/lib/pages/layout.class.php:325
3230msgid "The Layout has been Retired"3248msgid "The Layout has been Retired"
3231msgstr ""3249msgstr ""
32323250
3233#: server/lib/pages/layout.class.php:3593251#: server/lib/pages/layout.class.php:362
3234msgid "Unable to get layouts for user"3252msgid "Unable to get layouts for user"
3235msgstr ""3253msgstr ""
32363254
3237#: server/lib/pages/layout.class.php:376 server/lib/pages/layout.class.php:9623255#: server/lib/pages/layout.class.php:379 server/lib/pages/layout.class.php:965
3238msgid "This Layout is ready to play"3256msgid "This Layout is ready to play"
3239msgstr ""3257msgstr ""
32403258
3241#: server/lib/pages/layout.class.php:380 server/lib/pages/layout.class.php:9663259#: server/lib/pages/layout.class.php:383 server/lib/pages/layout.class.php:969
3242msgid "There are items on this Layout that can only be assessed by the client"3260msgid "There are items on this Layout that can only be assessed by the client"
3243msgstr ""3261msgstr ""
32443262
3245#: server/lib/pages/layout.class.php:384 server/lib/pages/layout.class.php:9703263#: server/lib/pages/layout.class.php:387 server/lib/pages/layout.class.php:973
3246msgid "This Layout is invalid and should not be scheduled"3264msgid "This Layout is invalid and should not be scheduled"
3247msgstr ""3265msgstr ""
32483266
3249#: server/lib/pages/layout.class.php:388 server/lib/pages/layout.class.php:9743267#: server/lib/pages/layout.class.php:391 server/lib/pages/layout.class.php:977
3250msgid "The Status of this Layout is not known"3268msgid "The Status of this Layout is not known"
3251msgstr ""3269msgstr ""
32523270
3253#: server/lib/pages/layout.class.php:4053271#: server/lib/pages/layout.class.php:408
3254#: server/theme/default/html/layout_designer.php:483272#: server/theme/default/html/layout_designer.php:48
3255msgid "Preview Layout"3273msgid "Preview Layout"
3256msgstr ""3274msgstr ""
32573275
3258#: server/lib/pages/layout.class.php:4153276#: server/lib/pages/layout.class.php:418
3259msgid "Design"3277msgid "Design"
3260msgstr ""3278msgstr ""
32613279
3262#: server/lib/pages/layout.class.php:429 server/lib/pages/layout.class.php:8023280#: server/lib/pages/layout.class.php:432 server/lib/pages/layout.class.php:805
3263msgid "Copy"3281msgid "Copy"
3264msgstr ""3282msgstr ""
32653283
3266#: server/lib/pages/layout.class.php:5093284#: server/lib/pages/layout.class.php:512
3267#: server/theme/default/html/layout_page.php:453285#: server/theme/default/html/layout_page.php:45
3268msgid "Add Layout"3286msgid "Add Layout"
3269msgstr ""3287msgstr ""
32703288
3271#: server/lib/pages/layout.class.php:5093289#: server/lib/pages/layout.class.php:512
3272msgid "Edit Layout"3290msgid "Edit Layout"
3273msgstr ""3291msgstr ""
32743292
3275#: server/lib/pages/layout.class.php:5973293#: server/lib/pages/layout.class.php:600
3276msgid "Change the Background Properties"3294msgid "Change the Background Properties"
3277msgstr ""3295msgstr ""
32783296
3279#: server/lib/pages/layout.class.php:5993297#: server/lib/pages/layout.class.php:602
3280msgid "Add Image"3298msgid "Add Image"
3281msgstr ""3299msgstr ""
32823300
3283#: server/lib/pages/layout.class.php:6333301#: server/lib/pages/layout.class.php:636
3284msgid "Layout Background Changed"3302msgid "Layout Background Changed"
3285msgstr ""3303msgstr ""
32863304
3287#: server/lib/pages/layout.class.php:6633305#: server/lib/pages/layout.class.php:666
3288msgid "Unable to determine display resolution"3306msgid "Unable to determine display resolution"
3289msgstr ""3307msgstr ""
32903308
3291#: server/lib/pages/layout.class.php:7443309#: server/lib/pages/layout.class.php:747
3292msgid "Timeline"3310msgid "Timeline"
3293msgstr ""3311msgstr ""
32943312
3295#: server/lib/pages/layout.class.php:7443313#: server/lib/pages/layout.class.php:747
3296msgid "Edit Timeline"3314msgid "Edit Timeline"
3297msgstr ""3315msgstr ""
32983316
3299#: server/lib/pages/layout.class.php:7453317#: server/lib/pages/layout.class.php:748
3300#: server/theme/default/html/layout_designer.php:403318#: server/theme/default/html/layout_designer.php:40
3301msgid "Options"3319msgid "Options"
3302msgstr ""3320msgstr ""
33033321
3304#: server/lib/pages/layout.class.php:7993322#: server/lib/pages/layout.class.php:802
3305msgid "Copy a Layout."3323msgid "Copy a Layout."
3306msgstr ""3324msgstr ""
33073325
3308#: server/lib/pages/layout.class.php:8303326#: server/lib/pages/layout.class.php:833
3309msgid "Layout Copied"3327msgid "Layout Copied"
3310msgstr ""3328msgstr ""
33113329
3312#: server/lib/pages/layout.class.php:8593330#: server/lib/pages/layout.class.php:862
3313msgid "Unable to get group information for layout"3331msgid "Unable to get group information for layout"
3314msgstr ""3332msgstr ""
33153333
@@ -3469,8 +3487,8 @@
3469msgstr ""3487msgstr ""
34703488
3471#: server/lib/pages/schedule.class.php:4633489#: server/lib/pages/schedule.class.php:463
3472#: server/lib/pages/schedule.class.php:11263490#: server/lib/pages/schedule.class.php:1129
3473#: server/lib/pages/schedule.class.php:1210 server/locale/dbtranslate.php:263491#: server/lib/pages/schedule.class.php:1213 server/locale/dbtranslate.php:26
3474#: server/theme/default/html/homepage_mediamanager.php:443492#: server/theme/default/html/homepage_mediamanager.php:44
3475#: server/theme/default/html/homepage_mediamanager_grid.php:383493#: server/theme/default/html/homepage_mediamanager_grid.php:38
3476#: server/theme/default/html/layout_designer.php:803494#: server/theme/default/html/layout_designer.php:80
@@ -3510,8 +3528,8 @@
3510msgstr ""3528msgstr ""
35113529
3512#: server/lib/pages/schedule.class.php:4773530#: server/lib/pages/schedule.class.php:477
3513#: server/lib/pages/schedule.class.php:12403531#: server/lib/pages/schedule.class.php:1243
3514#: server/lib/pages/schedule.class.php:13293532#: server/lib/pages/schedule.class.php:1332
3515#: server/theme/default/html/display_form_edit.php:343533#: server/theme/default/html/display_form_edit.php:34
3516#: server/theme/default/html/display_form_version_instructions.php:393534#: server/theme/default/html/display_form_version_instructions.php:39
3517#: server/theme/default/html/display_page_grid.php:463535#: server/theme/default/html/display_page_grid.php:46
@@ -3525,136 +3543,136 @@
3525msgstr ""3543msgstr ""
35263544
3527#: server/lib/pages/schedule.class.php:6103545#: server/lib/pages/schedule.class.php:610
3528#: server/lib/pages/schedule.class.php:8053546#: server/lib/pages/schedule.class.php:808
3529#: server/lib/pages/schedule.class.php:9083547#: server/lib/pages/schedule.class.php:911
3530#: server/lib/pages/schedule.class.php:10043548#: server/lib/pages/schedule.class.php:1007
3531msgid "Error getting events for date."3549msgid "Error getting events for date."
3532msgstr ""3550msgstr ""
35333551
3534#: server/lib/pages/schedule.class.php:8293552#: server/lib/pages/schedule.class.php:832
3535#: server/lib/pages/schedule.class.php:10283553#: server/lib/pages/schedule.class.php:1031
3536#: server/lib/pages/schedule.class.php:16123554#: server/lib/pages/schedule.class.php:1615
3537msgid "Edit Event"3555msgid "Edit Event"
3538msgstr ""3556msgstr ""
35393557
3540#: server/lib/pages/schedule.class.php:10793558#: server/lib/pages/schedule.class.php:1082
3541msgid "Can not list Display Groups"3559msgid "Can not list Display Groups"
3542msgstr ""3560msgstr ""
35433561
3544#: server/lib/pages/schedule.class.php:10833562#: server/lib/pages/schedule.class.php:1086
3545msgid "No Display Groups"3563msgid "No Display Groups"
3546msgstr ""3564msgstr ""
35473565
3548#: server/lib/pages/schedule.class.php:1086 server/locale/dbtranslate.php:323566#: server/lib/pages/schedule.class.php:1089 server/locale/dbtranslate.php:32
3549#: server/theme/default/html/schedule_page_display_list.php:383567#: server/theme/default/html/schedule_page_display_list.php:38
3550msgid "Groups"3568msgid "Groups"
3551msgstr ""3569msgstr ""
35523570
3553#: server/lib/pages/schedule.class.php:1107 server/locale/dbtranslate.php:313571#: server/lib/pages/schedule.class.php:1110 server/locale/dbtranslate.php:31
3554#: server/theme/default/html/schedule_page_display_list.php:483572#: server/theme/default/html/schedule_page_display_list.php:48
3555msgid "Displays"3573msgid "Displays"
3556msgstr ""3574msgstr ""
35573575
3558#: server/lib/pages/schedule.class.php:12103576#: server/lib/pages/schedule.class.php:1213
3559msgid "Campaign"3577msgid "Campaign"
3560msgstr ""3578msgstr ""
35613579
3562#: server/lib/pages/schedule.class.php:14463580#: server/lib/pages/schedule.class.php:1449
3563msgid "Schedule Event"3581msgid "Schedule Event"
3564msgstr ""3582msgstr ""
35653583
3566#: server/lib/pages/schedule.class.php:14973584#: server/lib/pages/schedule.class.php:1500
3567msgid "Error getting details for this event."3585msgid "Error getting details for this event."
3568msgstr ""3586msgstr ""
35693587
3570#: server/lib/pages/schedule.class.php:15243588#: server/lib/pages/schedule.class.php:1527
3571msgid "You do not have permission to edit this event."3589msgid "You do not have permission to edit this event."
3572msgstr ""3590msgstr ""
35733591
3574#: server/lib/pages/schedule.class.php:16643592#: server/lib/pages/schedule.class.php:1667
3575#: server/lib/pages/schedule.class.php:17493593#: server/lib/pages/schedule.class.php:1752
3576#: server/lib/pages/schedule.class.php:19693594#: server/lib/pages/schedule.class.php:1972
3577msgid "No layout selected"3595msgid "No layout selected"
3578msgstr ""3596msgstr ""
35793597
3580#: server/lib/pages/schedule.class.php:16703598#: server/lib/pages/schedule.class.php:1673
3581#: server/lib/pages/schedule.class.php:17553599#: server/lib/pages/schedule.class.php:1758
3582#: server/lib/pages/schedule.class.php:19763600#: server/lib/pages/schedule.class.php:1979
3583msgid "No displays selected"3601msgid "No displays selected"
3584msgstr ""3602msgstr ""
35853603
3586#: server/lib/pages/schedule.class.php:16763604#: server/lib/pages/schedule.class.php:1679
3587#: server/lib/pages/schedule.class.php:17613605#: server/lib/pages/schedule.class.php:1764
3588msgid "Can not have an end time earlier than your start time"3606msgid "Can not have an end time earlier than your start time"
3589msgstr ""3607msgstr ""
35903608
3591#: server/lib/pages/schedule.class.php:16803609#: server/lib/pages/schedule.class.php:1683
3592#: server/lib/pages/schedule.class.php:19793610#: server/lib/pages/schedule.class.php:1982
3593msgid "Your start time is in the past. Cannot schedule events in the past"3611msgid "Your start time is in the past. Cannot schedule events in the past"
3594msgstr ""3612msgstr ""
35953613
3596#: server/lib/pages/schedule.class.php:16863614#: server/lib/pages/schedule.class.php:1689
3597#: server/lib/pages/schedule.class.php:17673615#: server/lib/pages/schedule.class.php:1770
3598msgid ""3616msgid ""
3599"Your repeat until date is in the past. Cannot schedule events to repeat in "3617"Your repeat until date is in the past. Cannot schedule events to repeat in "
3600"to the past"3618"to the past"
3601msgstr ""3619msgstr ""
36023620
3603#: server/lib/pages/schedule.class.php:16973621#: server/lib/pages/schedule.class.php:1700
3604msgid "The Event has been Added."3622msgid "The Event has been Added."
3605msgstr ""3623msgstr ""
36063624
3607#: server/lib/pages/schedule.class.php:17783625#: server/lib/pages/schedule.class.php:1781
3608msgid "The Event has been Modified."3626msgid "The Event has been Modified."
3609msgstr ""3627msgstr ""
36103628
3611#: server/lib/pages/schedule.class.php:17983629#: server/lib/pages/schedule.class.php:1801
3612msgid "Are you sure you want to delete this event from <b>all</b> displays?"3630msgid "Are you sure you want to delete this event from <b>all</b> displays?"
3613msgstr ""3631msgstr ""
36143632
3615#: server/lib/pages/schedule.class.php:17993633#: server/lib/pages/schedule.class.php:1802
3616msgid ""3634msgid ""
3617"If you only want to delete this item from certain displays, please deselect "3635"If you only want to delete this item from certain displays, please deselect "
3618"the displays in the edit dialogue and click Save."3636"the displays in the edit dialogue and click Save."
3619msgstr ""3637msgstr ""
36203638
3621#: server/lib/pages/schedule.class.php:18183639#: server/lib/pages/schedule.class.php:1821
3622msgid "Delete Event."3640msgid "Delete Event."
3623msgstr ""3641msgstr ""
36243642
3625#: server/lib/pages/schedule.class.php:18543643#: server/lib/pages/schedule.class.php:1857
3626msgid "The Event has been Deleted."3644msgid "The Event has been Deleted."
3627msgstr ""3645msgstr ""
36283646
3629#: server/lib/pages/schedule.class.php:19723647#: server/lib/pages/schedule.class.php:1975
3630msgid "You must enter a duration"3648msgid "You must enter a duration"
3631msgstr ""3649msgstr ""
36323650
3633#: server/lib/pages/schedule.class.php:19893651#: server/lib/pages/schedule.class.php:1992
3634msgid "The Event has been Scheduled"3652msgid "The Event has been Scheduled"
3635msgstr ""3653msgstr ""
36363654
3637#: server/lib/pages/schedule.class.php:20043655#: server/lib/pages/schedule.class.php:2007
3638#: server/lib/pages/schedule.class.php:20513656#: server/lib/pages/schedule.class.php:2054
3639msgid "Day not selected"3657msgid "Day not selected"
3640msgstr ""3658msgstr ""
36413659
3642#: server/lib/pages/schedule.class.php:20063660#: server/lib/pages/schedule.class.php:2009
3643msgid ""3661msgid ""
3644"Are you sure you want to delete all events that intersect this day from "3662"Are you sure you want to delete all events that intersect this day from "
3645"<b>all</b> displays?"3663"<b>all</b> displays?"
3646msgstr ""3664msgstr ""
36473665
3648#: server/lib/pages/schedule.class.php:20073666#: server/lib/pages/schedule.class.php:2010
3649msgid "This action cannot be undone."3667msgid "This action cannot be undone."
3650msgstr ""3668msgstr ""
36513669
3652#: server/lib/pages/schedule.class.php:20253670#: server/lib/pages/schedule.class.php:2028
3653#, php-format3671#, php-format
3654msgid "Delete %s"3672msgid "Delete %s"
3655msgstr ""3673msgstr ""
36563674
3657#: server/lib/pages/schedule.class.php:20683675#: server/lib/pages/schedule.class.php:2071
3658#, php-format3676#, php-format
3659msgid "All events for %s have been deleted"3677msgid "All events for %s have been deleted"
3660msgstr ""3678msgstr ""
@@ -3676,11 +3694,15 @@
3676msgid "User Logged Out."3694msgid "User Logged Out."
3677msgstr ""3695msgstr ""
36783696
3679#: server/lib/pages/stats.class.php:983697#: server/lib/pages/stats.class.php:93 server/lib/pages/stats.class.php:262
3698msgid "No displays with View permissions"
3699msgstr ""
3700
3701#: server/lib/pages/stats.class.php:117
3680msgid "Unable to get Layouts Shown"3702msgid "Unable to get Layouts Shown"
3681msgstr ""3703msgstr ""
36823704
3683#: server/lib/pages/stats.class.php:139 server/lib/pages/stats.class.php:1813705#: server/lib/pages/stats.class.php:159 server/lib/pages/stats.class.php:202
3684msgid "Unable to get Library Media Ran"3706msgid "Unable to get Library Media Ran"
3685msgstr ""3707msgstr ""
36863708
@@ -4021,12 +4043,12 @@
4021msgid "Trying to change the password for another user denied"4043msgid "Trying to change the password for another user denied"
4022msgstr ""4044msgstr ""
40234045
4024#: server/lib/service/xmdssoap.class.php:11264046#: server/lib/service/xmdssoap.class.php:1135
4025#, php-format4047#, php-format
4026msgid "Recovery for Display %s"4048msgid "Recovery for Display %s"
4027msgstr ""4049msgstr ""
40284050
4029#: server/lib/service/xmdssoap.class.php:11274051#: server/lib/service/xmdssoap.class.php:1136
4030#, php-format4052#, php-format
4031msgid "Display %s with ID %d is now back online."4053msgid "Display %s with ID %d is now back online."
4032msgstr ""4054msgstr ""
@@ -4349,46 +4371,46 @@
4349msgid "DataSet View"4371msgid "DataSet View"
4350msgstr ""4372msgstr ""
43514373
4352#: server/modules/datasetview.module.php:814374#: server/modules/datasetview.module.php:60
4353msgid "Add DataSet View"4375msgid "Add DataSet View"
4354msgstr ""4376msgstr ""
43554377
4356#: server/modules/datasetview.module.php:2014378#: server/modules/datasetview.module.php:180
4357#, php-format4379#, php-format
4358msgid "Edit DataSet View for DataSet %s"4380msgid "Edit DataSet View for DataSet %s"
4359msgstr ""4381msgstr ""
43604382
4361#: server/modules/datasetview.module.php:2384383#: server/modules/datasetview.module.php:217
4362#: server/modules/ticker.module.php:2534384#: server/modules/ticker.module.php:253
4363msgid "Please select a DataSet"4385msgid "Please select a DataSet"
4364msgstr ""4386msgstr ""
43654387
4366#: server/modules/datasetview.module.php:2474388#: server/modules/datasetview.module.php:226
4367#: server/modules/ticker.module.php:2574389#: server/modules/ticker.module.php:257
4368msgid "You do not have permission to use that dataset"4390msgid "You do not have permission to use that dataset"
4369msgstr ""4391msgstr ""
43704392
4371#: server/modules/datasetview.module.php:3314393#: server/modules/datasetview.module.php:310
4372#: server/modules/ticker.module.php:3624394#: server/modules/ticker.module.php:362
4373msgid "Limits must be numbers"4395msgid "Limits must be numbers"
4374msgstr ""4396msgstr ""
43754397
4376#: server/modules/datasetview.module.php:3344398#: server/modules/datasetview.module.php:313
4377#: server/modules/ticker.module.php:3654399#: server/modules/ticker.module.php:365
4378msgid "Limits cannot be lower than 0"4400msgid "Limits cannot be lower than 0"
4379msgstr ""4401msgstr ""
43804402
4381#: server/modules/datasetview.module.php:3384403#: server/modules/datasetview.module.php:317
4382#: server/modules/ticker.module.php:3694404#: server/modules/ticker.module.php:369
4383msgid "Upper limit must be higher than lower limit"4405msgid "Upper limit must be higher than lower limit"
4384msgstr ""4406msgstr ""
43854407
4386#: server/modules/datasetview.module.php:3414408#: server/modules/datasetview.module.php:320
4387#: server/modules/ticker.module.php:3914409#: server/modules/ticker.module.php:391
4388msgid "Update Interval must be greater than or equal to 0"4410msgid "Update Interval must be greater than or equal to 0"
4389msgstr ""4411msgstr ""
43904412
4391#: server/modules/datasetview.module.php:3454413#: server/modules/datasetview.module.php:324
4392#: server/modules/ticker.module.php:3594414#: server/modules/ticker.module.php:359
4393msgid "Cannot user ordering criteria in the Filter Clause"4415msgid "Cannot user ordering criteria in the Filter Clause"
4394msgstr ""4416msgstr ""
@@ -4452,8 +4474,11 @@
4452msgstr ""4474msgstr ""
44534475
4454#: server/modules/module_user_general.php:3144476#: server/modules/module_user_general.php:314
4477msgid "User does not have a group and Xibo is unable to add one."
4478msgstr ""
4479
4455#: server/modules/module_user_general.php:3714480#: server/modules/module_user_general.php:371
4456msgid "User does not have a group and Xibo is unable to add one."4481msgid "User does not have a group and we are unable to add one."
4457msgstr ""4482msgstr ""
44584483
4459#: server/modules/module_user_general.php:4564484#: server/modules/module_user_general.php:456
@@ -4857,13 +4882,11 @@
4857msgstr ""4882msgstr ""
48584883
4859#: server/theme/default/html/displaygroup_form_display_assign.php:334884#: server/theme/default/html/displaygroup_form_display_assign.php:33
4860#: server/theme/default/html/display_form_group_assign.php:334885msgid "Assigned Displays"
4861msgid "Assigned Groups"
4862msgstr ""4886msgstr ""
48634887
4864#: server/theme/default/html/displaygroup_form_display_assign.php:414888#: server/theme/default/html/displaygroup_form_display_assign.php:41
4865#: server/theme/default/html/display_form_group_assign.php:414889msgid "Available Displays"
4866msgid "Available Groups"
4867msgstr ""4890msgstr ""
48684891
4869#: server/theme/default/html/displaygroup_page.php:374892#: server/theme/default/html/displaygroup_page.php:37
@@ -4998,6 +5021,14 @@
4998msgid "Longitude"5021msgid "Longitude"
4999msgstr ""5022msgstr ""
50005023
5024#: server/theme/default/html/display_form_group_assign.php:33
5025msgid "Assigned Groups"
5026msgstr ""
5027
5028#: server/theme/default/html/display_form_group_assign.php:41
5029msgid "Available Groups"
5030msgstr ""
5031
5001#: server/theme/default/html/display_form_mediainventory.php:355032#: server/theme/default/html/display_form_mediainventory.php:35
5002msgid "Id"5033msgid "Id"
5003msgstr ""5034msgstr ""
50045035
=== modified file 'example_oauth/index.php'
--- example_oauth/index.php 2013-05-25 09:42:36 +0000
+++ example_oauth/index.php 2014-07-15 15:37:37 +0000
@@ -2,6 +2,7 @@
2require_once('oauth-php/library/OAuthStore.php');2require_once('oauth-php/library/OAuthStore.php');
3require_once('oauth-php/library/OAuthRequester.php');3require_once('oauth-php/library/OAuthRequester.php');
4require_once('oauth-php/library/OAuthRequestLogger.php');4require_once('oauth-php/library/OAuthRequestLogger.php');
5require_once('nice-json.php');
56
6DEFINE('OAUTH_LOG_REQUEST', true);7DEFINE('OAUTH_LOG_REQUEST', true);
78
@@ -12,14 +13,18 @@
1213
13OAuthStore::instance('MySQL', $connection);14OAuthStore::instance('MySQL', $connection);
1415
15DEFINE('SERVER_BASE', 'http://localhost/xibo/1.5/server-151-api/server/');16DEFINE('SERVER_BASE', 'http://localhost/xibo/1.6/server-162/server/');
16DEFINE('CONSUMER_KEY', 'e5adc06021aa90157114862e5a22287d0519918d2');17DEFINE('CONSUMER_KEY', 'e982575d2ab70546923b92e50c5b96ca053b407a8');
17DEFINE('CONSUMER_SECRET', '9411a8a5d9a8fc63c105cb3119a89395');18DEFINE('CONSUMER_SECRET', 'a891f97e69985230a2e0e869b9f875e3');
18//DEFINE('SERVER_BASE', 'http://unittest2.xibo.org.uk/api/');19//DEFINE('SERVER_BASE', 'http://unittest2.xibo.org.uk/api/');
19//DEFINE('CONSUMER_KEY', '201798cda77e4e82e0488d0c8c2e43ae0519d180f');20//DEFINE('CONSUMER_KEY', '201798cda77e4e82e0488d0c8c2e43ae0519d180f');
20//DEFINE('CONSUMER_SECRET', '9eb4aa8a51e4a393b3fb5ad6f1a75bae');21//DEFINE('CONSUMER_SECRET', '9eb4aa8a51e4a393b3fb5ad6f1a75bae');
2122//
22switch($_GET['action'])23
24// $RESPONSE = 'xml';
25define('RESPONSE', 'json');
26
27switch((isset($_GET['action']) ? $_GET['action'] : ''))
23{28{
24 case 'AddServer':29 case 'AddServer':
25 AddServerToOAuth();30 AddServerToOAuth();
@@ -37,11 +42,16 @@
37 MakeSignedRequest();42 MakeSignedRequest();
38 break;43 break;
3944
45 case '':
46 die('No action');
47
40 default:48 default:
41 $action = $_GET['action'];49 $action = $_GET['action'];
42 $action();50 $action();
43}51}
4452
53die();
54
45function AddServerToOAuth()55function AddServerToOAuth()
46{56{
47 // Get the id of the current user (must be an int)57 // Get the id of the current user (must be an int)
@@ -82,7 +92,7 @@
82 }92 }
8393
84 // Callback to our (consumer) site, will be called when the user finished the authorization at the server94 // Callback to our (consumer) site, will be called when the user finished the authorization at the server
85 $callback_uri = 'http://localhost/xibo/1.5/server-151-api/example_oauth/?action=Exchange&consumer_key='.rawurlencode(CONSUMER_KEY).'&usr_id='.intval($user_id);95 $callback_uri = '?action=Exchange&consumer_key='.rawurlencode(CONSUMER_KEY).'&usr_id='.intval($user_id);
8696
87 // Now redirect to the autorization uri and get us authorized97 // Now redirect to the autorization uri and get us authorized
88 if (!empty($token['authorize_uri']))98 if (!empty($token['authorize_uri']))
@@ -142,7 +152,7 @@
142 $params = array(152 $params = array(
143 'service' => 'rest',153 'service' => 'rest',
144 'method' => 'Version',154 'method' => 'Version',
145 'response' => 'xml'155 'response' => RESPONSE
146 );156 );
147157
148 // Obtain a request object for the request we want to make158 // Obtain a request object for the request we want to make
@@ -167,7 +177,7 @@
167 $params = array(177 $params = array(
168 'service' => 'rest',178 'service' => 'rest',
169 'method' => 'LayoutList',179 'method' => 'LayoutList',
170 'response' => 'xml'180 'response' => RESPONSE
171 );181 );
172182
173 // Obtain a request object for the request we want to make183 // Obtain a request object for the request we want to make
@@ -203,7 +213,7 @@
203 $params = array(213 $params = array(
204 'service' => 'rest',214 'service' => 'rest',
205 'method' => 'LayoutRegionList',215 'method' => 'LayoutRegionList',
206 'response' => 'xml',216 'response' => RESPONSE,
207 'layoutid' => 11217 'layoutid' => 11
208 );218 );
209219
@@ -234,7 +244,7 @@
234 $params = array(244 $params = array(
235 'service' => 'rest',245 'service' => 'rest',
236 'method' => 'LayoutAdd',246 'method' => 'LayoutAdd',
237 'response' => 'xml',247 'response' => RESPONSE,
238 'layout' => 'API test'248 'layout' => 'API test'
239 );249 );
240250
@@ -246,7 +256,7 @@
246 $params = array(256 $params = array(
247 'service' => 'rest',257 'service' => 'rest',
248 'method' => 'LayoutRegionAdd',258 'method' => 'LayoutRegionAdd',
249 'response' => 'xml',259 'response' => RESPONSE,
250 'layoutid' => 11,260 'layoutid' => 11,
251 'top' => 102,261 'top' => 102,
252 'name' => 'apitest'262 'name' => 'apitest'
@@ -261,7 +271,7 @@
261 $params = array(271 $params = array(
262 'service' => 'rest',272 'service' => 'rest',
263 'method' => 'LayoutRegionEdit',273 'method' => 'LayoutRegionEdit',
264 'response' => 'xml',274 'response' => RESPONSE,
265 'layoutid' => 124,275 'layoutid' => 124,
266 'regionid' => '519d199c5cb50',276 'regionid' => '519d199c5cb50',
267 'width' => 400,277 'width' => 400,
@@ -280,7 +290,7 @@
280 $params = array(290 $params = array(
281 'service' => 'rest',291 'service' => 'rest',
282 'method' => 'LayoutRegionDelete',292 'method' => 'LayoutRegionDelete',
283 'response' => 'xml',293 'response' => RESPONSE,
284 'layoutid' => 124,294 'layoutid' => 124,
285 'regionid' => '519d1bb00e7a9'295 'regionid' => '519d1bb00e7a9'
286 );296 );
@@ -292,7 +302,7 @@
292 $params = array(302 $params = array(
293 'service' => 'rest',303 'service' => 'rest',
294 'method' => 'LayoutRegionTimelineList',304 'method' => 'LayoutRegionTimelineList',
295 'response' => 'xml',305 'response' => RESPONSE,
296 'layoutid' => 11,306 'layoutid' => 11,
297 'regionid' => '519d211ded076'307 'regionid' => '519d211ded076'
298 );308 );
@@ -305,7 +315,7 @@
305 $params = array(315 $params = array(
306 'service' => 'rest',316 'service' => 'rest',
307 'method' => 'LayoutRegionMediaAdd',317 'method' => 'LayoutRegionMediaAdd',
308 'response' => 'xml',318 'response' => RESPONSE,
309 'layoutid' => 11,319 'layoutid' => 11,
310 'regionid' => '519d211ded076',320 'regionid' => '519d211ded076',
311 'type' => 'webpage',321 'type' => 'webpage',
@@ -324,7 +334,7 @@
324 $params = array(334 $params = array(
325 'service' => 'rest',335 'service' => 'rest',
326 'method' => 'LayoutRegionMediaDetails',336 'method' => 'LayoutRegionMediaDetails',
327 'response' => 'xml',337 'response' => RESPONSE,
328 'layoutid' => 11,338 'layoutid' => 11,
329 'regionid' => '519d211ded076',339 'regionid' => '519d211ded076',
330 'mediaid' => 'b2036df53ae2bdcbb5322a183709afbc',340 'mediaid' => 'b2036df53ae2bdcbb5322a183709afbc',
@@ -340,7 +350,7 @@
340 $params = array(350 $params = array(
341 'service' => 'rest',351 'service' => 'rest',
342 'method' => 'LayoutRegionMediaEdit',352 'method' => 'LayoutRegionMediaEdit',
343 'response' => 'xml',353 'response' => RESPONSE,
344 'layoutid' => 11,354 'layoutid' => 11,
345 'regionid' => '519d211ded076',355 'regionid' => '519d211ded076',
346 'type' => 'webpage',356 'type' => 'webpage',
@@ -355,6 +365,211 @@
355 callService($params, true);365 callService($params, true);
356}366}
357367
368function DataSetList() {
369 $params = array(
370 'service' => 'rest',
371 'method' => 'DataSetList',
372 'response' => RESPONSE
373 );
374
375 callService($params, true);
376}
377
378function DataSetAdd() {
379 $params = array(
380 'service' => 'rest',
381 'method' => 'DataSetAdd',
382 'response' => RESPONSE,
383 'dataSet' => 'API Test',
384 'description' => 'A test description.'
385 );
386
387 callService($params, true);
388}
389
390function DataSetEdit() {
391 $params = array(
392 'service' => 'rest',
393 'method' => 'DataSetEdit',
394 'response' => RESPONSE,
395 'dataSetId' => 3,
396 'dataSet' => 'API Test',
397 'description' => 'A test description.'
398 );
399
400 callService($params, true);
401}
402
403function DataSetDelete() {
404 $params = array(
405 'service' => 'rest',
406 'method' => 'DataSetDelete',
407 'response' => RESPONSE,
408 'dataSetId' => 3
409 );
410
411 callService($params, true);
412}
413
414function DataSetColumnList() {
415 $params = array(
416 'service' => 'rest',
417 'method' => 'DataSetColumnList',
418 'response' => RESPONSE,
419 'dataSetId' => 1
420 );
421
422 callService($params, true);
423}
424
425function DataSetColumnAdd() {
426 $params = array(
427 'service' => 'rest',
428 'method' => 'DataSetColumnAdd',
429 'response' => RESPONSE,
430 'dataSetId' => 4,
431 'heading' => 'API Column 1'
432 );
433
434 callService($params, true);
435}
436
437function DataSetColumnEdit() {
438 $params = array(
439 'service' => 'rest',
440 'method' => 'DataSetColumnEdit',
441 'response' => RESPONSE,
442 'dataTypeId' => 1,
443 'dataSetColumnTypeId' => 1,
444 'dataSetId' => 4,
445 'dataSetColumnId' => 3,
446 'heading' => 'API Column 1 Edited'
447 );
448
449 callService($params, true);
450}
451
452function DataSetColumnDelete() {
453 $params = array(
454 'service' => 'rest',
455 'method' => 'DataSetColumnDelete',
456 'response' => RESPONSE,
457 'dataSetId' => 4,
458 'dataSetColumnId' => 3
459 );
460
461 callService($params, true);
462}
463
464function DataSetDataList() {
465 $params = array(
466 'service' => 'rest',
467 'method' => 'DataSetDataList',
468 'response' => RESPONSE,
469 'dataSetId' => 1
470 );
471
472 callService($params, true);
473}
474
475function DataSetSecurityList() {
476 $params = array(
477 'service' => 'rest',
478 'method' => 'DataSetSecurityList',
479 'response' => RESPONSE,
480 'dataSetId' => 4
481 );
482
483 callService($params, true);
484}
485
486function DataSetSecurityAdd() {
487 $params = array(
488 'service' => 'rest',
489 'method' => 'DataSetSecurityAdd',
490 'response' => RESPONSE,
491 'dataSetId' => 4,
492 'groupId' => 1,
493 'view' => 1,
494 'edit' => 1,
495 'delete' => 1
496 );
497
498 callService($params, true);
499}
500
501function DataSetSecurityDelete() {
502 $params = array(
503 'service' => 'rest',
504 'method' => 'DataSetSecurityDelete',
505 'response' => RESPONSE,
506 'dataSetId' => 4,
507 'groupId' => 1
508 );
509
510 callService($params, true);
511}
512
513function DataSetImportCsv() {
514
515 $mappings = array(
516 '0' => '1',
517 '2' => '4',
518 '1' => '5'
519 );
520
521 $params = array(
522 'service' => 'rest',
523 'method' => 'DataSetImportCsv',
524 'response' => RESPONSE,
525 'dataSetId' => 1,
526 'fileId' => 3,
527 'spreadSheetMapping' => json_encode($mappings),
528 'overwrite' => 0,
529 'ignoreFirstRow' => 1,
530 );
531
532 callService($params, true);
533}
534
535function LibraryMediaFileUpload() {
536
537 // Get the test file
538 $file = file_get_contents('test_files/test.csv');
539 $payload = base64_encode($file);
540
541 $params = array(
542 'service' => 'rest',
543 'method' => 'LibraryMediaFileUpload',
544 'response' => RESPONSE,
545 'fileId' => NULL,
546 'checksum' => md5($payload),
547 'payload' => $payload
548 );
549
550 callService($params, true);
551}
552
553function DataTypeList() {
554 $params = array(
555 'service' => 'rest',
556 'method' => 'DataTypeList',
557 'response' => RESPONSE
558 );
559
560 callService($params, true);
561}
562
563function DataSetColumnTypeList() {
564 $params = array(
565 'service' => 'rest',
566 'method' => 'DataSetColumnTypeList',
567 'response' => RESPONSE
568 );
569
570 callService($params, true);
571}
572
358function callService($params, $echo = false) {573function callService($params, $echo = false) {
359 // The request uri being called.574 // The request uri being called.
360 $user_id = 1;575 $user_id = 1;
@@ -366,9 +581,15 @@
366 // Sign the request, perform a curl request and return the results, throws OAuthException exception on an error581 // Sign the request, perform a curl request and return the results, throws OAuthException exception on an error
367 $return = $req->doRequest($user_id);582 $return = $req->doRequest($user_id);
368 583
369 if ($echo)584 if ($echo) {
370 var_dump($return);585 var_dump($return);
371586
587 if (RESPONSE == 'json')
588 echo '<pre>' . json_format($return['body']) . '</pre>';
589 else
590 echo $return['body'];
591 }
592
372 return $return;593 return $return;
373}594}
374?>595?>
375596
=== added file 'example_oauth/nice-json.php'
--- example_oauth/nice-json.php 1970-01-01 00:00:00 +0000
+++ example_oauth/nice-json.php 2014-07-15 15:37:37 +0000
@@ -0,0 +1,73 @@
1<?php
2
3// original code: http://www.daveperrett.com/articles/2008/03/11/format-json-with-php/
4// adapted to allow native functionality in php version >= 5.4.0
5
6/**
7* Format a flat JSON string to make it more human-readable
8*
9* @param string $json The original JSON string to process
10* When the input is not a string it is assumed the input is RAW
11* and should be converted to JSON first of all.
12* @return string Indented version of the original JSON string
13*/
14function json_format($json) {
15 if (!is_string($json)) {
16 if (phpversion() && phpversion() >= 5.4) {
17 return json_encode($json, JSON_PRETTY_PRINT);
18 }
19 $json = json_encode($json);
20 }
21 $result = '';
22 $pos = 0; // indentation level
23 $strLen = strlen($json);
24 $indentStr = "\t";
25 $newLine = "\n";
26 $prevChar = '';
27 $outOfQuotes = true;
28
29 for ($i = 0; $i < $strLen; $i++) {
30 // Grab the next character in the string
31 $char = substr($json, $i, 1);
32
33 // Are we inside a quoted string?
34 if ($char == '"' && $prevChar != '\\') {
35 $outOfQuotes = !$outOfQuotes;
36 }
37 // If this character is the end of an element,
38 // output a new line and indent the next line
39 else if (($char == '}' || $char == ']') && $outOfQuotes) {
40 $result .= $newLine;
41 $pos--;
42 for ($j = 0; $j < $pos; $j++) {
43 $result .= $indentStr;
44 }
45 }
46 // eat all non-essential whitespace in the input as we do our own here and it would only mess up our process
47 else if ($outOfQuotes && false !== strpos(" \t\r\n", $char)) {
48 continue;
49 }
50
51 // Add the character to the result string
52 $result .= $char;
53 // always add a space after a field colon:
54 if ($char == ':' && $outOfQuotes) {
55 $result .= ' ';
56 }
57
58 // If the last character was the beginning of an element,
59 // output a new line and indent the next line
60 if (($char == ',' || $char == '{' || $char == '[') && $outOfQuotes) {
61 $result .= $newLine;
62 if ($char == '{' || $char == '[') {
63 $pos++;
64 }
65 for ($j = 0; $j < $pos; $j++) {
66 $result .= $indentStr;
67 }
68 }
69 $prevChar = $char;
70 }
71
72 return $result;
73}
074
=== added directory 'example_oauth/test_files'
=== added file 'example_oauth/test_files/test.csv'
--- example_oauth/test_files/test.csv 1970-01-01 00:00:00 +0000
+++ example_oauth/test_files/test.csv 2014-07-15 15:37:37 +0000
@@ -0,0 +1,6 @@
1Col1,Col2,Col3,Col4
2Row1-1,Row1-2,Row1-3,Row1-4
3Row2-1,Row2-2,Row2-3,Row2-4
4Row3-1,Row3-2,Row3-3,Row3-4
5Row4-1,Row4-2,Row4-3,Row4-4
6Row5-1,Row5-2,Row5-3,Row5-4
0\ No newline at end of file7\ No newline at end of file
18
=== modified file 'server/3rdparty/simplepie/library/SimplePie/File.php'
--- server/3rdparty/simplepie/library/SimplePie/File.php 2014-03-23 13:52:47 +0000
+++ server/3rdparty/simplepie/library/SimplePie/File.php 2014-07-15 15:37:37 +0000
@@ -137,6 +137,10 @@
137 {137 {
138 $info = curl_getinfo($fp);138 $info = curl_getinfo($fp);
139 curl_close($fp);139 curl_close($fp);
140
141 // DG: Patch to strip double headers
142 $this->headers = SimplePie_HTTP_Parser::strip_double_headers($this->headers);
143
140 $this->headers = explode("\r\n\r\n", $this->headers, $info['redirect_count'] + 1);144 $this->headers = explode("\r\n\r\n", $this->headers, $info['redirect_count'] + 1);
141 $this->headers = array_pop($this->headers);145 $this->headers = array_pop($this->headers);
142 $parser = new SimplePie_HTTP_Parser($this->headers);146 $parser = new SimplePie_HTTP_Parser($this->headers);
143147
=== modified file 'server/3rdparty/simplepie/library/SimplePie/HTTP/Parser.php'
--- server/3rdparty/simplepie/library/SimplePie/HTTP/Parser.php 2013-05-11 15:26:38 +0000
+++ server/3rdparty/simplepie/library/SimplePie/HTTP/Parser.php 2014-07-15 15:37:37 +0000
@@ -497,4 +497,25 @@
497 }497 }
498 }498 }
499 }499 }
500
501 public static function strip_double_headers($input) {
502 // I have tried to make this regular expression as specific as possible
503 // to avoid any case where it does weird stuff if you happen to put
504 // HTTP/1.1 200 at the start of any line in your RSS file. This should
505 // also make it faster because it can abandon regex processing as soon
506 // as it hits something that doesn't look like an http header. The
507 // header definition is taken from RFC 822, except I didn't support
508 // folding which is never used in practice.
509 $crlf = "\r\n";
510 return preg_replace(
511 // HTTP version and status code (ignore value of code).
512 '~^HTTP/1\..*' . $crlf .
513 // Header name: character between 33 and 126 decimal, except colon.
514 // Colon. Header value: any character except \r and \n. CRLF.
515 '(?:[\x21-\x39\x3b-\x7e]+:[^' . $crlf . ']+' . $crlf . ')*' .
516 // Headers are terminated by another CRLF (blank line).
517 $crlf .
518 // Second HTTP status code, this time must be 200.
519 '(HTTP/1.[01] 200 )~', '$1', $input);
520 }
500}521}
501522
=== modified file 'server/config/config.class.php'
--- server/config/config.class.php 2014-02-15 11:25:09 +0000
+++ server/config/config.class.php 2014-07-15 15:37:37 +0000
@@ -127,29 +127,18 @@
127 $output .= '<div class="checks">';127 $output .= '<div class="checks">';
128 128
129 // Check for PHP version129 // Check for PHP version
130 $message = __('PHP Version 5.2.4 or later');130 $message = __('PHP Version');
131131
132 if ($this->CheckPHP() == 1) 132 if ($this->CheckPHP() == 1)
133 {133 {
134 $output .= $imgGood.$message.'<br />';134 $output .= $imgGood.$message.'<br />';
135 }135 }
136 else if ($this->CheckPHP() == 2)
137 {
138 $this->envWarning = true;
139 $output .= $imgWarn.$message.'<br />';
140 $output .= <<<END
141 <div class="check_explain">
142 <p>Xibo requires PHP version 5.2.4 or later. It may run on PHP 5.1.0 and we have provided compatibility functions to enable that.</p>
143 <p>However, we recommend upgrading your version of PHP to 5.2.4 or later.</p>
144 </div>
145END;
146 }
147 else136 else
148 {137 {
149 $this->envFault = true;138 $this->envFault = true;
150 139
151 $output .= $imgBad.$message.'<br />';140 $output .= $imgBad.$message.'<br />';
152 $output .= '<div class="check_explain"> <p>' . __("PHP version 5.2.4 or later required.") . '</p></div>';141 $output .= '<div class="check_explain"> <p>' . __("PHP version 5.3.3 or later required.") . '. Detected ' . phpversion() . '</p></div>';
153 }142 }
154 143
155 // Check for file system permissions144 // Check for file system permissions
@@ -474,17 +463,7 @@
474 */463 */
475 function CheckPHP() 464 function CheckPHP()
476 {465 {
477 if (phpversion() >= '5.2.4') 466 return ((version_compare('5.3.3', phpversion(), '>='))) ? 1 : 0;
478 {
479 return 1;
480 }
481
482 if (phpversion() >= '5.1.0')
483 {
484 return 2;
485 }
486
487 return 0;
488 }467 }
489 468
490 /**469 /**
491470
=== modified file 'server/install.php'
--- server/install.php 2013-08-21 22:27:13 +0000
+++ server/install.php 2014-07-15 15:37:37 +0000
@@ -22,7 +22,7 @@
2222
23if (! checkPHP()) 23if (! checkPHP())
24{24{
25 die('Xibo requires PHP 5.2.4 or later');25 die('Xibo requires PHP 5.3.3 or later');
26}26}
2727
28error_reporting(0);28error_reporting(0);
@@ -693,7 +693,7 @@
693693
694function checkPHP() 694function checkPHP()
695{695{
696 return (version_compare("5.2.4",phpversion(), "<="));696 return (version_compare("5.3.3",phpversion(), "<="));
697}697}
698698
699function CheckGettext() 699function CheckGettext()
700700
=== added file 'server/install/database/69.sql'
--- server/install/database/69.sql 1970-01-01 00:00:00 +0000
+++ server/install/database/69.sql 2014-07-15 15:37:37 +0000
@@ -0,0 +1,4 @@
1
2UPDATE `version` SET `app_ver` = '1.6.1', `XmdsVersion` = 3;
3UPDATE `setting` SET `value` = 0 WHERE `setting` = 'PHONE_HOME_DATE';
4UPDATE `version` SET `DBVersion` = '69';
05
=== added file 'server/install/database/70.sql'
--- server/install/database/70.sql 1970-01-01 00:00:00 +0000
+++ server/install/database/70.sql 2014-07-15 15:37:37 +0000
@@ -0,0 +1,15 @@
1ALTER TABLE `dataset` ADD `LastDataEdit` INT NOT NULL DEFAULT '0';
2
3CREATE TABLE IF NOT EXISTS `lkdatasetlayout` (
4 `LkDataSetLayoutID` int(11) NOT NULL AUTO_INCREMENT,
5 `DataSetID` int(11) NOT NULL,
6 `LayoutID` int(11) NOT NULL,
7 `RegionID` varchar(50) NOT NULL,
8 `MediaID` varchar(50) NOT NULL,
9 PRIMARY KEY (`LkDataSetLayoutID`)
10) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
11
12
13UPDATE `version` SET `app_ver` = '1.6.2', `XmdsVersion` = 3;
14UPDATE `setting` SET `value` = 0 WHERE `setting` = 'PHONE_HOME_DATE';
15UPDATE `version` SET `DBVersion` = '70';
016
=== modified file 'server/install/master/data.sql'
--- server/install/master/data.sql 2014-05-03 21:16:38 +0000
+++ server/install/master/data.sql 2014-07-15 15:37:37 +0000
@@ -1,5 +1,5 @@
1INSERT INTO `version` (`app_ver`, `XmdsVersion`, `XlfVersion`, `DBVersion`) VALUES1INSERT INTO `version` (`app_ver`, `XmdsVersion`, `XlfVersion`, `DBVersion`) VALUES
2('1.6.0', 3, 1, 68);2('1.6.2', 3, 1, 70);
33
4INSERT INTO `group` (`groupID`, `group`, `IsUserSpecific`, `IsEveryone`) VALUES4INSERT INTO `group` (`groupID`, `group`, `IsUserSpecific`, `IsEveryone`) VALUES
5(1, 'Users', 0, 0),5(1, 'Users', 0, 0),
66
=== modified file 'server/lib/app/kit.class.php'
--- server/lib/app/kit.class.php 2014-03-29 11:20:40 +0000
+++ server/lib/app/kit.class.php 2014-07-15 15:37:37 +0000
@@ -26,6 +26,7 @@
26define('_REQUEST', "request");26define('_REQUEST', "request");
2727
28define('_STRING', "string");28define('_STRING', "string");
29define('_STRINGSPECIAL', 'stringspecial');
29define('_HTMLSTRING', 'htmlstring');30define('_HTMLSTRING', 'htmlstring');
30define('_PASSWORD', "password");31define('_PASSWORD', "password");
31define('_INT', "int");32define('_INT', "int");
@@ -295,6 +296,10 @@
295 case _PASSWORD :296 case _PASSWORD :
296 $return = filter_var($return, FILTER_SANITIZE_STRING);297 $return = filter_var($return, FILTER_SANITIZE_STRING);
297 break;298 break;
299
300 case _STRINGSPECIAL:
301 $return = filter_var($return, FILTER_SANITIZE_SPECIAL_CHARS);
302 break;
298 303
299 case _HTMLSTRING :304 case _HTMLSTRING :
300 305
301306
=== modified file 'server/lib/app/session.class.php'
--- server/lib/app/session.class.php 2014-01-18 09:47:41 +0000
+++ server/lib/app/session.class.php 2014-07-15 15:37:37 +0000
@@ -75,7 +75,7 @@
75 $sth->execute(array('session_id' => $key));75 $sth->execute(array('session_id' => $key));
7676
77 if (!$row = $sth->fetch())77 if (!$row = $sth->fetch())
78 throw new Exception('No session returned');78 return settype($empty, "string");
7979
80 // What happens if the UserAgent has changed?80 // What happens if the UserAgent has changed?
81 if ($row['useragent'] != $userAgent) {81 if ($row['useragent'] != $userAgent) {
8282
=== modified file 'server/lib/data/dataset.data.class.php'
--- server/lib/data/dataset.data.class.php 2014-01-18 09:47:41 +0000
+++ server/lib/data/dataset.data.class.php 2014-07-15 15:37:37 +0000
@@ -152,6 +152,7 @@
152 $security->UnlinkAll($dataSetId);152 $security->UnlinkAll($dataSetId);
153153
154 // Delete columns154 // Delete columns
155 Kit::ClassLoader('datasetcolumn');
155 $dataSetObject = new DataSetColumn($this->db);156 $dataSetObject = new DataSetColumn($this->db);
156 if (!$dataSetObject->DeleteAll($dataSetId))157 if (!$dataSetObject->DeleteAll($dataSetId))
157 return $this->SetError(25005, __('Cannot delete dataset, columns could not be deleted.'));158 return $this->SetError(25005, __('Cannot delete dataset, columns could not be deleted.'));
@@ -175,6 +176,129 @@
175 }176 }
176 }177 }
177178
179 public function LinkLayout($dataSetId, $layoutId, $regionId, $mediaId) {
180 try {
181 $dbh = PDOConnect::init();
182
183 $sth = $dbh->prepare('INSERT INTO `lkdatasetlayout` (DataSetID, LayoutID, RegionID, MediaID) VALUES (:datasetid, :layoutid, :regionid, :mediaid)');
184 $sth->execute(array(
185 'datasetid' => $dataSetId,
186 'layoutid' => $layoutId,
187 'regionid' => $regionId,
188 'mediaid' => $mediaId
189 ));
190 }
191 catch (Exception $e) {
192
193 Debug::LogEntry('error', $e->getMessage());
194
195 if (!$this->IsError())
196 $this->SetError(1, __('Unknown Error'));
197
198 return false;
199 }
200 }
201
202 public function UnlinkLayout($dataSetId, $layoutId, $regionId, $mediaId) {
203 try {
204 $dbh = PDOConnect::init();
205
206 $sth = $dbh->prepare('DELETE FROM `lkdatasetlayout` WHERE DataSetID = :datasetid AND LayoutID = :layoutid AND RegionID = :regionid AND MediaID = :mediaid');
207 $sth->execute(array(
208 'datasetid' => $dataSetId,
209 'layoutid' => $layoutId,
210 'regionid' => $regionId,
211 'mediaid' => $mediaId
212 ));
213 }
214 catch (Exception $e) {
215
216 Debug::LogEntry('error', $e->getMessage());
217
218 if (!$this->IsError())
219 $this->SetError(1, __('Unknown Error'));
220
221 return false;
222 }
223 }
224
225 public function GetDataSetFromLayout($layoutId, $regionId, $mediaId) {
226 try {
227 $dbh = PDOConnect::init();
228
229 $sth = $dbh->prepare('SELECT `dataset`.* FROM `lkdatasetlayout` INNER JOIN `dataset` ON lkdatasetlayout.DataSetId = dataset.DataSetID WHERE LayoutID = :layoutid AND RegionID = :regionid AND MediaID = :mediaid');
230 $sth->execute(array(
231 'layoutid' => $layoutId,
232 'regionid' => $regionId,
233 'mediaid' => $mediaId
234 ));
235
236 return $sth->fetchAll();
237 }
238 catch (Exception $e) {
239
240 Debug::LogEntry('error', $e->getMessage());
241
242 if (!$this->IsError())
243 $this->SetError(1, __('Unknown Error'));
244
245 return false;
246 }
247 }
248
249 public function GetCampaignsForDataSet($dataSetId) {
250 try {
251 $dbh = PDOConnect::init();
252
253 $sth = $dbh->prepare('SELECT `lkcampaignlayout`.CampaignID FROM `lkdatasetlayout` INNER JOIN `lkcampaignlayout` ON `lkcampaignlayout`.LayoutID = `lkdatasetlayout`.LayoutID WHERE DataSetID = :datasetid');
254 $sth->execute(array(
255 'datasetid' => $dataSetId
256 ));
257
258 $ids = array();
259
260 foreach ($sth->fetchAll() as $id)
261 $ids[] = $id['CampaignID'];
262
263 return $ids;
264 }
265 catch (Exception $e) {
266
267 Debug::LogEntry('error', $e->getMessage());
268
269 if (!$this->IsError())
270 $this->SetError(1, __('Unknown Error'));
271
272 return false;
273 }
274 }
275
276 public function GetLastDataEditTime($dataSetId) {
277 try {
278 $dbh = PDOConnect::init();
279
280 $sth = $dbh->prepare('SELECT LastDataEdit FROM `dataset` WHERE DataSetID = :dataset_id');
281 $sth->execute(array(
282 'dataset_id' => $dataSetId
283 ));
284
285 $updateDate = $sth->fetchColumn(0);
286
287 Debug::LogEntry('audit', sprintf('Returning update date %s for DataSetId %d', $updateDate, $dataSetId), 'dataset', 'GetLastDataEditTime');
288
289 return $updateDate;
290 }
291 catch (Exception $e) {
292
293 Debug::LogEntry('error', $e->getMessage());
294
295 if (!$this->IsError())
296 $this->SetError(1, __('Unknown Error'));
297
298 return false;
299 }
300 }
301
178 /**302 /**
179 * Data Set Results303 * Data Set Results
180 * @param <type> $dataSetId304 * @param <type> $dataSetId
@@ -327,5 +451,45 @@
327451
328 return $results;452 return $results;
329 }453 }
454
455 public function GetDataTypes() {
456 try {
457 $dbh = PDOConnect::init();
458
459 $sth = $dbh->prepare('SELECT datatypeid, datatype FROM datatype');
460 $sth->execute();
461
462 return $sth->fetchAll();
463 }
464 catch (Exception $e) {
465
466 Debug::LogEntry('error', $e->getMessage());
467
468 if (!$this->IsError())
469 $this->SetError(1, __('Unknown Error'));
470
471 return false;
472 }
473 }
474
475 public function GetDataSetColumnTypes() {
476 try {
477 $dbh = PDOConnect::init();
478
479 $sth = $dbh->prepare('SELECT datasetcolumntypeid, datasetcolumntype FROM datasetcolumntype');
480 $sth->execute();
481
482 return $sth->fetchAll();
483 }
484 catch (Exception $e) {
485
486 Debug::LogEntry('error', $e->getMessage());
487
488 if (!$this->IsError())
489 $this->SetError(1, __('Unknown Error'));
490
491 return false;
492 }
493 }
330}494}
331?>
332\ No newline at end of file495\ No newline at end of file
496?>
333497
=== modified file 'server/lib/data/datasetcolumn.data.class.php'
--- server/lib/data/datasetcolumn.data.class.php 2014-01-18 09:47:41 +0000
+++ server/lib/data/datasetcolumn.data.class.php 2014-07-15 15:37:37 +0000
@@ -26,6 +26,18 @@
26 {26 {
27 Debug::LogEntry('audit', sprintf('IN - DataSetID = %d', $dataSetId), 'DataSetColumn', 'Add');27 Debug::LogEntry('audit', sprintf('IN - DataSetID = %d', $dataSetId), 'DataSetColumn', 'Add');
2828
29 if ($dataSetId == 0 || $dataSetId == '')
30 return $this->SetError(25001, __('Missing dataSetId'));
31
32 if ($dataTypeId == 0 || $dataTypeId == '')
33 return $this->SetError(25001, __('Missing dataTypeId'));
34
35 if ($dataSetColumnTypeId == 0 || $dataSetColumnTypeId == '')
36 return $this->SetError(25001, __('Missing dataSetColumnTypeId'));
37
38 if ($heading == '')
39 return $this->SetError(25001, __('Please provide a column heading.'));
40
29 try {41 try {
30 $dbh = PDOConnect::init();42 $dbh = PDOConnect::init();
3143
@@ -77,6 +89,18 @@
7789
78 public function Edit($dataSetColumnId, $heading, $dataTypeId, $listContent, $columnOrder, $dataSetColumnTypeId, $formula = '')90 public function Edit($dataSetColumnId, $heading, $dataTypeId, $listContent, $columnOrder, $dataSetColumnTypeId, $formula = '')
79 {91 {
92 if ($dataSetColumnId == 0 || $dataSetColumnId == '')
93 return $this->SetError(25001, __('Missing dataSetColumnId'));
94
95 if ($dataTypeId == 0 || $dataTypeId == '')
96 return $this->SetError(25001, __('Missing dataTypeId'));
97
98 if ($dataSetColumnTypeId == 0 || $dataSetColumnTypeId == '')
99 return $this->SetError(25001, __('Missing dataSetColumnTypeId'));
100
101 if ($heading == '')
102 return $this->SetError(25001, __('Please provide a column heading.'));
103
80 try {104 try {
81 $dbh = PDOConnect::init();105 $dbh = PDOConnect::init();
82106
@@ -122,7 +146,7 @@
122 'formula' => $formula146 'formula' => $formula
123 ));147 ));
124148
125 Debug::LogEntry('audit', 'Complete', 'DataSetColumn', 'Edit');149 Debug::LogEntry('audit', 'Complete for ' . $heading, 'DataSetColumn', 'Edit');
126150
127 return true;151 return true;
128 }152 }
@@ -134,6 +158,9 @@
134158
135 public function Delete($dataSetColumnId)159 public function Delete($dataSetColumnId)
136 {160 {
161 if ($dataSetColumnId == 0 || $dataSetColumnId == '')
162 return $this->SetError(25001, __('Missing dataSetColumnId'));
163
137 try {164 try {
138 $dbh = PDOConnect::init();165 $dbh = PDOConnect::init();
139166
@@ -155,6 +182,9 @@
155 // Delete All Data Set columns182 // Delete All Data Set columns
156 public function DeleteAll($dataSetId)183 public function DeleteAll($dataSetId)
157 {184 {
185 if ($dataSetId == 0 || $dataSetId == '')
186 return $this->SetError(25001, __('Missing dataSetId'));
187
158 try {188 try {
159 $dbh = PDOConnect::init();189 $dbh = PDOConnect::init();
160190
@@ -172,5 +202,61 @@
172 return $this->SetError(25005, __('Could not delete DataSet Column'));202 return $this->SetError(25005, __('Could not delete DataSet Column'));
173 }203 }
174 }204 }
205
206 public function GetColumns($dataSetId) {
207
208 if ($dataSetId == 0 || $dataSetId == '')
209 return $this->SetError(25001, __('Missing dataSetId'));
210
211 try {
212 $dbh = PDOConnect::init();
213
214 $sth = $dbh->prepare('SELECT DataSetColumnID, Heading, datatype.DataType, datasetcolumntype.DataSetColumnType, ListContent, ColumnOrder
215 FROM datasetcolumn
216 INNER JOIN `datatype`
217 ON datatype.DataTypeID = datasetcolumn.DataTypeID
218 INNER JOIN `datasetcolumntype`
219 ON datasetcolumntype.DataSetColumnTypeID = datasetcolumn.DataSetColumnTypeID
220 WHERE DataSetID = :datasetid
221 ORDER BY ColumnOrder ');
222
223 $sth->execute(array(
224 'datasetid' => $dataSetId
225 ));
226
227 $results = $sth->fetchAll();
228
229 // Check there are some columns returned
230 if (count($results) <= 0)
231 $this->ThrowError(__('No columns'));
232
233 $rows = array();
234
235 foreach($results as $row) {
236
237 $col['datasetcolumnid'] = Kit::ValidateParam($row['DataSetColumnID'], _INT);
238 $col['heading'] = Kit::ValidateParam($row['Heading'], _STRING);
239 $col['listcontent'] = Kit::ValidateParam($row['ListContent'], _STRING);
240 $col['columnorder'] = Kit::ValidateParam($row['ColumnOrder'], _INT);
241 $col['datatype'] = Kit::ValidateParam($row['DataType'], _STRING);
242 $col['datasetcolumntype'] = Kit::ValidateParam($row['DataSetColumnType'], _STRING);
243
244 $rows[] = $col;
245 }
246
247 Debug::LogEntry('audit', sprintf('Returning %d columns.', count($rows)), 'DataSetColumn', 'GetColumns');
248
249 return $rows;
250 }
251 catch (Exception $e) {
252
253 Debug::LogEntry('error', $e->getMessage());
254
255 if (!$this->IsError())
256 $this->SetError(1, __('Unknown Error'));
257
258 return false;
259 }
260 }
175}261}
176?>
177\ No newline at end of file262\ No newline at end of file
263?>
178264
=== modified file 'server/lib/data/datasetdata.data.class.php'
--- server/lib/data/datasetdata.data.class.php 2014-01-18 09:47:41 +0000
+++ server/lib/data/datasetdata.data.class.php 2014-07-15 15:37:37 +0000
@@ -22,8 +22,75 @@
2222
23class DataSetData extends Data23class DataSetData extends Data
24{24{
25 private $updateWatermark;
26
27 public function __construct(database $db) {
28
29 $this->updateWatermark = true;
30
31 parent::__construct($db);
32 }
33
34 /**
35 * List all data for this dataset
36 * @param int $dataSetId The DataSet ID
37 */
38 public function GetData($dataSetId) {
39
40 if ($dataSetId == 0 || $dataSetId == '')
41 return $this->SetError(25001, __('Missing dataSetId'));
42
43 try {
44 $dbh = PDOConnect::init();
45
46 $sth = $dbh->prepare('SELECT datasetdata.DataSetColumnID, datasetdata.RowNumber, datasetdata.Value
47 FROM datasetdata
48 INNER JOIN datasetcolumn
49 ON datasetcolumn.DataSetColumnID = datasetdata.DataSetColumnID
50 WHERE datasetcolumn.DataSetID = :dataset_id');
51
52 $sth->execute(array('dataset_id' => $dataSetId));
53
54 $results = $sth->fetchAll();
55
56 // Check there are some columns returned
57 if (count($results) <= 0)
58 $this->ThrowError(__('No data'));
59
60 $rows = array();
61
62 foreach($results as $row) {
63
64 $col['datasetcolumnid'] = Kit::ValidateParam($row['DataSetColumnID'], _INT);
65 $col['rownumber'] = Kit::ValidateParam($row['RowNumber'], _INT);
66 $col['value'] = Kit::ValidateParam($row['Value'], _STRING);
67
68 $rows[] = $col;
69 }
70
71 Debug::LogEntry('audit', sprintf('Returning %d columns.', count($rows)), 'DataSetColumn', 'GetData');
72
73 return $rows;
74 }
75 catch (Exception $e) {
76
77 Debug::LogEntry('error', $e->getMessage());
78
79 if (!$this->IsError())
80 $this->SetError(1, __('Unknown Error'));
81
82 return false;
83 }
84 }
85
25 public function Add($dataSetColumnId, $rowNumber, $value)86 public function Add($dataSetColumnId, $rowNumber, $value)
26 {87 {
88 if ($dataSetColumnId == 0 || $dataSetColumnId == '')
89 return $this->SetError(25001, __('Missing dataSetColumnId'));
90
91 if ($rowNumber == 0 || $rowNumber == '')
92 return $this->SetError(25001, __('Missing rowNumber'));
93
27 try {94 try {
28 $dbh = PDOConnect::init();95 $dbh = PDOConnect::init();
2996
@@ -39,6 +106,9 @@
39106
40 $id = $dbh->lastInsertId();107 $id = $dbh->lastInsertId();
41108
109 // Update the Water Mark
110 $this->UpdateWatermarkWithColumnId($dataSetColumnId);
111
42 Debug::LogEntry('audit', 'Complete', 'DataSetData', 'Add');112 Debug::LogEntry('audit', 'Complete', 'DataSetData', 'Add');
43 113
44 return $id;114 return $id;
@@ -51,6 +121,12 @@
51121
52 public function Edit($dataSetColumnId, $rowNumber, $value)122 public function Edit($dataSetColumnId, $rowNumber, $value)
53 {123 {
124 if ($dataSetColumnId == 0 || $dataSetColumnId == '')
125 return $this->SetError(25001, __('Missing dataSetColumnId'));
126
127 if ($rowNumber == 0 || $rowNumber == '')
128 return $this->SetError(25001, __('Missing rowNumber'));
129
54 try {130 try {
55 $dbh = PDOConnect::init();131 $dbh = PDOConnect::init();
56132
@@ -64,6 +140,8 @@
64 'value' => $value140 'value' => $value
65 ));141 ));
66142
143 $this->UpdateWatermarkWithColumnId($dataSetColumnId);
144
67 Debug::LogEntry('audit', 'Complete', 'DataSetData', 'Edit');145 Debug::LogEntry('audit', 'Complete', 'DataSetData', 'Edit');
68146
69 return true;147 return true;
@@ -88,6 +166,8 @@
88 'rownumber' => $rowNumber166 'rownumber' => $rowNumber
89 ));167 ));
90168
169 $this->UpdateWatermarkWithColumnId($dataSetColumnId);
170
91 Debug::LogEntry('audit', 'Complete', 'DataSetData', 'Delete');171 Debug::LogEntry('audit', 'Complete', 'DataSetData', 'Delete');
92172
93 return true;173 return true;
@@ -100,6 +180,9 @@
100180
101 public function DeleteAll($dataSetId) {181 public function DeleteAll($dataSetId) {
102182
183 if ($dataSetId == 0 || $dataSetId == '')
184 return $this->SetError(25001, __('Missing dataSetId'));
185
103 try {186 try {
104 $dbh = PDOConnect::init();187 $dbh = PDOConnect::init();
105188
@@ -113,6 +196,8 @@
113 'datasetid' => $dataSetId196 'datasetid' => $dataSetId
114 ));197 ));
115198
199 $this->UpdateWatermark($dataSetId);
200
116 return true;201 return true;
117 }202 }
118 catch (Exception $e) {203 catch (Exception $e) {
@@ -121,8 +206,98 @@
121 }206 }
122 }207 }
123208
209 /**
210 * Update the Water Mark to indicate the last data edit
211 * @param int $dataSetColumnId The Data Set Column ID
212 */
213 private function UpdateWatermarkWithColumnId($dataSetColumnId) {
214
215 if (!$this->updateWatermark)
216 return;
217
218 try {
219 $dbh = PDOConnect::init();
220
221 $sth = $dbh->prepare('SELECT DataSetID FROM `datasetcolumn` WHERE DataSetColumnID = :dataset_column_id');
222 $sth->execute(array(
223 'dataset_column_id' => $dataSetColumnId
224 ));
225
226 $this->UpdateWatermark($sth->fetchColumn(0));
227 }
228 catch (Exception $e) {
229
230 Debug::LogEntry('error', $e->getMessage());
231
232 if (!$this->IsError())
233 $this->SetError(1, __('Unknown Error'));
234
235 return false;
236 }
237 }
238
239 /**
240 * Update the Water Mark to indicate the last data edit
241 * @param int $dataSetId The Data Set ID to Update
242 */
243 private function UpdateWatermark($dataSetId) {
244
245 if ($dataSetId == 0 || $dataSetId == '')
246 return $this->SetError(25001, __('Missing dataSetId'));
247
248 if (!$this->updateWatermark)
249 return;
250
251 Debug::LogEntry('audit', sprintf('Updating water mark on DataSetId: %d', $dataSetId), 'DataSetData', 'UpdateWatermark');
252
253 try {
254 $dbh = PDOConnect::init();
255
256 $sth = $dbh->prepare('UPDATE `dataset` SET LastDataEdit = :last_data_edit WHERE DataSetID = :dataset_id');
257 $sth->execute(array(
258 'last_data_edit' => time(),
259 'dataset_id' => $dataSetId
260 ));
261
262 // Get affected Campaigns
263 Kit::ClassLoader('dataset');
264 $dataSet = new DataSet($this->db);
265 $campaigns = $dataSet->GetCampaignsForDataSet($dataSetId);
266
267 Kit::ClassLoader('display');
268 $display = new Display($this->db);
269
270 foreach ($campaigns as $campaignId) {
271 // Assess all displays
272 $campaigns = $display->NotifyDisplays($campaignId);
273 }
274 }
275 catch (Exception $e) {
276
277 Debug::LogEntry('error', $e->getMessage());
278
279 if (!$this->IsError())
280 $this->SetError(1, __('Unknown Error'));
281
282 return false;
283 }
284 }
285
124 public function ImportCsv($dataSetId, $csvFile, $spreadSheetMapping, $overwrite = false, $ignoreFirstRow = true) {286 public function ImportCsv($dataSetId, $csvFile, $spreadSheetMapping, $overwrite = false, $ignoreFirstRow = true) {
125287
288 if ($dataSetId == 0 || $dataSetId == '')
289 return $this->SetError(25001, __('Missing dataSetId'));
290
291 if (!file_exists($csvFile))
292 return $this->SetError(25001, __('CSV File does not exist'));
293
294 if (!is_array($spreadSheetMapping) || count($spreadSheetMapping) <= 0)
295 return $this->SetError(25001, __('Missing spreadSheetMapping'));
296
297 Debug::LogEntry('audit', 'spreadSheetMapping: ' . json_encode($spreadSheetMapping), 'DataSetData', 'ImportCsv');
298
299 $this->updateWatermark = false;
300
126 try {301 try {
127 $dbh = PDOConnect::init();302 $dbh = PDOConnect::init();
128303
@@ -187,6 +362,8 @@
187362
188 // TODO: Update list content definitions363 // TODO: Update list content definitions
189364
365 $this->UpdateWatermark($dataSetId);
366
190 return true;367 return true;
191 }368 }
192 catch (Exception $e) {369 catch (Exception $e) {
193370
=== modified file 'server/lib/data/datasetgroupsecurity.data.class.php'
--- server/lib/data/datasetgroupsecurity.data.class.php 2014-01-18 09:47:41 +0000
+++ server/lib/data/datasetgroupsecurity.data.class.php 2014-07-15 15:37:37 +0000
@@ -22,6 +22,53 @@
2222
23class DataSetGroupSecurity extends Data23class DataSetGroupSecurity extends Data
24{24{
25 public function ListSecurity($dataSetId, $groupId) {
26
27 if ($dataSetId == 0 || $dataSetId == '')
28 return $this->SetError(25001, __('Missing dataSetId'));
29
30 try {
31 $dbh = PDOConnect::init();
32
33 $sth = $dbh->prepare('SELECT `group`.groupid, `group`.`group`, view, edit, del, `group`.isuserspecific
34 FROM `group`
35 LEFT OUTER JOIN lkdatasetgroup
36 ON lkdatasetgroup.GroupID = group.GroupID
37 AND lkdatasetgroup.DataSetID = :datasetid
38 WHERE `group`.GroupID <> :groupid
39 ORDER BY `group`.IsEveryone DESC, `group`.IsUserSpecific, `group`.`Group`');
40
41 $sth->execute(array(
42 'datasetid' => $dataSetId,
43 'groupid' => $groupId
44 ));
45
46 $security = array();
47
48 foreach($sth->fetchAll() as $row) {
49 $security[] = array(
50 'groupid' => Kit::ValidateParam($row['groupid'], _INT),
51 'group' => Kit::ValidateParam($row['group'], _STRING),
52 'view' => Kit::ValidateParam($row['view'], _INT),
53 'edit' => Kit::ValidateParam($row['edit'], _INT),
54 'del' => Kit::ValidateParam($row['del'], _INT),
55 'isuserspecific' => Kit::ValidateParam($row['isuserspecific'], _INT),
56 );
57 }
58
59 return $security;
60 }
61 catch (Exception $e) {
62
63 Debug::LogEntry('error', $e->getMessage());
64
65 if (!$this->IsError())
66 $this->SetError(1, __('Unknown Error'));
67
68 return false;
69 }
70 }
71
25 /**72 /**
26 * Links a Display Group to a Group73 * Links a Display Group to a Group
27 * @return74 * @return
@@ -30,7 +77,11 @@
30 */77 */
31 public function Link($dataSetId, $groupId, $view, $edit, $del)78 public function Link($dataSetId, $groupId, $view, $edit, $del)
32 {79 {
33 Debug::LogEntry('audit', 'IN', 'DataSetGroupSecurity', 'Link');80 if ($dataSetId == 0 || $dataSetId == '')
81 return $this->SetError(25001, __('Missing dataSetId'));
82
83 if ($groupId == 0 || $groupId == '')
84 return $this->SetError(25001, __('Missing groupId'));
3485
35 try {86 try {
36 $dbh = PDOConnect::init();87 $dbh = PDOConnect::init();
@@ -69,6 +120,9 @@
69 public function LinkEveryone($dataSetId, $view, $edit, $del)120 public function LinkEveryone($dataSetId, $view, $edit, $del)
70 {121 {
71 Debug::LogEntry('audit', 'IN', 'DataSetGroupSecurity', 'LinkEveryone');122 Debug::LogEntry('audit', 'IN', 'DataSetGroupSecurity', 'LinkEveryone');
123
124 if ($dataSetId == 0 || $dataSetId == '')
125 return $this->SetError(25001, __('Missing dataSetId'));
72 126
73 try {127 try {
74 $dbh = PDOConnect::init();128 $dbh = PDOConnect::init();
@@ -97,7 +151,11 @@
97 */151 */
98 public function Unlink($dataSetId, $groupId)152 public function Unlink($dataSetId, $groupId)
99 {153 {
100 Debug::LogEntry('audit', 'IN', 'DataSetGroupSecurity', 'Unlink');154 if ($dataSetId == 0 || $dataSetId == '')
155 return $this->SetError(25001, __('Missing dataSetId'));
156
157 if ($groupId == 0 || $groupId == '')
158 return $this->SetError(25001, __('Missing groupId'));
101 159
102 try {160 try {
103 $dbh = PDOConnect::init();161 $dbh = PDOConnect::init();
@@ -128,6 +186,9 @@
128 {186 {
129 Debug::LogEntry('audit', 'IN', 'DataSetGroupSecurity', 'UnlinkAll');187 Debug::LogEntry('audit', 'IN', 'DataSetGroupSecurity', 'UnlinkAll');
130188
189 if ($dataSetId == 0 || $dataSetId == '')
190 return $this->SetError(25001, __('Missing dataSetId'));
191
131 try {192 try {
132 $dbh = PDOConnect::init();193 $dbh = PDOConnect::init();
133194
134195
=== modified file 'server/lib/data/file.data.class.php'
--- server/lib/data/file.data.class.php 2014-01-18 09:47:41 +0000
+++ server/lib/data/file.data.class.php 2014-07-15 15:37:37 +0000
@@ -132,6 +132,20 @@
132 }132 }
133133
134 /**134 /**
135 * Get the Path to a file
136 * @param int $fileId The File ID
137 */
138 public function GetPath($fileId) {
139
140 if ($fileId == '' || $fileId == 0)
141 return $this->SetError(25001, __('Missing fileId'));
142
143 $libraryFolder = Config::GetSetting('LIBRARY_LOCATION');
144 $libraryFolder = $libraryFolder . 'temp';
145 return $libraryFolder . '/' . $fileId;
146 }
147
148 /**
135 * The current size of a file149 * The current size of a file
136 * @param <type> $fileId150 * @param <type> $fileId
137 * @return <int> filesize151 * @return <int> filesize
138152
=== modified file 'server/lib/data/layout.data.class.php'
--- server/lib/data/layout.data.class.php 2014-02-16 18:10:59 +0000
+++ server/lib/data/layout.data.class.php 2014-07-15 15:37:37 +0000
@@ -1065,13 +1065,28 @@
1065 $regionObject = new Region($this->db);1065 $regionObject = new Region($this->db);
1066 $mediaNodes = $regionObject->GetMediaNodeList($layoutId, $region['regionid']);1066 $mediaNodes = $regionObject->GetMediaNodeList($layoutId, $region['regionid']);
10671067
1068 // Create a data set to see if there are any requirements to serve an updated date time
1069 Kit::ClassLoader('dataset');
1070 $dataSetObject = new DataSet($this->db);
1071
1068 foreach($mediaNodes as $mediaNode) {1072 foreach($mediaNodes as $mediaNode) {
1069 // Put this node vertically in the region timeline1073
1070 $region['media'][] = array(1074 $node = array(
1071 'mediaid' => $mediaNode->getAttribute('id'),1075 'mediaid' => $mediaNode->getAttribute('id'),
1072 'lkid' => $mediaNode->getAttribute('lkid'),1076 'lkid' => $mediaNode->getAttribute('lkid'),
1073 'mediatype' => $mediaNode->getAttribute('type')1077 'mediatype' => $mediaNode->getAttribute('type')
1074 );1078 );
1079
1080 // DataSets are a special case. We want to get the last updated time from the dataset.
1081 $dataSet = $dataSetObject->GetDataSetFromLayout($layoutId, $region['regionid'], $mediaNode->getAttribute('id'));
1082
1083 if (count($dataSet) == 1) {
1084
1085 $node['updated'] = $dataSet[0]['LastDataEdit'];
1086 }
1087
1088 // Put this node vertically in the region time-line
1089 $region['media'][] = $node;
1075 }1090 }
10761091
1077 Debug::LogEntry('audit', 'Finished with Region', 'layout', 'LayoutInformation');1092 Debug::LogEntry('audit', 'Finished with Region', 'layout', 'LayoutInformation');
10781093
=== modified file 'server/lib/data/region.data.class.php'
--- server/lib/data/region.data.class.php 2014-04-26 09:25:32 +0000
+++ server/lib/data/region.data.class.php 2014-07-15 15:37:37 +0000
@@ -22,6 +22,10 @@
2222
23class Region extends Data23class Region extends Data
24{24{
25 // Caching
26 private $layoutXml;
27 private $layoutDocument;
28
25 public function __construct(database $db) 29 public function __construct(database $db)
26 {30 {
27 $this->db =& $db;31 $this->db =& $db;
@@ -37,9 +41,23 @@
37 */41 */
38 public function GetLayoutXml($layoutid)42 public function GetLayoutXml($layoutid)
39 {43 {
40 $layout = new Layout($this->db);44 if ($this->layoutXml == '') {
4145 $layout = new Layout($this->db);
42 return $layout->GetLayoutXml($layoutid);46 $this->layoutXml = $layout->GetLayoutXml($layoutid);
47 }
48
49 return $this->layoutXml;
50 }
51
52 public function GetLayoutDom($layoutId) {
53
54 if ($this->layoutDocument == NULL) {
55 // Load the XML into a new DOMDocument
56 $this->layoutDocument = new DOMDocument();
57 $this->layoutDocument->loadXML($this->GetLayoutXml($layoutId));
58 }
59
60 return $this->layoutDocument;
43 }61 }
44 62
45 /**63 /**
@@ -50,6 +68,9 @@
50 */68 */
51 private function SetLayoutXml($layoutid, $xml)69 private function SetLayoutXml($layoutid, $xml)
52 {70 {
71 // Update Cache
72 $this->layoutXml = $xml;
73
53 $layout = new Layout($this->db);74 $layout = new Layout($this->db);
5475
55 if (!$layout->SetLayoutXml($layoutid, $xml))76 if (!$layout->SetLayoutXml($layoutid, $xml))
@@ -904,6 +925,41 @@
904 }925 }
905926
906 /**927 /**
928 * Get Option for Media Id
929 * @param int $layoutId The Layout ID
930 * @param string $mediaId The Media ID
931 * @param string $name The Option Name
932 * @param string $default The Default Value if none found
933 */
934 public function GetOptionForMediaId($layoutId, $mediaId, $name, $default = false) {
935
936 if ($name == '')
937 return false;
938
939 if (!$this->GetLayoutDom($layoutId))
940 return false;
941
942 // Check to see if we already have this option or not
943 $xpath = new DOMXPath($this->layoutDocument);
944
945 // Xpath for it
946 $userOptions = $xpath->query('//region/media[@id=\'' . $mediaId . '\']/options/' . $name);
947
948 // Debug::LogEntry('audit', '//region/media[@id=\'' . $mediaId . '\']/options/' . $name);
949
950 if ($userOptions->length == 0) {
951 // We do not have an option - return the default
952 Debug::LogEntry('audit', 'GetOption ' . $name . ': Not Set - returning default ' . $default, 'region');
953 return $default;
954 }
955 else {
956 // Replace the old node we found with XPath with the new node we just created
957 Debug::LogEntry('audit', 'GetOption ' . $name . ': Set - returning: ' . $userOptions->item(0)->nodeValue, 'region');
958 return ($userOptions->item(0)->nodeValue != '') ? $userOptions->item(0)->nodeValue : $default;
959 }
960 }
961
962 /**
907 * Add Existing Media from the Library963 * Add Existing Media from the Library
908 * @param [int] $user [A user object for the currently logged in user]964 * @param [int] $user [A user object for the currently logged in user]
909 * @param [int] $layoutId [The LayoutID to Add on]965 * @param [int] $layoutId [The LayoutID to Add on]
910966
=== modified file 'server/lib/include.php'
--- server/lib/include.php 2014-04-27 20:16:42 +0000
+++ server/lib/include.php 2014-07-15 15:37:37 +0000
@@ -1,7 +1,7 @@
1<?php1<?php
2/*2/*
3 * Xibo - Digital Signage - http://www.xibo.org.uk3 * Xibo - Digital Signage - http://www.xibo.org.uk
4 * Copyright (C) 2006-2012 Daniel Garner and James Packer4 * Copyright (C) 2006-2014 Daniel Garner and James Packer
5 *5 *
6 * This file is part of Xibo.6 * This file is part of Xibo.
7 *7 *
@@ -20,7 +20,7 @@
20 */20 */
21defined('XIBO') or die("Sorry, you are not allowed to directly access this page.<br /> Please press the back button in your browser.");21defined('XIBO') or die("Sorry, you are not allowed to directly access this page.<br /> Please press the back button in your browser.");
2222
23define('WEBSITE_VERSION', 68);23define('WEBSITE_VERSION', 70);
2424
25// No errors reported until we read the settings from the DB25// No errors reported until we read the settings from the DB
26error_reporting(0);26error_reporting(0);
@@ -137,8 +137,8 @@
137// Create login control system137// Create login control system
138require_once('modules/' . Config::GetSetting("userModule"));138require_once('modules/' . Config::GetSetting("userModule"));
139139
140$user = new User($db);140// Create a Session
141$session = new Session();141$session = new Session();
142142
143// Work out the location of this service143// Work out the location of this service
144$serviceLocation = Kit::GetXiboRoot();144$serviceLocation = Kit::GetXiboRoot();
@@ -152,6 +152,9 @@
152// Assign the page name to the session152// Assign the page name to the session
153$session->set_page(session_id(), $page);153$session->set_page(session_id(), $page);
154154
155// Create a user
156$user = new User($db);
157
155// Create Page158// Create Page
156try {159try {
157 $pageManager = new PageManager($db, $user, $page);160 $pageManager = new PageManager($db, $user, $page);
158161
=== modified file 'server/lib/modules/module.class.php'
--- server/lib/modules/module.class.php 2014-04-26 09:25:32 +0000
+++ server/lib/modules/module.class.php 2014-07-15 15:37:37 +0000
@@ -233,27 +233,32 @@
233 $this->existingMedia = true;233 $this->existingMedia = true;
234 $this->assignedMedia = false;234 $this->assignedMedia = false;
235235
236 // Load what we know about this media into the object236 try {
237 $SQL = "SELECT duration, name, UserId, storedAs FROM media WHERE mediaID = '$mediaid'";237 $dbh = PDOConnect::init();
238238
239 Debug::LogEntry('audit', $SQL, 'Module', 'SetMediaInformation');239 // Load what we know about this media into the object
240240 $sth = $dbh->prepare('SELECT duration, name, UserId, storedAs FROM media WHERE mediaID = :media_id');
241 if (!$result = $db->query($SQL))241 $sth->execute(array(
242 {242 'media_id' => $mediaid
243 // log the error243 ));
244 trigger_error($db->error());244
245 }245 $rows = $sth->fetchAll();
246246
247 if ($db->num_rows($result) != 0)247 if (count($rows) != 1) {
248 {248 return $this->SetError(__('Unable to find media record with the provided ID'));
249 $row = $db->get_row($result);249 }
250 $this->duration = $row[0];250
251 $this->name = $row[1];251 $this->duration = $rows[0]['duration'];
252 $this->originalUserId = $row[2];252 $this->name = $rows[0]['name'];
253 $this->storedAs = $row[3];253 $this->originalUserId = $rows[0]['UserId'];
254 }254 $this->storedAs = $rows[0]['storedAs'];
255 else255 }
256 return $this->SetError(__('Unable to find media record with the provided ID'));256 catch (Exception $e) {
257
258 Debug::LogEntry('error', $e->getMessage());
259
260 return $this->SetError(__('Unable to find media record with the provided ID'));
261 }
257262
258 $this->auth = $this->user->MediaAuth($this->mediaid, true);263 $this->auth = $this->user->MediaAuth($this->mediaid, true);
259 }264 }
@@ -517,7 +522,7 @@
517 if ($this->regionSpecific)522 if ($this->regionSpecific)
518 {523 {
519 $form = <<<END524 $form = <<<END
520 <form id="MediaDeleteForm" class="XiboForm" method="post" action="index.php?p=module&mod=text&q=Exec&method=DeleteMedia">525 <form id="MediaDeleteForm" class="XiboForm" method="post" action="index.php?p=module&mod=$this->type&q=Exec&method=DeleteMedia">
521 <input type="hidden" name="mediaid" value="$mediaid">526 <input type="hidden" name="mediaid" value="$mediaid">
522 <input type="hidden" name="layoutid" value="$layoutid">527 <input type="hidden" name="layoutid" value="$layoutid">
523 <input type="hidden" name="regionid" value="$regionid">528 <input type="hidden" name="regionid" value="$regionid">
@@ -865,13 +870,13 @@
865 Theme::Set('form_meta', '<input type="hidden" id="PHPSESSID" value="' . $sessionId . '" /><input type="hidden" id="SecurityToken" value="' . $securityToken . '" /><input type="hidden" name="type" value="' . $this->type . '"><input type="hidden" name="layoutid" value="' . $layoutid . '"><input type="hidden" name="regionid" value="' . $regionid . '">');870 Theme::Set('form_meta', '<input type="hidden" id="PHPSESSID" value="' . $sessionId . '" /><input type="hidden" id="SecurityToken" value="' . $securityToken . '" /><input type="hidden" name="type" value="' . $this->type . '"><input type="hidden" name="layoutid" value="' . $layoutid . '"><input type="hidden" name="regionid" value="' . $regionid . '">');
866 Theme::Set('form_valid_ext', '/(\.|\/)' . implode('|', $this->validExtensions) . '$/i');871 Theme::Set('form_valid_ext', '/(\.|\/)' . implode('|', $this->validExtensions) . '$/i');
867 Theme::Set('form_max_size', Kit::ReturnBytes($this->maxFileSize));872 Theme::Set('form_max_size', Kit::ReturnBytes($this->maxFileSize));
868 Theme::Set('valid_extensions', 'This form accepts: ' . $this->validExtensionsText . ' files up to a maximum size of ' . $this->maxFileSize);873 Theme::Set('valid_extensions', sprintf(__('This form accepts: %s files up to a maximum size of %s'), $this->validExtensionsText, $this->maxFileSize));
869 Theme::Set('default_duration', $defaultDuration);874 Theme::Set('default_duration', $defaultDuration);
870875
871 $form = Theme::RenderReturn('library_form_media_add');876 $form = Theme::RenderReturn('library_form_media_add');
872877
873 $this->response->html = $form;878 $this->response->html = $form;
874 $this->response->dialogTitle = 'Add New ' . $this->displayType;879 $this->response->dialogTitle = sprintf(__('Add New %s'), __($this->displayType));
875 $this->response->dialogSize = true;880 $this->response->dialogSize = true;
876 $this->response->dialogWidth = '450px';881 $this->response->dialogWidth = '450px';
877 $this->response->dialogHeight = '280px';882 $this->response->dialogHeight = '280px';
@@ -1201,53 +1206,80 @@
1201 // Create a region object for later use1206 // Create a region object for later use
1202 $region = new region($db);1207 $region = new region($db);
12031208
1204 // Loop through a list of layouts this user has access to1209 try {
1205 foreach($this->user->LayoutList() as $layout)1210 $dbh = PDOConnect::init();
1206 {1211
1207 $layoutId = $layout['layoutid'];1212 // Some update statements to use
1213 $sth = $dbh->prepare('SELECT lklayoutmediaid, regionid FROM lklayoutmedia WHERE mediaid = :media_id AND layoutid = :layout_id');
1214 $sth_update = $dbh->prepare('UPDATE lklayoutmedia SET mediaid = :media_id WHERE lklayoutmediaid = :lklayoutmediaid');
12081215
1209 // Does this layout use the old media id?1216 // Loop through a list of layouts this user has access to
1210 $SQL = sprintf("SELECT lklayoutmediaid, regionid FROM lklayoutmedia WHERE mediaid = %d and layoutid = %d", $oldMediaId, $layoutId);1217 foreach($this->user->LayoutList() as $layout)
1211
1212 if (!$results = $db->query($SQL))
1213 return false;
1214
1215 // Loop through each media link for this layout
1216 while ($row = $db->get_assoc_row($results))
1217 {1218 {
1218 // Get the LKID of the link between this layout and this media.. could be more than one?1219 $layoutId = $layout['layoutid'];
1219 $lkId = $row['lklayoutmediaid'];1220
1220 $regionId = $row['regionid'];1221 // Does this layout use the old media id?
1222 $sth->execute(array(
1223 'media_id' => $oldMediaId,
1224 'layout_id' => $layoutId
1225 ));
12211226
1222 // Get the Type of this media1227 $results = $sth->fetchAll();
1223 if (!$type = $region->GetMediaNodeType($layoutId, '', '', $lkId))1228
1229 if (count($results) <= 0)
1224 continue;1230 continue;
12251231
1226 // Create a new media node use it to swap the nodes over1232 Debug::LogEntry('audit', sprintf('%d linked media items for layoutid %d', count($results), $layoutId), 'module', 'ReplaceMediaInAllLayouts');
1227 Debug::LogEntry('audit', 'Creating new module with MediaID: ' . $newMediaId . ' LayoutID: ' . $layoutId . ' and RegionID: ' . $regionId, 'region', 'ReplaceMediaInAllLayouts');1233
1228 require_once('modules/' . $type . '.module.php');1234 // Loop through each media link for this layout
12291235 foreach ($results as $row)
1230 // Create a new module as if we were assigning it for the first time1236 {
1231 if (!$module = new $type($db, $this->user, $newMediaId))1237 // Get the LKID of the link between this layout and this media.. could be more than one?
1232 return false;1238 $lkId = $row['lklayoutmediaid'];
12331239 $regionId = $row['regionid'];
1234 // Sets the URI field1240
1235 if (!$module->SetRegionInformation($layoutId, $regionId))1241 // Get the Type of this media
1236 return false;1242 if (!$type = $region->GetMediaNodeType($layoutId, '', '', $lkId))
12371243 continue;
1238 // Get the media xml string to use in the swap.1244
1239 $mediaXmlString = $module->AsXml();1245 // Create a new media node use it to swap the nodes over
12401246 Debug::LogEntry('audit', 'Creating new module with MediaID: ' . $newMediaId . ' LayoutID: ' . $layoutId . ' and RegionID: ' . $regionId, 'region', 'ReplaceMediaInAllLayouts');
1241 // Swap the nodes1247 require_once('modules/' . $type . '.module.php');
1242 if (!$region->SwapMedia($layoutId, $regionId, $lkId, $oldMediaId, $newMediaId, $mediaXmlString))1248
1243 return false;1249 // Create a new module as if we were assigning it for the first time
12441250 if (!$module = new $type($db, $this->user, $newMediaId))
1245 // Update the LKID with the new media id1251 return false;
1246 $db->query("UPDATE lklayoutmedia SET mediaid = %d WHERE lklayoutmediaid = %d", $newMediaId, $row['lklayoutmediaid']);1252
12471253 // Sets the URI field
1248 $count++;1254 if (!$module->SetRegionInformation($layoutId, $regionId))
1255 return false;
1256
1257 // Get the media xml string to use in the swap.
1258 $mediaXmlString = $module->AsXml();
1259
1260 // Swap the nodes
1261 if (!$region->SwapMedia($layoutId, $regionId, $lkId, $oldMediaId, $newMediaId, $mediaXmlString))
1262 return false;
1263
1264 // Update the LKID with the new media id
1265 $sth_update->execute(array(
1266 'media_id' => $newMediaId,
1267 'lklayoutmediaid' => $row['lklayoutmediaid']
1268 ));
1269
1270 $count++;
1271 }
1249 }1272 }
1250 }1273 }
1274 catch (Exception $e) {
1275
1276 Debug::LogEntry('error', $e->getMessage());
1277
1278 if (!$this->IsError())
1279 $this->SetError(1, __('Unknown Error'));
1280
1281 return false;
1282 }
12511283
1252 Debug::LogEntry('audit', sprintf('Replaced media in %d layouts', $count), 'module', 'ReplaceMediaInAllLayouts');1284 Debug::LogEntry('audit', sprintf('Replaced media in %d layouts', $count), 'module', 'ReplaceMediaInAllLayouts');
1253 }1285 }
12541286
=== modified file 'server/lib/oauth.inc.php'
--- server/lib/oauth.inc.php 2014-01-18 09:47:41 +0000
+++ server/lib/oauth.inc.php 2014-07-15 15:37:37 +0000
@@ -33,6 +33,6 @@
33require_once('3rdparty/oauth-php/library/OAuthServer.php');33require_once('3rdparty/oauth-php/library/OAuthServer.php');
34require_once('3rdparty/oauth-php/library/OAuthStore.php');34require_once('3rdparty/oauth-php/library/OAuthStore.php');
3535
36OAuthStore::instance('MySQL', array('server' => $dbhost, 'username' => $dbuser, 'password' => $dbpass, 'database' => $dbname));36OAuthStore::instance('PDO', array('conn' => PDOConnect::init()));
3737
38?>38?>
3939
=== modified file 'server/lib/pages/admin.class.php'
--- server/lib/pages/admin.class.php 2014-02-15 10:32:44 +0000
+++ server/lib/pages/admin.class.php 2014-07-15 15:37:37 +0000
@@ -51,7 +51,7 @@
5151
52 // Check the token52 // Check the token
53 if (!Kit::CheckToken())53 if (!Kit::CheckToken())
54 trigger_error('Token does not match', E_USER_ERROR);54 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
5555
56 $refer = Kit::GetParam('refer', _POST, _STRING);56 $refer = Kit::GetParam('refer', _POST, _STRING);
57 $usertype = Kit::GetParam('usertype', _SESSION, _INT);57 $usertype = Kit::GetParam('usertype', _SESSION, _INT);
5858
=== modified file 'server/lib/pages/campaign.class.php'
--- server/lib/pages/campaign.class.php 2014-01-18 09:47:41 +0000
+++ server/lib/pages/campaign.class.php 2014-07-15 15:37:37 +0000
@@ -154,7 +154,7 @@
154 {154 {
155 // Check the token155 // Check the token
156 if (!Kit::CheckToken())156 if (!Kit::CheckToken())
157 trigger_error('Token does not match', E_USER_ERROR);157 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
158 158
159 $db =& $this->db;159 $db =& $this->db;
160 $response = new ResponseManager();160 $response = new ResponseManager();
@@ -224,7 +224,7 @@
224 {224 {
225 // Check the token225 // Check the token
226 if (!Kit::CheckToken())226 if (!Kit::CheckToken())
227 trigger_error('Token does not match', E_USER_ERROR);227 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
228 228
229 $db =& $this->db;229 $db =& $this->db;
230 $response = new ResponseManager();230 $response = new ResponseManager();
@@ -293,7 +293,7 @@
293 {293 {
294 // Check the token294 // Check the token
295 if (!Kit::CheckToken())295 if (!Kit::CheckToken())
296 trigger_error('Token does not match', E_USER_ERROR);296 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
297 297
298 $db =& $this->db;298 $db =& $this->db;
299 $response = new ResponseManager();299 $response = new ResponseManager();
@@ -395,7 +395,7 @@
395 {395 {
396 // Check the token396 // Check the token
397 if (!Kit::CheckToken())397 if (!Kit::CheckToken())
398 trigger_error('Token does not match', E_USER_ERROR);398 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
399 399
400 $db =& $this->db;400 $db =& $this->db;
401 $user =& $this->user;401 $user =& $this->user;
@@ -484,7 +484,7 @@
484 {484 {
485 // Check the token485 // Check the token
486 if (!Kit::CheckToken())486 if (!Kit::CheckToken())
487 trigger_error('Token does not match', E_USER_ERROR);487 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
488 488
489 $db =& $this->db;489 $db =& $this->db;
490 $response = new ResponseManager();490 $response = new ResponseManager();
491491
=== modified file 'server/lib/pages/dataset.class.php'
--- server/lib/pages/dataset.class.php 2014-01-18 09:47:41 +0000
+++ server/lib/pages/dataset.class.php 2014-07-15 15:37:37 +0000
@@ -167,7 +167,7 @@
167 {167 {
168 // Check the token168 // Check the token
169 if (!Kit::CheckToken())169 if (!Kit::CheckToken())
170 trigger_error('Token does not match', E_USER_ERROR);170 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
171 171
172 $db =& $this->db;172 $db =& $this->db;
173 $user =& $this->user;173 $user =& $this->user;
@@ -227,7 +227,7 @@
227 {227 {
228 // Check the token228 // Check the token
229 if (!Kit::CheckToken())229 if (!Kit::CheckToken())
230 trigger_error('Token does not match', E_USER_ERROR);230 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
231 231
232 $db =& $this->db;232 $db =& $this->db;
233 $user =& $this->user;233 $user =& $this->user;
@@ -283,7 +283,7 @@
283 {283 {
284 // Check the token284 // Check the token
285 if (!Kit::CheckToken())285 if (!Kit::CheckToken())
286 trigger_error('Token does not match', E_USER_ERROR);286 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
287 287
288 $db =& $this->db;288 $db =& $this->db;
289 $user =& $this->user;289 $user =& $this->user;
@@ -326,29 +326,24 @@
326 $SQL .= sprintf(" WHERE DataSetID = %d ", $dataSetId);326 $SQL .= sprintf(" WHERE DataSetID = %d ", $dataSetId);
327 $SQL .= "ORDER BY ColumnOrder ";327 $SQL .= "ORDER BY ColumnOrder ";
328328
329 Kit::ClassLoader('datasetcolumn');
330 $dataSetColumnObject = new DataSetColumn($db);
331
329 // Load results into an array332 // Load results into an array
330 $dataSetColumns = $db->GetArray($SQL);333 if (!$dataSetColumns = $dataSetColumnObject->GetColumns($dataSetId))
331334 trigger_error($dataSetColumnObject->GetErrorMessage(), E_USER_ERROR);
332 if (!is_array($dataSetColumns))
333 {
334 trigger_error($db->error());
335 trigger_error(__('Error getting list of dataSetColumns'), E_USER_ERROR);
336 }
337335
338 $rows = array();336 $rows = array();
339337
340 foreach ($dataSetColumns as $row) {338 foreach ($dataSetColumns as $row) {
341339
342 $row['heading'] = Kit::ValidateParam($row['Heading'], _STRING);340 $row['datatype'] = __($row['datatype']);
343 $row['listcontent'] = Kit::ValidateParam($row['ListContent'], _STRING);341 $row['datasetcolumntype'] = __($row['datasetcolumntype']);
344 $row['columnorder'] = Kit::ValidateParam($row['ColumnOrder'], _INT);
345 $row['datatype'] = __(Kit::ValidateParam($row['DataType'], _STRING));
346 $row['datasetcolumntype'] = __(Kit::ValidateParam($row['DataSetColumnType'], _STRING));
347342
348 // Edit 343 // Edit
349 $row['buttons'][] = array(344 $row['buttons'][] = array(
350 'id' => 'dataset_button_edit',345 'id' => 'dataset_button_edit',
351 'url' => 'index.php?p=dataset&q=EditDataSetColumnForm&datasetid=' . $dataSetId . '&datasetcolumnid=' . $row['DataSetColumnID'] . '&dataset=' . $dataSet,346 'url' => 'index.php?p=dataset&q=EditDataSetColumnForm&datasetid=' . $dataSetId . '&datasetcolumnid=' . $row['datasetcolumnid'] . '&dataset=' . $dataSet,
352 'text' => __('Edit')347 'text' => __('Edit')
353 );348 );
354349
@@ -356,7 +351,7 @@
356 // Delete351 // Delete
357 $row['buttons'][] = array(352 $row['buttons'][] = array(
358 'id' => 'dataset_button_delete',353 'id' => 'dataset_button_delete',
359 'url' => 'index.php?p=dataset&q=DeleteDataSetColumnForm&datasetid=' . $dataSetId . '&datasetcolumnid=' . $row['DataSetColumnID'] . '&dataset=' . $dataSet,354 'url' => 'index.php?p=dataset&q=DeleteDataSetColumnForm&datasetid=' . $dataSetId . '&datasetcolumnid=' . $row['datasetcolumnid'] . '&dataset=' . $dataSet,
360 'text' => __('Delete')355 'text' => __('Delete')
361 );356 );
362 }357 }
@@ -410,7 +405,7 @@
410 {405 {
411 // Check the token406 // Check the token
412 if (!Kit::CheckToken())407 if (!Kit::CheckToken())
413 trigger_error('Token does not match', E_USER_ERROR);408 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
414 409
415 $db =& $this->db;410 $db =& $this->db;
416 $user =& $this->user;411 $user =& $this->user;
@@ -490,7 +485,7 @@
490 {485 {
491 // Check the token486 // Check the token
492 if (!Kit::CheckToken())487 if (!Kit::CheckToken())
493 trigger_error('Token does not match', E_USER_ERROR);488 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
494 489
495 $db =& $this->db;490 $db =& $this->db;
496 $user =& $this->user;491 $user =& $this->user;
@@ -555,7 +550,7 @@
555 {550 {
556 // Check the token551 // Check the token
557 if (!Kit::CheckToken())552 if (!Kit::CheckToken())
558 trigger_error('Token does not match', E_USER_ERROR);553 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
559 554
560 $db =& $this->db;555 $db =& $this->db;
561 $user =& $this->user;556 $user =& $this->user;
@@ -863,40 +858,29 @@
863 Theme::Set('form_meta', '<input type="hidden" name="datasetid" value="' . $dataSetId . '" />');858 Theme::Set('form_meta', '<input type="hidden" name="datasetid" value="' . $dataSetId . '" />');
864859
865 // List of all Groups with a view/edit/delete checkbox860 // List of all Groups with a view/edit/delete checkbox
866 $SQL = '';861 Kit::ClassLoader('datasetgroupsecurity');
867 $SQL .= 'SELECT `group`.GroupID, `group`.`Group`, View, Edit, Del, `group`.IsUserSpecific ';862 $security = new DataSetGroupSecurity($this->db);
868 $SQL .= ' FROM `group` ';863
869 $SQL .= ' LEFT OUTER JOIN lkdatasetgroup ';864 if (!$results = $security->ListSecurity($dataSetId, $user->getGroupFromId($user->userid, true))) {
870 $SQL .= ' ON lkdatasetgroup.GroupID = group.GroupID ';
871 $SQL .= ' AND lkdatasetgroup.DataSetID = %d ';
872 $SQL .= ' WHERE `group`.GroupID <> %d ';
873 $SQL .= 'ORDER BY `group`.IsEveryone DESC, `group`.IsUserSpecific, `group`.`Group` ';
874
875 $SQL = sprintf($SQL, $dataSetId, $user->getGroupFromId($user->userid, true));
876
877 if (!$results = $db->query($SQL))
878 {
879 trigger_error($db->error());
880 trigger_error(__('Unable to get permissions for this dataset'), E_USER_ERROR);865 trigger_error(__('Unable to get permissions for this dataset'), E_USER_ERROR);
881 }866 }
882867
883 $checkboxes = array();868 $checkboxes = array();
884869
885 while ($row = $db->get_assoc_row($results))870 foreach ($results as $row) {
886 {871 $groupId = $row['groupid'];
887 $groupId = $row['GroupID'];872 $rowClass = ($row['isuserspecific'] == 0) ? 'strong_text' : '';
888 $rowClass = ($row['IsUserSpecific'] == 0) ? 'strong_text' : '';
889873
890 $checkbox = array(874 $checkbox = array(
891 'id' => $groupId,875 'id' => $groupId,
892 'name' => Kit::ValidateParam($row['Group'], _STRING),876 'name' => Kit::ValidateParam($row['group'], _STRING),
893 'class' => $rowClass,877 'class' => $rowClass,
894 'value_view' => $groupId . '_view',878 'value_view' => $groupId . '_view',
895 'value_view_checked' => (($row['View'] == 1) ? 'checked' : ''),879 'value_view_checked' => (($row['view'] == 1) ? 'checked' : ''),
896 'value_edit' => $groupId . '_edit',880 'value_edit' => $groupId . '_edit',
897 'value_edit_checked' => (($row['Edit'] == 1) ? 'checked' : ''),881 'value_edit_checked' => (($row['edit'] == 1) ? 'checked' : ''),
898 'value_del' => $groupId . '_del',882 'value_del' => $groupId . '_del',
899 'value_del_checked' => (($row['Del'] == 1) ? 'checked' : ''),883 'value_del_checked' => (($row['del'] == 1) ? 'checked' : ''),
900 );884 );
901885
902 $checkboxes[] = $checkbox;886 $checkboxes[] = $checkbox;
@@ -917,7 +901,7 @@
917 {901 {
918 // Check the token902 // Check the token
919 if (!Kit::CheckToken())903 if (!Kit::CheckToken())
920 trigger_error('Token does not match', E_USER_ERROR);904 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
921 905
922 $db =& $this->db;906 $db =& $this->db;
923 $user =& $this->user;907 $user =& $this->user;
@@ -1087,14 +1071,14 @@
1087 if ($tmpName == '')1071 if ($tmpName == '')
1088 trigger_error(__('Please ensure you have picked a file and it has finished uploading'), E_USER_ERROR);1072 trigger_error(__('Please ensure you have picked a file and it has finished uploading'), E_USER_ERROR);
10891073
1090 // File name and extension (orignial name)1074 // File name and extension (original name)
1091 $fileName = Kit::GetParam('txtFileName', _POST, _STRING);1075 $fileName = Kit::GetParam('txtFileName', _POST, _STRING);
1092 $fileName = basename($fileName);1076 $fileName = basename($fileName);
1093 $ext = strtolower(substr(strrchr($fileName, "."), 1));1077 $ext = strtolower(substr(strrchr($fileName, "."), 1));
10941078
1095 // Check it is a CSV file1079 // Check it is a CSV file
1096 if ($ext != 'csv')1080 if ($ext != 'csv')
1097 trigger_error(__('Files with a CSV extention only.'));1081 trigger_error(__('Files with a CSV extension only.'), E_USER_ERROR);
10981082
1099 // File upload directory.. get this from the settings object1083 // File upload directory.. get this from the settings object
1100 $csvFileLocation = Config::GetSetting('LIBRARY_LOCATION') . 'temp/' . $tmpName;1084 $csvFileLocation = Config::GetSetting('LIBRARY_LOCATION') . 'temp/' . $tmpName;
@@ -1122,8 +1106,10 @@
11221106
1123 $dataSetColumnId = Kit::ValidateParam($row['DataSetColumnID'], _INT);1107 $dataSetColumnId = Kit::ValidateParam($row['DataSetColumnID'], _INT);
1124 $spreadSheetColumn = Kit::GetParam('csvImport_' . $dataSetColumnId, _POST, _INT);1108 $spreadSheetColumn = Kit::GetParam('csvImport_' . $dataSetColumnId, _POST, _INT);
1125 1109
1126 $spreadSheetMapping[($spreadSheetColumn - 1)] = $dataSetColumnId;1110 // If it has been left blank, then skip
1111 if ($spreadSheetColumn != 0)
1112 $spreadSheetMapping[($spreadSheetColumn - 1)] = $dataSetColumnId;
1127 }1113 }
11281114
1129 $dataSetObject = new DataSetData($db);1115 $dataSetObject = new DataSetData($db);
11301116
=== modified file 'server/lib/pages/display.class.php'
--- server/lib/pages/display.class.php 2014-03-09 14:41:56 +0000
+++ server/lib/pages/display.class.php 2014-07-15 15:37:37 +0000
@@ -145,11 +145,22 @@
145 // Configure the theme145 // Configure the theme
146 $id = uniqid();146 $id = uniqid();
147 Theme::Set('id', $id);147 Theme::Set('id', $id);
148 Theme::Set('campaign_form_add_url', 'index.php?p=campaign&q=AddForm');
149 Theme::Set('form_meta', '<input type="hidden" name="p" value="display"><input type="hidden" name="q" value="DisplayGrid">');148 Theme::Set('form_meta', '<input type="hidden" name="p" value="display"><input type="hidden" name="q" value="DisplayGrid">');
150 Theme::Set('filter_id', 'XiboFilterPinned' . uniqid('filter'));149 Theme::Set('filter_id', 'XiboFilterPinned' . uniqid('filter'));
151 Theme::Set('pager', ResponseManager::Pager($id));150 Theme::Set('pager', ResponseManager::Pager($id));
152151
152 // Default options
153 if (Kit::IsFilterPinned('display', 'DisplayFilter')) {
154 Theme::Set('filter_pinned', 'checked');
155 Theme::Set('filter_displaygroup', Session::Get('display', 'filter_displaygroup'));
156 Theme::Set('filter_display', Session::Get('display', 'filter_display'));
157 }
158
159 $displayGroups = $this->user->DisplayGroupList(0);
160 array_unshift($displayGroups, array('displaygroupid' => '0', 'displaygroup' => 'All'));
161
162 Theme::Set('displaygroup_field_list', $displayGroups);
163
153 // Render the Theme and output164 // Render the Theme and output
154 Theme::Render('display_page');165 Theme::Render('display_page');
155 }166 }
@@ -162,7 +173,7 @@
162 {173 {
163 // Check the token174 // Check the token
164 if (!Kit::CheckToken())175 if (!Kit::CheckToken())
165 trigger_error('Token does not match', E_USER_ERROR);176 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
166 177
167 $db =& $this->db;178 $db =& $this->db;
168 $response = new ResponseManager();179 $response = new ResponseManager();
@@ -280,7 +291,18 @@
280 $user =& $this->user;291 $user =& $this->user;
281 $response = new ResponseManager();292 $response = new ResponseManager();
282293
283 $displays = $user->DisplayList();294 // Filter by Name
295 $filter_display = Kit::GetParam('filter_display', _POST, _STRING);
296 setSession('display', 'filter_display', $filter_display);
297
298 // Display Group
299 $filter_displaygroupid = Kit::GetParam('filter_displaygroup', _POST, _INT);
300 setSession('display', 'filter_displaygroup', $filter_displaygroupid);
301
302 // Pinned option?
303 setSession('display', 'DisplayFilter', Kit::GetParam('XiboFilterPinned', _REQUEST, _CHECKBOX, 'off'));
304
305 $displays = $user->DisplayList(array('displayid'), array('displaygroupid' => $filter_displaygroupid, 'display' => $filter_display));
284306
285 if (!is_array($displays))307 if (!is_array($displays))
286 {308 {
@@ -358,6 +380,13 @@
358 'url' => 'index.php?p=displaygroup&q=FileAssociations&DisplayGroupID=' . $row['displaygroupid'],380 'url' => 'index.php?p=displaygroup&q=FileAssociations&DisplayGroupID=' . $row['displaygroupid'],
359 'text' => __('Assign Files')381 'text' => __('Assign Files')
360 );382 );
383
384 // Logs
385 $row['buttons'][] = array(
386 'id' => 'displaygroup_button_logs',
387 'url' => 'index.php?p=log&q=LastHundredForDisplay&displayid=' . $row['displayid'],
388 'text' => __('Last 100 Log Messages')
389 );
361 }390 }
362391
363 if ($row['del'] == 1) {392 if ($row['del'] == 1) {
@@ -486,7 +515,7 @@
486 {515 {
487 // Check the token516 // Check the token
488 if (!Kit::CheckToken())517 if (!Kit::CheckToken())
489 trigger_error('Token does not match', E_USER_ERROR);518 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
490 519
491 $db =& $this->db;520 $db =& $this->db;
492 $response = new ResponseManager();521 $response = new ResponseManager();
@@ -550,7 +579,7 @@
550 {579 {
551 // Check the token580 // Check the token
552 if (!Kit::CheckToken())581 if (!Kit::CheckToken())
553 trigger_error('Token does not match', E_USER_ERROR);582 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
554 583
555 $db =& $this->db;584 $db =& $this->db;
556 $response = new ResponseManager();585 $response = new ResponseManager();
@@ -834,7 +863,7 @@
834 {863 {
835 // Check the token864 // Check the token
836 if (!Kit::CheckToken())865 if (!Kit::CheckToken())
837 trigger_error('Token does not match', E_USER_ERROR);866 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
838 867
839 $db =& $this->db;868 $db =& $this->db;
840 $response = new ResponseManager();869 $response = new ResponseManager();
841870
=== modified file 'server/lib/pages/displaygroup.class.php'
--- server/lib/pages/displaygroup.class.php 2014-03-29 14:15:07 +0000
+++ server/lib/pages/displaygroup.class.php 2014-07-15 15:37:37 +0000
@@ -264,37 +264,40 @@
264 $SQL .= sprintf("WHERE lkdisplaydg.DisplayGroupID = %d", $displayGroupID);264 $SQL .= sprintf("WHERE lkdisplaydg.DisplayGroupID = %d", $displayGroupID);
265 $SQL .= " ORDER BY display.Display ";265 $SQL .= " ORDER BY display.Display ";
266 266
267 $displaysAssigned = $db->GetArray($SQL);267 $displays_assigned = $this->user->DisplayList(array('display'), array('displaygroupid' => $displayGroupID), 'edit');
268268
269 if (!is_array($displaysAssigned))269 if (!is_array($displays_assigned))
270 {
271 trigger_error($db->error());
272 trigger_error(__('Error getting Displays'), E_USER_ERROR);270 trigger_error(__('Error getting Displays'), E_USER_ERROR);
271
272 // Build a new available array, based on the view permissions.
273 $displaysAssigned = array();
274
275 foreach ($displays_assigned as $display) {
276
277 // Go through each and set the appropriate fields
278 $displaysAssigned[] = array(
279 'Display' => $display['display'],
280 'list_id' => 'DisplayID_' . $display['displayid']
281 );
273 }282 }
274283
275 Theme::Set('displays_assigned', $displaysAssigned);284 Theme::Set('displays_assigned', $displaysAssigned);
276 285
277 // Displays not in group286 // All Displays
278 $SQL = "";287 $displays = $this->user->DisplayList(array('display'), array('exclude_displaygroupid' => $displayGroupID), 'edit');
279 $SQL .= "SELECT display.DisplayID, ";
280 $SQL .= " display.Display, ";
281 $SQL .= " CONCAT('DisplayID_', display.DisplayID) AS list_id ";
282 $SQL .= "FROM display ";
283 $SQL .= " WHERE display.DisplayID NOT IN ";
284 $SQL .= " (SELECT display.DisplayID ";
285 $SQL .= " FROM display ";
286 $SQL .= " INNER JOIN lkdisplaydg ";
287 $SQL .= " ON lkdisplaydg.DisplayID = display.DisplayID ";
288 $SQL .= sprintf(" WHERE lkdisplaydg.DisplayGroupID = %d", $displayGroupID);
289 $SQL .= " )";
290 $SQL .= " ORDER BY display.Display ";
291
292 $displaysAvailable = $db->GetArray($SQL);
293 288
294 if (!is_array($displaysAvailable))289 if (!is_array($displays))
295 {
296 trigger_error($db->error());
297 trigger_error(__('Error getting Displays'), E_USER_ERROR);290 trigger_error(__('Error getting Displays'), E_USER_ERROR);
291
292 // Build a new available array, based on the view permissions.
293 $displaysAvailable = array();
294
295 foreach ($displays as $display) {
296 // Go through each and set the appropriate fields
297 $displaysAvailable[] = array(
298 'Display' => $display['display'],
299 'list_id' => 'DisplayID_' . $display['displayid']
300 );
298 }301 }
299302
300 Theme::Set('displays_available', $displaysAvailable);303 Theme::Set('displays_available', $displaysAvailable);
@@ -317,7 +320,7 @@
317 {320 {
318 // Check the token321 // Check the token
319 if (!Kit::CheckToken())322 if (!Kit::CheckToken())
320 trigger_error('Token does not match', E_USER_ERROR);323 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
321 324
322 $db =& $this->db;325 $db =& $this->db;
323 $response = new ResponseManager();326 $response = new ResponseManager();
@@ -327,10 +330,16 @@
327 330
328 $displayGroupObject = new DisplayGroup($db);331 $displayGroupObject = new DisplayGroup($db);
329 332
330 if (!$displayGroupObject->Add($displayGroup, 0, $description))333 if (!$displayGroupId = $displayGroupObject->Add($displayGroup, 0, $description))
331 {334 {
332 trigger_error($displayGroupObject->GetErrorMessage(), E_USER_ERROR);335 trigger_error($displayGroupObject->GetErrorMessage(), E_USER_ERROR);
333 }336 }
337
338 // Add full permissions for this user to this group
339 $security = new DisplayGroupSecurity($db);
340
341 if (!$security->Link($displayGroupId, $this->user->getGroupFromID($this->user->userid, true), 1, 1, 1))
342 trigger_error(__('Unable to set permissions'));
334 343
335 $response->SetFormSubmitResponse(__('Display Group Added'), false);344 $response->SetFormSubmitResponse(__('Display Group Added'), false);
336 $response->Respond();345 $response->Respond();
@@ -344,7 +353,7 @@
344 {353 {
345 // Check the token354 // Check the token
346 if (!Kit::CheckToken())355 if (!Kit::CheckToken())
347 trigger_error('Token does not match', E_USER_ERROR);356 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
348 357
349 $db =& $this->db;358 $db =& $this->db;
350 $response = new ResponseManager();359 $response = new ResponseManager();
@@ -378,7 +387,7 @@
378 {387 {
379 // Check the token388 // Check the token
380 if (!Kit::CheckToken())389 if (!Kit::CheckToken())
381 trigger_error('Token does not match', E_USER_ERROR);390 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
382 391
383 $db =& $this->db; 392 $db =& $this->db;
384 $response = new ResponseManager();393 $response = new ResponseManager();
@@ -550,7 +559,7 @@
550 {559 {
551 // Check the token560 // Check the token
552 if (!Kit::CheckToken())561 if (!Kit::CheckToken())
553 trigger_error('Token does not match', E_USER_ERROR);562 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
554 563
555 $db =& $this->db;564 $db =& $this->db;
556 $user =& $this->user;565 $user =& $this->user;
557566
=== modified file 'server/lib/pages/fault.class.php'
--- server/lib/pages/fault.class.php 2014-01-18 09:47:41 +0000
+++ server/lib/pages/fault.class.php 2014-07-15 15:37:37 +0000
@@ -64,12 +64,6 @@
64 64
65 echo "\n";65 echo "\n";
66 echo "--------------------------------------\n";66 echo "--------------------------------------\n";
67 echo 'PHP INFO' . "\n";
68 echo "--------------------------------------\n";
69 $this->phpinfo_array();
70
71 echo "\n";
72 echo "--------------------------------------\n";
73 echo 'LOG Dump' . "\n";67 echo 'LOG Dump' . "\n";
74 echo "--------------------------------------\n";68 echo "--------------------------------------\n";
75 69
@@ -83,6 +77,8 @@
83 trigger_error($db->error());77 trigger_error($db->error());
84 trigger_error("Can not query the log", E_USER_ERROR);78 trigger_error("Can not query the log", E_USER_ERROR);
85 }79 }
80
81 echo 'Date,Page,Function,Message' . PHP_EOL;
86 82
87 while ($row = $db->get_row($results)) 83 while ($row = $db->get_row($results))
88 {84 {
@@ -91,14 +87,7 @@
91 $function = Kit::ValidateParam($row[2], _STRING);87 $function = Kit::ValidateParam($row[2], _STRING);
92 $message = Kit::ValidateParam($row[3], _HTMLSTRING);88 $message = Kit::ValidateParam($row[3], _HTMLSTRING);
93 89
94 $output = <<<END90 echo '"' . $logdate . '","' . $page . '","' . $function . '","' . $message . '"' . PHP_EOL;
95Date: $logdate
96Page: $page
97Function: $function
98Message: $message
99\n
100END;
101 echo $output;
102 }91 }
103 92
104 echo "\n";93 echo "\n";
@@ -213,50 +202,5 @@
213202
214 exit;203 exit;
215 }204 }
216
217 /**
218 * Outputs PHP info as an array rather than HTML
219 * Taken from: http://uk2.php.net/phpinfo
220 * @return
221 * @param $return Object[optional]
222 */
223 function phpinfo_array($return=false)
224 {
225 ob_start();
226 phpinfo(-1);
227
228 $pi = preg_replace(
229 array('#^.*<body>(.*)</body>.*$#ms', '#<h2>PHP License</h2>.*$#ms',
230 '#<h1>Configuration</h1>#', "#\r?\n#", "#</(h1|h2|h3|tr)>#", '# +<#',
231 "#[ \t]+#", '#&nbsp;#', '# +#', '# class=".*?"#', '%&#039;%',
232 '#<tr>(?:.*?)" src="(?:.*?)=(.*?)" alt="PHP Logo" /></a>'
233 .'<h1>PHP Version (.*?)</h1>(?:\n+?)</td></tr>#',
234 '#<h1><a href="(?:.*?)\?=(.*?)">PHP Credits</a></h1>#',
235 '#<tr>(?:.*?)" src="(?:.*?)=(.*?)"(?:.*?)Zend Engine (.*?),(?:.*?)</tr>#',
236 "# +#", '#<tr>#', '#</tr>#'),
237 array('$1', '', '', '', '</$1>' . "\n", '<', ' ', ' ', ' ', '', ' ',
238 '<h2>PHP Configuration</h2>'."\n".'<tr><td>PHP Version</td><td>$2</td></tr>'.
239 "\n".'<tr><td>PHP Egg</td><td>$1</td></tr>',
240 '<tr><td>PHP Credits Egg</td><td>$1</td></tr>',
241 '<tr><td>Zend Engine</td><td>$2</td></tr>' . "\n" .
242 '<tr><td>Zend Egg</td><td>$1</td></tr>', ' ', '%S%', '%E%'),
243 ob_get_clean());
244
245 $sections = explode('<h2>', strip_tags($pi, '<h2><th><td>'));
246 unset($sections[0]);
247
248 $pi = array();
249 foreach($sections as $section)
250 {
251 $n = substr($section, 0, strpos($section, '</h2>'));
252 preg_match_all(
253 '#%S%(?:<td>(.*?)</td>)?(?:<td>(.*?)</td>)?(?:<td>(.*?)</td>)?%E%#',
254 $section, $askapache, PREG_SET_ORDER);
255 foreach($askapache as $m)
256 $pi[$n][$m[1]]=(!isset($m[3])||$m[2]==$m[3])?$m[2]:array_slice($m,2);
257 }
258
259 return ($return === false) ? print_r($pi) : $pi;
260 }
261}205}
262?>206?>
263207
=== modified file 'server/lib/pages/group.class.php'
--- server/lib/pages/group.class.php 2014-01-18 09:47:41 +0000
+++ server/lib/pages/group.class.php 2014-07-15 15:37:37 +0000
@@ -355,7 +355,7 @@
355 {355 {
356 // Check the token356 // Check the token
357 if (!Kit::CheckToken())357 if (!Kit::CheckToken())
358 trigger_error('Token does not match', E_USER_ERROR);358 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
359 359
360 $db =& $this->db;360 $db =& $this->db;
361 $response = new ResponseManager();361 $response = new ResponseManager();
@@ -379,7 +379,7 @@
379 {379 {
380 // Check the token380 // Check the token
381 if (!Kit::CheckToken())381 if (!Kit::CheckToken())
382 trigger_error('Token does not match', E_USER_ERROR);382 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
383 383
384 $db =& $this->db;384 $db =& $this->db;
385 385
@@ -404,7 +404,7 @@
404 {404 {
405 // Check the token405 // Check the token
406 if (!Kit::CheckToken())406 if (!Kit::CheckToken())
407 trigger_error('Token does not match', E_USER_ERROR);407 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
408 408
409 $db =& $this->db; 409 $db =& $this->db;
410 $groupid = Kit::GetParam('groupid', _POST, _INT);410 $groupid = Kit::GetParam('groupid', _POST, _INT);
@@ -587,7 +587,7 @@
587 {587 {
588 // Check the token588 // Check the token
589 if (!Kit::CheckToken())589 if (!Kit::CheckToken())
590 trigger_error('Token does not match', E_USER_ERROR);590 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
591 591
592 $db =& $this->db;592 $db =& $this->db;
593 $groupid = Kit::GetParam('groupid', _POST, _INT);593 $groupid = Kit::GetParam('groupid', _POST, _INT);
594594
=== modified file 'server/lib/pages/help.class.php'
--- server/lib/pages/help.class.php 2014-01-19 11:52:23 +0000
+++ server/lib/pages/help.class.php 2014-07-15 15:37:37 +0000
@@ -264,7 +264,7 @@
264 {264 {
265 // Check the token265 // Check the token
266 if (!Kit::CheckToken())266 if (!Kit::CheckToken())
267 trigger_error('Token does not match', E_USER_ERROR);267 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
268 268
269 $db =& $this->db;269 $db =& $this->db;
270 $response = new ResponseManager();270 $response = new ResponseManager();
@@ -291,7 +291,7 @@
291 {291 {
292 // Check the token292 // Check the token
293 if (!Kit::CheckToken())293 if (!Kit::CheckToken())
294 trigger_error('Token does not match', E_USER_ERROR);294 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
295 295
296 $db =& $this->db;296 $db =& $this->db;
297 $response = new ResponseManager();297 $response = new ResponseManager();
@@ -316,7 +316,7 @@
316 {316 {
317 // Check the token317 // Check the token
318 if (!Kit::CheckToken())318 if (!Kit::CheckToken())
319 trigger_error('Token does not match', E_USER_ERROR);319 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
320 320
321 $db =& $this->db;321 $db =& $this->db;
322 $response = new ResponseManager();322 $response = new ResponseManager();
323323
=== modified file 'server/lib/pages/index.class.php'
--- server/lib/pages/index.class.php 2014-02-15 11:25:09 +0000
+++ server/lib/pages/index.class.php 2014-07-15 15:37:37 +0000
@@ -50,7 +50,7 @@
50 // Split on &amp; and rejoin with &50 // Split on &amp; and rejoin with &
51 $params = explode('&amp;', $referingpage, 3);51 $params = explode('&amp;', $referingpage, 3);
52 unset($params['message']);52 unset($params['message']);
53 $referingpage = implode('&', $params) . '&message=Token Error';53 $referingpage = implode('&', $params) . '&message=' . __('Sorry the form has expired. Please refresh.');
5454
55 header('Location:index.php?' . $referingpage);55 header('Location:index.php?' . $referingpage);
56 exit;56 exit;
5757
=== modified file 'server/lib/pages/layout.class.php'
--- server/lib/pages/layout.class.php 2014-03-23 14:43:11 +0000
+++ server/lib/pages/layout.class.php 2014-07-15 15:37:37 +0000
@@ -148,6 +148,9 @@
148 // Set up the theme variables for the Layout Jump List148 // Set up the theme variables for the Layout Jump List
149 $this->LayoutJumpListFilter();149 $this->LayoutJumpListFilter();
150150
151 // Set up any JavaScript translations
152 Theme::Set('translations', json_encode(array('save_position_button' => __('Save Position'))));
153
151 // Call the render the template154 // Call the render the template
152 Theme::Render('layout_designer');155 Theme::Render('layout_designer');
153156
@@ -168,7 +171,7 @@
168 {171 {
169 // Check the token172 // Check the token
170 if (!Kit::CheckToken())173 if (!Kit::CheckToken())
171 trigger_error('Token does not match', E_USER_ERROR);174 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
172 175
173 $db =& $this->db;176 $db =& $this->db;
174 $response = new ResponseManager();177 $response = new ResponseManager();
@@ -199,7 +202,7 @@
199 {202 {
200 // Check the token203 // Check the token
201 if (!Kit::CheckToken())204 if (!Kit::CheckToken())
202 trigger_error('Token does not match', E_USER_ERROR);205 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
203 206
204 $db =& $this->db;207 $db =& $this->db;
205 $response = new ResponseManager();208 $response = new ResponseManager();
@@ -277,7 +280,7 @@
277 {280 {
278 // Check the token281 // Check the token
279 if (!Kit::CheckToken())282 if (!Kit::CheckToken())
280 trigger_error('Token does not match', E_USER_ERROR);283 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
281 284
282 $db =& $this->db;285 $db =& $this->db;
283 $response = new ResponseManager();286 $response = new ResponseManager();
@@ -303,7 +306,7 @@
303 {306 {
304 // Check the token307 // Check the token
305 if (!Kit::CheckToken())308 if (!Kit::CheckToken())
306 trigger_error('Token does not match', E_USER_ERROR);309 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
307 310
308 $db =& $this->db;311 $db =& $this->db;
309 $response = new ResponseManager();312 $response = new ResponseManager();
@@ -609,7 +612,7 @@
609 {612 {
610 // Check the token613 // Check the token
611 if (!Kit::CheckToken())614 if (!Kit::CheckToken())
612 trigger_error('Token does not match', E_USER_ERROR);615 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
613 616
614 $db =& $this->db;617 $db =& $this->db;
615 $user =& $this->user;618 $user =& $this->user;
@@ -810,7 +813,7 @@
810 {813 {
811 // Check the token814 // Check the token
812 if (!Kit::CheckToken())815 if (!Kit::CheckToken())
813 trigger_error('Token does not match', E_USER_ERROR);816 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
814 817
815 $db =& $this->db;818 $db =& $this->db;
816 $user =& $this->user;819 $user =& $this->user;
817820
=== modified file 'server/lib/pages/log.class.php'
--- server/lib/pages/log.class.php 2014-01-18 09:47:41 +0000
+++ server/lib/pages/log.class.php 2014-07-15 15:37:37 +0000
@@ -164,6 +164,50 @@
164 $response->Respond();164 $response->Respond();
165 }165 }
166166
167 function LastHundredForDisplay() {
168 $response = new ResponseManager();
169 $displayId = Kit::GetParam('displayid', _GET, _INT);
170
171 try {
172 $dbh = PDOConnect::init();
173
174 $sth = $dbh->prepare('SELECT logid, logdate, page, function, message FROM log WHERE displayid = :displayid ORDER BY logid DESC LIMIT 100');
175 $sth->execute(array(
176 'displayid' => $displayId
177 ));
178
179 $log = $sth->fetchAll();
180
181 if (count($log) <= 0)
182 throw new Exception(__('No log messages for this display'));
183
184 $rows = array();
185
186 foreach ($log as $row) {
187
188 $row['logid'] = Kit::ValidateParam($row['logid'], _INT);
189 $row['logdate'] = Kit::ValidateParam($row['logdate'], _STRING);
190 $row['page'] = Kit::ValidateParam($row['page'], _STRING);
191 $row['function'] = Kit::ValidateParam($row['function'], _STRING);
192 $row['message'] = nl2br(htmlspecialchars($row['message']));
193
194 $rows[] = $row;
195 }
196
197 Theme::Set('table_rows', $rows);
198
199 $output = Theme::RenderReturn('log_form_display_last100');
200
201 $response->initialSortOrder = 2;
202 $response->pageSize = 10;
203 $response->SetGridResponse($output);
204 $response->Respond();
205 }
206 catch (Exception $e) {
207 trigger_error($e->getMessage(), E_USER_ERROR);
208 }
209 }
210
167 public function TruncateForm() {211 public function TruncateForm() {
168 $db =& $this->db;212 $db =& $this->db;
169 $user =& $this->user;213 $user =& $this->user;
@@ -192,7 +236,7 @@
192 {236 {
193 // Check the token237 // Check the token
194 if (!Kit::CheckToken())238 if (!Kit::CheckToken())
195 trigger_error('Token does not match', E_USER_ERROR);239 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
196 240
197 $db =& $this->db;241 $db =& $this->db;
198242
199243
=== modified file 'server/lib/pages/module.class.php'
--- server/lib/pages/module.class.php 2014-03-02 15:53:38 +0000
+++ server/lib/pages/module.class.php 2014-07-15 15:37:37 +0000
@@ -208,7 +208,7 @@
208 {208 {
209 // Check the token209 // Check the token
210 if (!Kit::CheckToken())210 if (!Kit::CheckToken())
211 trigger_error('Token does not match', E_USER_ERROR);211 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
212 212
213 $db =& $this->db;213 $db =& $this->db;
214 $response = new ResponseManager();214 $response = new ResponseManager();
215215
=== modified file 'server/lib/pages/oauth.class.php'
--- server/lib/pages/oauth.class.php 2014-01-18 09:47:41 +0000
+++ server/lib/pages/oauth.class.php 2014-07-15 15:37:37 +0000
@@ -218,7 +218,7 @@
218 {218 {
219 // Check the token219 // Check the token
220 if (!Kit::CheckToken())220 if (!Kit::CheckToken())
221 trigger_error('Token does not match', E_USER_ERROR);221 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
222 222
223 $db =& $this->db;223 $db =& $this->db;
224 $user =& $this->user;224 $user =& $this->user;
225225
=== modified file 'server/lib/pages/resolution.class.php'
--- server/lib/pages/resolution.class.php 2014-01-18 09:47:41 +0000
+++ server/lib/pages/resolution.class.php 2014-07-15 15:37:37 +0000
@@ -197,7 +197,7 @@
197 {197 {
198 // Check the token198 // Check the token
199 if (!Kit::CheckToken())199 if (!Kit::CheckToken())
200 trigger_error('Token does not match', E_USER_ERROR);200 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
201 201
202 $db =& $this->db;202 $db =& $this->db;
203 $user =& $this->user;203 $user =& $this->user;
@@ -221,7 +221,7 @@
221 {221 {
222 // Check the token222 // Check the token
223 if (!Kit::CheckToken())223 if (!Kit::CheckToken())
224 trigger_error('Token does not match', E_USER_ERROR);224 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
225 225
226 $db =& $this->db;226 $db =& $this->db;
227 $user =& $this->user;227 $user =& $this->user;
@@ -246,7 +246,7 @@
246 {246 {
247 // Check the token247 // Check the token
248 if (!Kit::CheckToken())248 if (!Kit::CheckToken())
249 trigger_error('Token does not match', E_USER_ERROR);249 trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR);
250 250
251 $db =& $this->db;251 $db =& $this->db;
252 $user =& $this->user;252 $user =& $this->user;
253253
=== modified file 'server/lib/pages/schedule.class.php'
--- server/lib/pages/schedule.class.php 2014-03-29 11:20:40 +0000
+++ server/lib/pages/schedule.class.php 2014-07-15 15:37:37 +0000
@@ -72,7 +72,7 @@
72 $groups = array();72 $groups = array();
73 $displays = array();73 $displays = array();
7474
75 foreach ($user->DisplayGroupList(0 /*IsDisplaySpecific*/, $filter_name) as $display) {75 foreach ($user->DisplayGroupList(-1 /*IsDisplaySpecific*/, $filter_name) as $display) {
7676
77 $display['checked_text'] = (in_array($display['displaygroupid'], $displayGroupIDs)) ? 'checked' : '';77 $display['checked_text'] = (in_array($display['displaygroupid'], $displayGroupIDs)) ? 'checked' : '';
7878
@@ -625,7 +625,10 @@
625 $eventDGIDs = Kit::ValidateParam($row['DisplayGroupIDs'], _STRING);625 $eventDGIDs = Kit::ValidateParam($row['DisplayGroupIDs'], _STRING);
626 $eventDGIDs = explode(',', $eventDGIDs);626 $eventDGIDs = explode(',', $eventDGIDs);
627627
628 if (!$user->DisplayGroupAuth($displayGroupID)) continue;628 // Make sure this user can view this display group
629 $auth = $user->DisplayGroupAuth($displayGroupID, true);
630 if (!$auth->view)
631 continue;
629632
630 // How many days does this event span?633 // How many days does this event span?
631 $spanningDays = ($toDT - $fromDT) / (60 * 60 * 24);634 $spanningDays = ($toDT - $fromDT) / (60 * 60 * 24);
@@ -1083,7 +1086,7 @@
1083 trigger_error(__('No Display Groups'), E_USER_ERROR);1086 trigger_error(__('No Display Groups'), E_USER_ERROR);
1084 1087
1085 if ($outputForm) $output .= '<form id="DisplayList" class="DisplayListForm">';1088 if ($outputForm) $output .= '<form id="DisplayList" class="DisplayListForm">';
1086 $output .= __('Groups');1089 $output .= __('Groups');
1087 $output .= '<ul class="DisplayList">';1090 $output .= '<ul class="DisplayList">';
1088 $nested = false;1091 $nested = false;
1089 1092
@@ -1137,6 +1140,8 @@
1137 $filterName = '';1140 $filterName = '';
1138 }1141 }
11391142
1143 $pinTranslated = __('Pin?');
1144
1140 $form = <<<HTML1145 $form = <<<HTML
1141 <div class="XiboFilterInner"> 1146 <div class="XiboFilterInner">
1142 <form onsubmit="return false">1147 <form onsubmit="return false">
@@ -1148,7 +1153,7 @@
1148 <td>$msgName</td>1153 <td>$msgName</td>
1149 <td><input type="text" name="name" value="$filterName"></td>1154 <td><input type="text" name="name" value="$filterName"></td>
1150 <td>1155 <td>
1151 <label for="XiboFilterPinned">Pin?</label>1156 <label for="XiboFilterPinned">$pinTranslated</label>
1152 <input id="XiboFilterPinned" name="XiboFilterPinned" type="checkbox" class="XiboFilter" $filterPinned />1157 <input id="XiboFilterPinned" name="XiboFilterPinned" type="checkbox" class="XiboFilter" $filterPinned />
1153 </td>1158 </td>
1154 </tr>1159 </tr>
@@ -1250,7 +1255,10 @@
1250 $filterPinned = '';1255 $filterPinned = '';
1251 $filterName = '';1256 $filterName = '';
1252 }1257 }
1253 1258
1259 $pinTranslated = __('Pin?');
1260 $checkAllTranslated = __('Check All');
1261
1254 // Serialize the list of display group ids1262 // Serialize the list of display group ids
1255 $displayGroupIdsSerialized = "";1263 $displayGroupIdsSerialized = "";
1256 foreach ($displayGroupIds as $displayGroupId)1264 foreach ($displayGroupIds as $displayGroupId)
@@ -1258,7 +1266,7 @@
12581266
1259 $form = <<<HTML1267 $form = <<<HTML
1260 <div class="XiboFilterInner"> 1268 <div class="XiboFilterInner">
1261 <div class="scheduleFormCheckAll pull-right"><label for"checkAll"><input type="checkbox" name="checkAll">Check All</label></div>1269 <div class="scheduleFormCheckAll pull-right"><label for"checkAll"><input type="checkbox" name="checkAll">$checkAllTranslated</label></div>
1262 <form onsubmit="return false">1270 <form onsubmit="return false">
1263 <input type="hidden" name="p" value="schedule">1271 <input type="hidden" name="p" value="schedule">
1264 <input type="hidden" name="q" value="EventFormDisplay">1272 <input type="hidden" name="q" value="EventFormDisplay">
@@ -1268,7 +1276,7 @@
1268 <td>$msgName</td>1276 <td>$msgName</td>
1269 <td><input type="text" name="name" value="$filterName"></td>1277 <td><input type="text" name="name" value="$filterName"></td>
1270 <td>1278 <td>
1271 <label for="XiboFilterPinned">Pin?</label>1279 <label for="XiboFilterPinned">$pinTranslated</label>
1272 <input id="XiboFilterPinned" name="XiboFilterPinned" type="checkbox" class="XiboFilter" $filterPinned />1280 <input id="XiboFilterPinned" name="XiboFilterPinned" type="checkbox" class="XiboFilter" $filterPinned />
1273 </td>1281 </td>
1274 </tr>1282 </tr>
@@ -1305,7 +1313,7 @@
1305 setSession('scheduleEvent', 'DisplayName', $displayName);1313 setSession('scheduleEvent', 'DisplayName', $displayName);
1306 1314
1307 // Layout list1315 // Layout list
1308 $displays = $user->DisplayGroupList(0, $displayName);1316 $displays = $user->DisplayGroupList(-1, $displayName);
1309 1317
1310 // Show a list of layouts we have permission to jump to1318 // Show a list of layouts we have permission to jump to
1311 $output = '<table class="table table-bordered">';1319 $output = '<table class="table table-bordered">';
@@ -1361,89 +1369,28 @@
1361 $layoutFilter = $this->EventFormLayoutFilter();1369 $layoutFilter = $this->EventFormLayoutFilter();
1362 $displayFilter = $this->EventFormDisplayFilter($displayGroupIds);1370 $displayFilter = $this->EventFormDisplayFilter($displayGroupIds);
13631371
1364 $token = Kit::Token();1372 $token_id = uniqid();
1365 1373 $token_field = '<input type="hidden" name="token_id" value="' . $token_id . '" />';
1366 $form = <<<END1374 $token = Kit::Token($token_id);
1367<div class="container-fluid">1375
1368 <div class="row-fluid">1376 Theme::Set('form_id', 'AddEventForm');
1369 <div class="span6">1377 Theme::Set('form_action', 'index.php?p=schedule&q=AddEvent');
1370 $layoutFilter1378 Theme::Set('form_meta', $token_field . $token);
1371 </div>1379
1372 <div class="span6">1380 // Filter forms
1373 $displayFilter1381 Theme::Set('layout_filter', $layoutFilter);
1374 </div>1382 Theme::Set('display_filter', $displayFilter);
1375</div>1383
1376<div class="row-fluid">1384 Theme::Set('recurrence_field_list', array(
1377 <div class="span12">1385 array('id' => 'null', 'name' => __('None')),
1378<form id="AddEventForm" class="XiboScheduleForm" action="index.php?p=schedule&q=AddEvent" method="post">1386 array('id' => 'Hour', 'name' => __('Hourly')),
1379 $token1387 array('id' => 'Day', 'name' => __('Daily')),
1380 <table style="width:100%;">1388 array('id' => 'Week', 'name' => __('Weekly')),
1381 <tr>1389 array('id' => 'Month', 'name' => __('Monthly')),
1382 <td colspan="4"><center><h3>Event Schedule</h3></center></td>1390 array('id' => 'Year', 'name' => __('Yearly'))
1383 </tr>1391 ));
1384 <tr>1392
1385 <td><label for="starttime" title="Select the start time for this event">Start Time</label></td>1393 $response->SetFormRequestResponse(Theme::RenderReturn('schedule_form_add_event'), __('Schedule Event'), '800px', '600px');
1386 <td>
1387 <div class="date-pick input-append date">
1388 <input data-format="dd/MM/yyyy hh:mm" type="text" class="input-medium" name="starttime" id="starttime" value="$dateText"></input>
1389 <span class="add-on">
1390 <i data-time-icon="icon-time" data-date-icon="icon-calendar"></i>
1391 </span>
1392 </div>
1393 </td>
1394 <td><label for="endtime" title="Select the end time for this event">End Time</label></td>
1395 <td>
1396 <div class="date-pick input-append date">
1397 <input data-format="dd/MM/yyyy hh:mm" type="text" class="input-medium" name="endtime" id="endtime" value="$toDateText"></input>
1398 <span class="add-on">
1399 <i data-time-icon="icon-time" data-date-icon="icon-calendar"></i>
1400 </span>
1401 </div>
1402 </td>
1403 </tr>
1404 <tr>
1405 <td><label for="DisplayOrder" title="Select the Order for this Event">Display Order</label></td>
1406 <td><input type=text" name="DisplayOrder" value="0" />
1407 <td><label title="Sets whether or not this event has priority. If set the event will be show in preference to other events." for="cb_is_priority">Priority</label></td>
1408 <td><input type="checkbox" id="cb_is_priority" name="is_priority" value="1" title="Sets whether or not this event has priority. If set the event will be show in preference to other events."></td>
1409 </tr>
1410END;
1411
1412 //recurrance part of the form
1413 $rec_type = listcontent("null|None,Hour|Hourly,Day|Daily,Week|Weekly,Month|Monthly,Year|Yearly", "rec_type");
1414
1415 $form .= <<<END
1416 <tr>
1417 <td colspan="4"><center><h3>Recurring Event</h3></center></td>
1418 </tr>
1419 <tr>
1420 <td><label for="rec_type" title="What type of repeating is required">Repeats</label></td>
1421 <td>$rec_type</td>
1422 <td><label for="rec_detail" title="How often does this event repeat">Repeat every</label></td>
1423 <td><input class="number" type="text" name="rec_detail" value="1" /></td>
1424 </tr>
1425 <tr>
1426 <td><label for="rec_range" title="When should this event stop repeating?">Until</label></td>
1427 <td>
1428 <div class="date-pick input-append date">
1429 <input data-format="dd/MM/yyyy hh:mm" type="text" class="input-medium" name="rec_range" id="rec_range"></input>
1430 <span class="add-on">
1431 <i data-time-icon="icon-time" data-date-icon="icon-calendar"></i>
1432 </span>
1433 </div>
1434 </td>
1435 </tr>
1436END;
1437
1438 $form .= <<<END
1439 </table>
1440 </form>
1441 </div>
1442</div>
1443</div>
1444END;
1445
1446 $response->SetFormRequestResponse($form, __('Schedule Event'), '800px', '600px');
1447 $response->AddButton(__('Help'), "XiboHelpRender('index.php?p=help&q=Display&Topic=Schedule&Category=Add')");1394 $response->AddButton(__('Help'), "XiboHelpRender('index.php?p=help&q=Display&Topic=Schedule&Category=Add')");
1448 $response->AddButton(__('Cancel'), 'XiboDialogClose()');1395 $response->AddButton(__('Cancel'), 'XiboDialogClose()');
1449 $response->AddButton(__('Next'), '$("#AddEventForm").attr("action", $("#AddEventForm").attr("action") + "&next=1").submit()');1396 $response->AddButton(__('Next'), '$("#AddEventForm").attr("action", $("#AddEventForm").attr("action") + "&next=1").submit()');
@@ -1527,89 +1474,37 @@
1527 $layoutFilter = $this->EventFormLayoutFilter($campaignId);1474 $layoutFilter = $this->EventFormLayoutFilter($campaignId);
1528 $displayFilter = $this->EventFormDisplayFilter($displayGroupIds);1475 $displayFilter = $this->EventFormDisplayFilter($displayGroupIds);
15291476
1530 $token = Kit::Token();
1531
1532 $form = <<<END
1533<div class="container-fluid">
1534<div class="row-fluid">
1535 <div class="span6">
1536 $layoutFilter
1537 </div>
1538 <div class="span6">
1539 $displayFilter
1540 </div>
1541</div>
1542<div class="row-fluid">
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches