2014-05-30 Sergio Martin <sergio.martin@artica.es>

* general/logon_ok.php
	godmode/setup/news.php
	include/functions.php
	pandoradb.sql
	pandoradb.postgreSQL.sql
	pandoradb.oracle.sql
	index.php
	extras/pandoradb_migrate_5.0.x_to_5.1.postgreSQL.sql
	extras/pandoradb_migrate_5.0.x_to_5.1.mysql.sql
	extras/pandoradb_migrate_5.0.x_to_5.1.oracle.sql: Added modal window mode
	to the pandora news for ticket: #821



git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@10044 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
zarzuelo 2014-05-30 09:27:20 +00:00
parent b26a7a74f4
commit 49251f44fe
11 changed files with 320 additions and 41 deletions

View File

@ -1,3 +1,17 @@
2014-05-30 Sergio Martin <sergio.martin@artica.es>
* general/logon_ok.php
godmode/setup/news.php
include/functions.php
pandoradb.sql
pandoradb.postgreSQL.sql
pandoradb.oracle.sql
index.php
extras/pandoradb_migrate_5.0.x_to_5.1.postgreSQL.sql
extras/pandoradb_migrate_5.0.x_to_5.1.mysql.sql
extras/pandoradb_migrate_5.0.x_to_5.1.oracle.sql: Added modal window mode
to the pandora news for ticket: #821
2014-05-29 Miguel de Dios <miguel.dedios@artica.es>
* include/graphs/pandora.d3.js, include/graphs/functions_d3.php,

View File

@ -209,3 +209,12 @@ ALTER TABLE `tnetwork_component` ADD COLUMN `min_ff_event_normal` int(4) unsigne
ALTER TABLE `tnetwork_component` ADD COLUMN `min_ff_event_warning` int(4) unsigned default '0';
ALTER TABLE `tnetwork_component` ADD COLUMN `min_ff_event_critical` int(4) unsigned default '0';
ALTER TABLE `tnetwork_component` ADD COLUMN `each_ff` tinyint(1) unsigned default '0';
/* 2014/05/30 */
-- ---------------------------------------------------------------------
-- Table `tnews`
-- ---------------------------------------------------------------------
ALTER TABLE `tnews` ADD COLUMN `id_group` int(10) NOT NULL default 0;
ALTER TABLE `tnews` ADD COLUMN `modal` tinyint(1) DEFAULT 0;
ALTER TABLE `tnews` ADD COLUMN `expire` tinyint(1) DEFAULT 0;
ALTER TABLE `tnews` ADD COLUMN `expire_timestamp` DATETIME NOT NULL DEFAULT 0;

View File

@ -193,3 +193,12 @@ ALTER TABLE tnetwork_component ADD COLUMN min_ff_event_normal INTEGER default 0;
ALTER TABLE tnetwork_component ADD COLUMN min_ff_event_warning INTEGER default 0;
ALTER TABLE tnetwork_component ADD COLUMN min_ff_event_critical INTEGER default 0;
ALTER TABLE tnetwork_component ADD COLUMN each_ff NUMBER(1, 0) default 0;
/* 2014/05/30 */
-- ---------------------------------------------------------------------
-- Table `tnews`
-- ---------------------------------------------------------------------
ALTER TABLE tnews ADD COLUMN id_group NUMBER(10, 0) default 0 NOT NULL;
ALTER TABLE tnews ADD COLUMN modal NUMBER(5, 0) default 0 NOT NULL;
ALTER TABLE tnews ADD COLUMN expire NUMBER(5, 0) default 0 NOT NULL;
ALTER TABLE tnews ADD COLUMN expire_timestamp TIMESTAMP default NULL;

View File

@ -167,3 +167,12 @@ ALTER TABLE "tnetwork_component" ADD COLUMN "min_ff_event_normal" INTEGER defaul
ALTER TABLE "tnetwork_component" ADD COLUMN "min_ff_event_warning" INTEGER default 0;
ALTER TABLE "tnetwork_component" ADD COLUMN "min_ff_event_critical" INTEGER default 0;
ALTER TABLE "tnetwork_component" ADD COLUMN "each_ff" SMALLINT default 0;
/* 2014/05/30 */
-- ---------------------------------------------------------------------
-- Table `tnews`
-- ---------------------------------------------------------------------
ALTER TABLE "tnews" ADD COLUMN "id_group" INTEGER NOT NULL default 0;
ALTER TABLE "tnews" ADD COLUMN "modal" SMALLINT DEFAULT 0;
ALTER TABLE "tnews" ADD COLUMN "expire" SMALLINT DEFAULT 0;
ALTER TABLE "tnews" ADD COLUMN "expire_timestamp" TIMESTAMP without time zone default '1970-01-01 00:00:00';

View File

@ -41,23 +41,12 @@ echo '<div style="width:50%; float:left;" id="leftcolumn">';
//////////////////NEWS BOARD/////////////////////////////
echo '<div id="news_board">';
switch ($config["dbtype"]) {
case "mysql":
case "postgresql":
$sql = "SELECT subject,timestamp,text,author
FROM tnews
ORDER BY timestamp DESC
LIMIT 3";
break;
case "oracle":
$sql = "SELECT subject,timestamp,text,author
FROM tnews
WHERE rownum <= 3
ORDER BY timestamp DESC";
break;
}
$options = array();
$options['id_user'] = $config['id_user'];
$options['modal'] = false;
$options['limit'] = 3;
$news = get_news($options);
$news = db_get_all_rows_sql ($sql);
if ($news !== false) {
echo '<table cellpadding="4" cellspacing="4" class="databox">';
echo '<tr><th><span>' . __('News board') . '</span></th></tr>';

View File

@ -33,12 +33,23 @@ if (isset ($_POST["create"])) { // If create
$subject = get_parameter ("subject");
$text = get_parameter ("text");
$timestamp = db_get_value ('NOW()', 'tconfig_os', 'id_os', 1);
$values = array(
'subject' => $subject,
'text' => $text,
'author' => $config["id_user"],
'timestamp' => $timestamp);
$id_group = get_parameter ("id_group");
$modal = get_parameter ("modal");
$expire = get_parameter ("expire");
$expire_date = get_parameter ("expire_date");
$expire_date = date('Y-m-d', strtotime($expire_date));
$expire_time = get_parameter ("expire_time");
$expire_timestamp = "$expire_date $expire_time";
$values = array('subject' => $subject,
'text' => $text,
'author' => $config["id_user"],
'timestamp' => $timestamp,
'id_group' => $id_group,
'modal' => $modal,
'expire' => $expire,
'expire_timestamp' => $expire_timestamp);
$id_link = db_process_sql_insert('tnews', $values);
ui_print_result_message ($id_link,
@ -50,11 +61,26 @@ if (isset ($_POST["update"])) { // if update
$id_news = (int) get_parameter ("id_news", 0);
$subject = get_parameter ("subject");
$text = get_parameter ("text");
$id_group = get_parameter ("id_group");
$modal = get_parameter ("modal");
$expire = get_parameter ("expire");
$expire_date = get_parameter ("expire_date");
$expire_date = date('Y-m-d', strtotime($expire_date));
$expire_time = get_parameter ("expire_time");
$expire_timestamp = "$expire_date $expire_time";
//NOW() column exists in any table and always displays the current date and time, so let's get the value from a row in a table which can't be deleted.
//This way we prevent getting no value for this variable
$timestamp = db_get_value ('NOW()', 'tconfig_os', 'id_os', 1);
$values = array('subject' => $subject, 'text' => $text, 'timestamp' => $timestamp);
$values = array('subject' => $subject,
'text' => $text,
'timestamp' => $timestamp,
'id_group' => $id_group,
'modal' => $modal,
'expire' => $expire,
'expire_timestamp' => $expire_timestamp);
$result = db_process_sql_update('tnews', $values, array('id_news' => $id_news));
ui_print_result_message ($result,
@ -85,6 +111,20 @@ if ((isset ($_GET["form_add"])) || (isset ($_GET["form_edit"]))) {
$text = $result["text"];
$author = $result["author"];
$timestamp = $result["timestamp"];
$id_group = $result["id_group"];
$modal = $result["modal"];
$expire = $result["expire"];
if ($expire) {
$expire_timestamp = $result["expire_timestamp"];
$expire_utimestamp = strtotime($expire_timestamp);
}
else {
$expire_utimestamp = time() + SECONDS_1WEEK;
}
$expire_date = date('Y/m/d', $expire_utimestamp);
$expire_time = date('H:i:s', $expire_utimestamp);
}
else {
ui_print_error_message(__('Name error'));
@ -95,11 +135,56 @@ if ((isset ($_GET["form_add"])) || (isset ($_GET["form_edit"]))) {
$text = "";
$subject = "";
$author = $config['id_user'];
$id_group = 0;
$modal = 0;
$expire = 0;
$expire_date = date('Y/m/d', time() + SECONDS_1WEEK);
$expire_time = date('H:i:s', time());
}
// Create news
echo '<table class="databox" cellpadding="4" cellspacing="4" width="98%">';
$table->width = '98%%';
$table->id = "news";
$table->cellpadding = 4;
$table->cellspacing = 4;
$table->class = "databox";
$table->head = array ();
$table->data = array ();
$table->style[0] = 'font-weight: bold;';
$table->style[1] = 'font-weight: bold;';
$table->style[2] = 'font-weight: bold;';
$table->style[3] = 'font-weight: bold;';
$table->style[4] = 'font-weight: bold;';
$data = array();
$data[0] = __('Subject') . '<br>';
$data[0] .= '<input type="text" name="subject" size="35" value="'.$subject.'">';
$data[1] = __('Group') . '<br>';
$data[1] .= html_print_select_groups($config["id_user"], "ER", users_can_manage_group_all(), 'id_group', $id_group, '', '', 0, true, false, false, '');
$data[2] = __('Modal screen') . '<br>';
$data[2] .= html_print_checkbox_extended('modal', 1, $modal, false, '', 'style="margin-top: 5px;margin-bottom: 7px;"', true);
$data[3] = __('Expire') . '<br>';
$data[3] .= html_print_checkbox_extended('expire', 1, $expire, false, '', 'style="margin-top: 5px;margin-bottom: 7px;"', true);
$data[4] = __('Expiration') . '<br>';
$data[4] .= html_print_input_text ('expire_date', $expire_date, '', 12, 10, true). ' ';
$data[4] .= html_print_input_text ('expire_time', $expire_time, '', 10, 7, true). ' ';
$table->rowclass[] = '';
$table->data[] = $data;
$data = array();
$data[0] = __('Text') . '<br>';
$data[0] .= html_print_textarea('text', 25, 15, $text, '', true);
$table->rowclass[] = '';
$table->colspan[1][0] = 5;
$table->data[] = $data;
echo '<form name="ilink" method="post" action="index.php?sec=gsetup&sec2=godmode/setup/news">';
if ($creation_mode == 1)
echo "<input type='hidden' name='create' value='1'>";
@ -110,18 +195,10 @@ if ((isset ($_GET["form_add"])) || (isset ($_GET["form_edit"]))) {
echo $id_news;
}
echo "'>";
echo '<tr>
<td class="datos">'.__('Subject').'</td>
<td class="datos"><input type="text" name="subject" size="35" value="'.$subject.'">';
echo '<tr>
<td class="datos2">'.__('Text').'</td>
<td class="datos2">
<textarea rows=4 cols=50 name="text" >';
echo $text;
echo '</textarea></td>';
echo '</tr>';
echo "</table>";
echo "<table width='98%'>";
html_print_table($table);
echo "<table width='" . $table->width . "'>";
echo "<tr><td align='right'>";
if (isset($_GET["form_add"])) {
echo "<input name='crtbutton' type='submit' class='sub wand' value='".__('Create')."'>";
@ -141,8 +218,10 @@ else {
// Main list view for Links editor
echo "<table cellpadding='4' cellspacing='4' class='databox' width=98%>";
echo "<th>".__('Subject')."</th>";
echo "<th>".__('Type')."</th>";
echo "<th>".__('Author')."</th>";
echo "<th>".__('Timestamp')."</th>";
echo "<th>".__('Expiration')."</th>";
echo "<th>".__('Delete')."</th>";
@ -159,8 +238,31 @@ else {
}
echo "<tr><td class='$tdcolor'><b><a href='index.php?sec=gsetup&sec2=godmode/setup/news&form_edit=1&id_news=".$row["id_news"]."'>".$row["subject"]."</a></b></td>";
if ($row['modal']) {
echo "<td class='$tdcolor'>".__('Modal')."</b></td>";
}
else {
echo "<td class='$tdcolor'>".__('Board')."</b></td>";
}
echo "<td class='$tdcolor'>".$row["author"]."</b></td>";
echo "<td class='$tdcolor'>".$row["timestamp"]."</b></td>";
$utimestamp = strtotime($row["timestamp"]);
echo "<td class='$tdcolor'>" . date($config['date_format'], strtotime($row["timestamp"])) . "</b></td>";
if ($row["expire"]) {
$expire_utimestamp = strtotime($row["expire_timestamp"]);
$expire_in_secs = $expire_utimestamp - $utimestamp;
if( $expire_in_secs <= 0) {
echo "<td class='$tdcolor'>" . __('Expired') . "</b></td>";
}
else {
$expire_in = human_time_description_raw($expire_in_secs, false, 'large');
echo "<td class='$tdcolor'>" . $expire_in . "</b></td>";
}
}
else {
echo "<td class='$tdcolor'>".__('No')."</b></td>";
}
echo '<td class="'.$tdcolor.'" align="center"><a href="index.php?sec=gsetup&sec2=godmode/setup/news&id_news='.$row["id_news"].'&borrar='.$row["id_news"].'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">' . html_print_image("images/cross.png", true, array("border" => '0')) . '</a></td></tr>';
}
@ -173,4 +275,72 @@ else {
echo "<input type='submit' class='sub next' name='form_add' value='".__('Add')."'>";
echo "</form></table>";
}
/*
* We must add javascript here. Otherwise, the date picker won't
* work if the date is not correct because php is returning.
*/
ui_require_jquery_file ("ui-timepicker-addon");
// This script is included manually to be included after jquery and avoid error
echo '<script type="text/javascript" src="' . ui_get_full_url('include/javascript/i18n/jquery-ui-timepicker-' . get_user_language() . '.js', false, false, false) . '"></script>';
ui_require_jquery_file("ui.datepicker-" . get_user_language(), "include/javascript/i18n/");
// Include tiny for wysiwyg editor
ui_require_javascript_file('tiny_mce', 'include/javascript/tiny_mce/');
?>
<script language="javascript" type="text/javascript">
$(document).ready (function () {
$("#text-expire_time").timepicker({
showSecond: true,
timeFormat: '<?php echo TIME_FORMAT_JS; ?>',
timeOnlyTitle: '<?php echo __('Choose time');?>',
timeText: '<?php echo __('Time');?>',
hourText: '<?php echo __('Hour');?>',
minuteText: '<?php echo __('Minute');?>',
secondText: '<?php echo __('Second');?>',
currentText: '<?php echo __('Now');?>',
closeText: '<?php echo __('Close');?>'});
$.datepicker.setDefaults($.datepicker.regional[ "<?php echo get_user_language(); ?>"]);
$("#text-expire_date").datepicker({
dateFormat: "<?php echo DATE_FORMAT_JS; ?>",
changeMonth: true,
changeYear: true,
showAnim: "slideDown"});
tinyMCE.init({
mode : "exact",
elements: "textarea_text",
theme : "advanced",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_buttons1 : "bold,italic, |, image, link, |, cut, copy, paste, |, undo, redo, |, forecolor, |, fontsizeselect, |, justifyleft, justifycenter, justifyright",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
convert_urls : false,
theme_advanced_statusbar_location : "none"
});
$("#checkbox-expire").click(function() {
check_expire();
});
});
check_expire();
function check_expire() {
if ($("#checkbox-expire").is(":checked")) {
$('#news-0-4').css('visibility', '');
}
else {
$('#news-0-4').css('visibility', 'hidden');
}
}
</script>

View File

@ -2029,4 +2029,70 @@ function translate_file_upload_status ($status_code) {
return $message;
}
/**
* Get the arguments given in a function returning default value if not defined
* @param string name of the argument
* @param mixed array with arguments
* @param string defualt value for this argument
*
* @return string value for the argument
*/
function get_argument ($argument, $arguments, $default) {
if (isset($arguments[$argument])) {
return $arguments[$argument];
}
else {
return $default;
}
}
/**
* Get the arguments given in a function returning default value if not defined
* @param mixed arguments
* - id_user: user who can see the news
* - modal: true if want to get modal news. false to return not modal news
* - limit: number of max news returned
* @return mixed list of news
*/
function get_news($arguments) {
global $config;
$id_user = get_argument ('id_user', $arguments, $config['id_user']);
$modal = get_argument ('modal', $arguments, false);
$limit = get_argument ('limit', $arguments, 99999999);
$id_group = array_keys(users_get_groups($id_user, 'AR', true));
$id_group = implode(',',$id_group);
$current_datetime = date('Y-m-d H:i:s', time());
$modal = (int) $modal;
switch ($config["dbtype"]) {
case "mysql":
case "postgresql":
$sql = sprintf("SELECT subject,timestamp,text,author
FROM tnews WHERE id_group IN (%s) AND
modal = %s AND
(expire = 0 OR (expire = 1 AND expire_timestamp > '%s'))
ORDER BY timestamp DESC
LIMIT %s", $id_group, $modal, $current_datetime, $limit);
break;
case "oracle":
$sql = sprintf("SELECT subject,timestamp,text,author
FROM tnews
WHERE rownum <= %limit AND id_group IN (%s) AND
modal = %s AND
(expire = 0 OR (expire = 1 AND expire_timestamp > '%s'))
ORDER BY timestamp DESC", $limit, $id_group, $modal, $current_datetime);
break;
}
$news = db_get_all_rows_sql ($sql);
if (empty($news)) {
$news = array();
}
return $news;
}
?>

View File

@ -404,15 +404,16 @@ if ($old_global_counter_chat != $now_global_counter_chat) {
$_SESSION['new_chat'] = true;
}
// Display login help info dialog
if (get_parameter ('login', 0) !== 0) {
// Display news dialog
include_once("general/news_dialog.php");
// Display login help info dialog
// If it's configured to not skip this
if (!isset($config['skip_login_help_dialog']) ||
$config['skip_login_help_dialog'] == 0) {
include_once("general/login_help_dialog.php");
}
}

View File

@ -1053,7 +1053,11 @@ CREATE TABLE tnews (
author VARCHAR2(255) DEFAULT '',
subject VARCHAR2(255) DEFAULT '',
text CLOB NOT NULL,
timestamp TIMESTAMP default NULL
timestamp TIMESTAMP default NULL,
id_group NUMBER(10, 0) default 0 NOT NULL,
modal NUMBER(5, 0) default 0 NOT NULL,
expire NUMBER(5, 0) default 0 NOT NULL,
expire_timestamp TIMESTAMP default NULL
);
CREATE SEQUENCE tnews_s INCREMENT BY 1 START WITH 1;
CREATE OR REPLACE TRIGGER tnews_inc BEFORE INSERT ON tnews REFERENCING NEW AS NEW FOR EACH ROW BEGIN SELECT tnews_s.nextval INTO :NEW.ID_NEWS FROM dual; END tnews_inc;;

View File

@ -931,7 +931,11 @@ CREATE TABLE "tnews" (
"author" varchar(255) NOT NULL DEFAULT '',
"subject" varchar(255) NOT NULL DEFAULT '',
"text" TEXT NOT NULL,
"timestamp" TIMESTAMP without time zone default '1970-01-01 00:00:00'
"timestamp" TIMESTAMP without time zone default '1970-01-01 00:00:00',
"id_group" INTEGER NOT NULL default 0,
"modal" SMALLINT DEFAULT 0,
"expire" SMALLINT DEFAULT 0,
"expire_timestamp" TIMESTAMP without time zone default '1970-01-01 00:00:00'
);
-- -----------------------------------------------------

View File

@ -1006,6 +1006,10 @@ CREATE TABLE IF NOT EXISTS `tnews` (
`subject` varchar(255) NOT NULL DEFAULT '',
`text` TEXT NOT NULL,
`timestamp` DATETIME NOT NULL DEFAULT 0,
`id_group` int(10) NOT NULL default 0,
`modal` tinyint(1) DEFAULT 0,
`expire` tinyint(1) DEFAULT 0,
`expire_timestamp` DATETIME NOT NULL DEFAULT 0,
PRIMARY KEY(`id_news`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8;