[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Noalyss-commit] [noalyss] 04/04: Task #1127 - Ajout évenement depuis t
From: |
Dany De Bontridder |
Subject: |
[Noalyss-commit] [noalyss] 04/04: Task #1127 - Ajout évenement depuis tableau de bord ou agenda Change url for wiki |
Date: |
Thu, 13 Aug 2015 19:53:43 +0000 |
sparkyx pushed a commit to branch master
in repository noalyss.
commit 13ac01afec7134fa59f504c90a3ede71f0c8507f
Author: Dany De Bontridder <address@hidden>
Date: Thu Aug 13 21:48:36 2015 +0200
Task #1127 - Ajout évenement depuis tableau de bord ou agenda
Change url for wiki
---
html/ajax_misc.php | 8 ++
html/js/gestion.js | 96 ++++++++++++++++++++++++-
include/ajax_gestion.php | 92 ++++++++++++++++++++++-
include/ajax_get_profile.php | 2 +-
include/class_follow_up.php | 59 +++++++++++++++
include/class_html_input.php | 6 ++
include/template/action_display_short.php | 113 +++++++++++++++++++++++++++++
include/template/action_show.php | 2 +-
include/template/calendar-list.php | 2 +
include/template/calendar.php | 1 +
include/template/detail-action.php | 2 +-
11 files changed, 375 insertions(+), 8 deletions(-)
diff --git a/html/ajax_misc.php b/html/ajax_misc.php
index ec952b5..815427e 100644
--- a/html/ajax_misc.php
+++ b/html/ajax_misc.php
@@ -724,6 +724,14 @@ EOF;
case 'action_show':
require_once NOALYSS_INCLUDE.'/ajax_gestion.php';
break;
+ // From dashboard, display form for a new event
+ case 'action_add':
+ require_once NOALYSS_INCLUDE.'/ajax_gestion.php';
+ break;
+ // Save a event given in the short form
+ case 'action_save':
+ require_once NOALYSS_INCLUDE.'/ajax_gestion.php';
+ break;
default:
var_dump($_GET);
}
diff --git a/html/js/gestion.js b/html/js/gestion.js
index 27b0da2..4cc9760 100644
--- a/html/js/gestion.js
+++ b/html/js/gestion.js
@@ -280,7 +280,7 @@ function action_show(p_dossier)
parameters : {gDossier:p_dossier,'op':'action_show'},
onSuccess : function(p_xml, p_text) {
remove_waiting_box();
- add_div({id: 'action_list_div',
style:"top:1%;width:90%;margin-left:5%" , cssclass: 'inner_box'});
+ add_div({id: 'action_list_div',
style:"top:1%;width:90%;left:5%" , cssclass: 'inner_box'});
$('action_list_div').innerHTML=p_xml.responseText;
}
});
@@ -288,4 +288,98 @@ function action_show(p_dossier)
{
alert('action_show '+e.message);
}
+}
+/**
+ * @brief add a new event
+ * @param {type} p_dossier
+ * @returns {undefined}
+ */
+function action_add(p_dossier) {
+ try {
+ if ( $('action_add_div')) {
+ alert('Désolé, événement en cours de création à sauver');
+ return;
+ }
+ waiting_box();
+ var action = new Ajax.Request('ajax_misc.php',
+ {
+ method:'get',
+ parameters : {gDossier:p_dossier,'op':'action_add'},
+ onSuccess : function(p_xml, p_text) {
+ remove_waiting_box();
+ add_div({id: 'action_add_div',
+ style:"top:1%;width:80%;left:10%" ,
+ cssclass: 'inner_box'});
+ $('action_add_div').innerHTML=p_xml.responseText;
+ p_xml.responseText.evalScripts();
+ }
+ });
+ } catch (e)
+ {
+ alert('action_add '+e.message);
+ }
+}
+/**
+ * @brief The new event is entered into the div action_add_div, we try
+ * to save and receive as answer a XML file with a code of success and possibly
+ * a message
+ * If the message is OK then the div is fading out, otherwise the reason of
+ * failure is shown and the div remains
+ */
+function action_save_short()
+{
+ try {
+ $('action_add_frm_info').innerHTML="";
+
$('action_add_frm')['date_event_action_short'].parentNode.className="";
+ $('action_add_frm')['title_event'].parentNode.className="";
+ $('action_add_frm')['type_event'].parentNode.className="";
+
+ if ( $('action_add_frm')['date_event_action_short'].value.trim() ==
'') {
+
$('action_add_frm')['date_event_action_short'].parentNode.className="notice";
+ return false;
+ }
+
+ if ( $('action_add_frm')['title_event'].value.trim()=="") {
+ $('action_add_frm')['title_event'].parentNode.className="notice";
+ return false;
+ }
+
+ if (
$('action_add_frm')['type_event'].options[$('action_add_frm')['type_event'].selectedIndex].value
== -1 )
+ {
+ $('action_add_frm')['type_event'].parentNode.className="notice";
+ return false;
+ }
+ var form=$('action_add_frm').serialize();
+ waiting_box();
+ var action = new Ajax.Request('ajax_misc.php',
+ {
+ method: 'get',
+ parameters: form,
+ onSuccess: function (p_xml, p_text) {
+ remove_waiting_box();
+ var answer=p_xml.responseXML;
+ var code_tags=answer.getElementsByTagName('status');
+ var code=getNodeText(code_tags[0]);
+ var
message_tags=answer.getElementsByTagName('content');
+ var message=getNodeText(message_tags[0]);
+
+ if ( code == 'OK') {
+ // Successfully saved
+ $('action_add_frm_info').innerHTML=message;
+ $('action_add_div').remove();
+
+ }
+ else if (code == 'NOK') {
+ // issue while saving
+ $('action_add_frm_info').innerHTML=message;
+ }
+
+
+ }
+ });
+ } catch (e)
+ {
+ alert('action_add ' + e.message);
+ }
+ return false;
}
\ No newline at end of file
diff --git a/include/ajax_gestion.php b/include/ajax_gestion.php
index f5be0a8..67aee1f 100644
--- a/include/ajax_gestion.php
+++ b/include/ajax_gestion.php
@@ -1,4 +1,5 @@
<?php
+
/*
* This file is part of NOALYSS.
*
@@ -15,17 +16,18 @@
* You should have received a copy of the GNU General Public License
* along with NOALYSS; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
+ */
// Copyright 2015 Author Dany De Bontridder address@hidden
/**
* @file
* @brief display a box containing last actions
*/
-if ( ! defined ('ALLOWED') ) die('Appel direct ne sont pas permis');
-if ( $op == 'action_show')
+if (!defined('ALLOWED'))
+ die('Appel direct ne sont pas permis');
+if ($op=='action_show')
{
- /**
+ /**
* display action
*/
require_once NOALYSS_INCLUDE.'/class_follow_up.php';
@@ -33,4 +35,86 @@ if ( $op == 'action_show')
$array=$gestion->get_last(25);
$len_array=count($array);
require_once NOALYSS_INCLUDE.'/template/action_show.php';
+ return;
+}
+if ($op=='action_add')
+{
+ require_once NOALYSS_INCLUDE.'/class_follow_up.php';
+ $gestion=new Follow_Up($cn);
+ $gestion->display_short();
+ return;
+}
+if ($op=='action_save')
+{
+ require_once NOALYSS_INCLUDE.'/class_follow_up.php';
+
+ /**
+ * save info from the get
+ */
+ $date_event=HtmlInput::default_value_get("date_event", -1);
+ $dest=HtmlInput::default_value_get("dest", "");
+ $event_group=HtmlInput::default_value_get("event_group", 0);
+ $event_priority=HtmlInput::default_value_get("event_priority", 0);
+ $title=HtmlInput::default_value_get("title_event", NULL);
+ $summary=HtmlInput::default_value_get("summary", "");
+ $type_event=HtmlInput::default_value_get('type_event', -1);
+ /*
+ * Check if data are valid
+ */
+ try
+ {
+ if ($date_event==-1||isDate($date_event)==0)
+ throw new Exception(_('Date invalide'));
+ if (trim($dest)=="")
+ $dest_id=NULL;
+ else
+ {
+ $fiche=new Fiche($cn);
+ $fiche->get_by_qcode($dest);
+ $dest_id=$fiche->id;
+ if ($dest_id==0)
+ throw new Exception(_('Destinataire invalide'));
+ }
+ if ($type_event==-1)
+ throw new Exception(_('Type invalide'));
+ if (trim($title)=="")
+ throw new Exception(_('Aucun titre'));
+ }
+ catch (Exception $ex)
+ {
+ header('Content-type: text/xml; charset=UTF-8');
+ $dom=new DOMDocument('1.0', 'UTF-8');
+ $xml_content=$dom->createElement('content', $ex->getMessage());
+ $xml_status=$dom->createElement('status', "NOK");
+ $root=$dom->createElement("root");
+ $root->appendChild($xml_content);
+ $root->appendChild($xml_status);
+ $dom->appendChild($root);
+ echo $dom->saveXML();
+ return;
+ }
+ /*
+ * Save data
+ */
+ $gestion=new Follow_Up($cn);
+ $gestion->ag_priority=$event_priority;
+ $gestion->ag_title=$title;
+ $gestion->ag_dest=$event_group;
+ $gestion->ag_type=$type_event;
+ $gestion->f_id_dest=$dest_id;
+ $gestion->ag_state=3;
+ $gestion->dt_id=$type_event;
+ $gestion->ag_comment=h($summary);
+ $gestion->ag_timestamp=$date_event;
+ $gestion->save_short();
+ header('Content-type: text/xml; charset=UTF-8');
+ $dom=new DOMDocument('1.0', 'UTF-8');
+ $xml_content=$dom->createElement('content', _("Sauvé"));
+ $xml_status=$dom->createElement('status', "OK");
+ $root=$dom->createElement("root");
+ $root->appendChild($xml_content);
+ $root->appendChild($xml_status);
+ $dom->appendChild($root);
+ echo $dom->saveXML();
+ return;
}
\ No newline at end of file
diff --git a/include/ajax_get_profile.php b/include/ajax_get_profile.php
index 5e6c91c..c33a67e 100644
--- a/include/ajax_get_profile.php
+++ b/include/ajax_get_profile.php
@@ -106,7 +106,7 @@ if ($profile->p_id > 0)
echo $add_impression;
echo '</div>';
echo '<div class="myfieldset" style="display:none"
id="profile_gestion_div">';
- echo "<h1 class=\"legend\">".('Action gestion accessible')."</h1>";
+ echo "<h1 class=\"legend\">".('Groupe gestion')."</h1>";
$profile_menu->available_profile($p_id);
echo '</div>';
echo '<div class="myfieldset" style="display:none"
id="profile_repo_div">';
diff --git a/include/class_follow_up.php b/include/class_follow_up.php
index 005e6e2..bb66082 100644
--- a/include/class_follow_up.php
+++ b/include/class_follow_up.php
@@ -1755,5 +1755,64 @@ class Follow_Up
echo ' ';
}
}
+ /**
+ * @brief display a small form to enter a new event
+ *
+ */
+ function display_short()
+ {
+ $cn=$this->db;
+ include 'template/action_display_short.php';
+ }
+ /**
+ *
+ */
+ function save_short()
+ {
+ // Get The sequence id,
+ $seq_name="seq_doc_type_".$this->dt_id;
+ $str_file="";
+ $add_file='';
+
+
+ $this->ag_id=$this->db->get_next_seq('action_gestion_ag_id_seq');
+
+ // Create the reference
+ $ag_ref=$this->db->get_value('select dt_prefix from document_type '
+ . 'where dt_id=$1', array($this->dt_id))
+ .'-'.$this->db->get_next_seq($seq_name);
+
+ $this->ag_ref=$ag_ref;
+ /**
+ * If ag_ref already exist then compute a new one
+ */
+
+ // save into the database
+ $this->ag_remind_date=null;
+ $sql="insert into action_gestion".
+ "(ag_id,ag_timestamp,ag_type,ag_title,f_id_dest,ag_ref,
ag_dest, ".
+ " ag_priority,ag_owner,ag_state,ag_remind_date) ".
+ " values
($1,to_date($2,'DD.MM.YYYY'),$3,$4,$5,$6,$7,$8,$9,$10,$11)";
+
+ $this->db->exec_sql($sql, array(
+ $this->ag_id, /* 1 */
+ $this->ag_timestamp, /* 2 */
+ $this->dt_id, /* 3 */
+ $this->ag_title, /* 4 */
+ $this->f_id_dest, /* 5 */
+ $ag_ref, /* 6 */
+ $this->ag_dest, /* 7 */
+ $this->ag_priority, /* 8 */
+ $_SESSION['g_user'], /* 9 */
+ $this->ag_state, /* 10 */
+ $this->ag_remind_date /* 11 */
+ )
+ );
+ if (trim($this->ag_comment)!='')
+ {
+ $this->db->exec_sql("insert into action_gestion_comment
(ag_id,tech_user,agc_comment) values ($1,$2,$3)"
+ , array($this->ag_id, $_SESSION['g_user'],
$this->ag_comment));
+ }
+ }
}
diff --git a/include/class_html_input.php b/include/class_html_input.php
index 6555b99..602f706 100755
--- a/include/class_html_input.php
+++ b/include/class_html_input.php
@@ -916,4 +916,10 @@ EOF;
$js=HtmlInput::button_action(_('Ajout autres'), $javascript);
return $js;
}
+ static function button_action_add()
+ {
+ $dossier=Dossier::id();
+ $js=HtmlInput::button_action(_('Nouvel
événement'),'action_add('.$dossier.')','xx','smallbutton');
+ return $js;
+ }
}
diff --git a/include/template/action_display_short.php
b/include/template/action_display_short.php
new file mode 100644
index 0000000..7b6bf26
--- /dev/null
+++ b/include/template/action_display_short.php
@@ -0,0 +1,113 @@
+<?php
+/*
+ * * Copyright (C) 2015 Dany De Bontridder <address@hidden>
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ *
+ */
+
+
+/**
+ * @file
+ * @brief call from follow_up::display_short display a small form to
+ * enter a new event
+ */
+global $g_user;
+// Date of the event
+$date=new IDate("date_event");
+$date->id="date_event_action_short";
+$title=new IText('title_event');
+
+// Description
+$summary=new ITextarea('summary');
+$summary->style.='class="itextarea" style="padding:0px;margin:0px"';
+
+// Type of document / event
+$type=new ISelect("type_event");
+$type->name="type_event";
+$type->value=$cn->make_array("select dt_id,dt_value from document_type order
by dt_value", 1);
+$type->selected=0;
+
+// Available for the profile
+$profile=new ISelect('event_group');
+$profile->value=$cn->make_array("select p_id as value, ".
+ "p_name as label ".
+ " from profile "
+ . "where "
+ . "p_id in "
+ . " (select p_granted "
+ . " from user_sec_action_profile "
+ . " where ua_right='W' and p_id=".$g_user->get_profile().") "
+ . "order by 2");
+
+// priority
+$priority=new ISelect('event_priority');
+$priority->value=array(
+ array('value'=>1, 'label'=>_('Haute')),
+ array('value'=>2, 'label'=>_('Moyenne')),
+ array('value'=>3, 'label'=>_('Basse'))
+ );
+$priority->selected=2;
+
+// Card
+$dest=new ICard('dest');
+$dest->jrn=0;
+$dest->name='dest';
+$dest->value="";
+$dest->label="";
+$list_recipient=$cn->make_list('select fd_id from fiche_def where frd_id in
(14,25,8,9,16)');
+$dest->extra=$list_recipient;
+$dest->set_attribute('typecard', $list_recipient);
+$dest->set_dblclick("fill_ipopcard(this);");
+$dest->set_attribute('ipopup', 'ipopcard');
+$dest->style=' style="vertical-align:0%"';
+
+echo HtmlInput::title_box(_('Nouvel événement'), 'action_add_div');
+?>
+<span class="notice" style="float:right" id="action_add_frm_info"></span>
+<form method="get" id="action_add_frm" onsubmit="action_save_short(<?php echo
Dossier::id()?>);return false">
+<p>
+ <span>
+ Date<?php echo $date->input()?>
+ </span>
+ <span>
+ Type évenement
+<?php echo $type->input();?>
+ </span>
+ Priorité
+<?php echo $priority->input()?>
+ groupe
+<?php echo $profile->input()?>
+</p>
+Destinataire <?php echo $dest->input();?>
+<p>
+ <span>
+ <?php echo _('Sujet')?>
+ <?php echo $title->input()?>
+ </span>
+</p>
+ <?php echo "Description"?>
+<p>
+ <?php echo $summary->input()?>
+</p>
+<?php
+echo HtmlInput::hidden('gDossier',Dossier::id());
+echo HtmlInput::hidden('op','action_save');
+?>
+<p style="text-align: center">
+ <?php echo HtmlInput::submit("action_add_submit", _('Valider'));?>
+</p>
+</form>
diff --git a/include/template/action_show.php b/include/template/action_show.php
index a4ddb5e..45fef3e 100644
--- a/include/template/action_show.php
+++ b/include/template/action_show.php
@@ -53,5 +53,5 @@ echo HtmlInput::title_box(_('Suivi'), 'action_list_div');
?>
</table>
<p style="text-align: center">
-<a class="smallbutton" target="_blank" href="?gDossier=<?php echo
Dossier::id()?>&ac=<?php echo $a_default->get('code_follow')?>"><?php echo
_('Gestion')?></a>
+ <?php echo HTMLInput::button_action_add()?>
</p>
\ No newline at end of file
diff --git a/include/template/calendar-list.php
b/include/template/calendar-list.php
index 252b0b3..965853e 100644
--- a/include/template/calendar-list.php
+++ b/include/template/calendar-list.php
@@ -31,6 +31,8 @@
$js=sprintf("calendar_zoom({gDossier:%d,invalue:'%s',outvalue:'%s',distype:'%s','notitle':%d})",
dossier::id(),'per_div','calendar_zoom_div','cal',$notitle);
echo HtmlInput::anchor(_('Calendrier'),''," onclick=\"{$js}\"") ;
+ echo HtmlInput::button_action_add();
+
?>
<table class="result">
<?php
diff --git a/include/template/calendar.php b/include/template/calendar.php
index 581e27c..7b921e6 100644
--- a/include/template/calendar.php
+++ b/include/template/calendar.php
@@ -8,6 +8,7 @@
$js=sprintf("calendar_zoom({gDossier:%d,invalue:'%s',outvalue:'%s',distype:'%s','notitle':%d})",
dossier::id(),'per_div','calendar_zoom_div','list',$notitle);
echo HtmlInput::anchor(_('Liste'),''," onclick=\"{$js}\"") ;
+ echo HtmlInput::button_action_add();
?>
<?php if ($zoom == 1 ): ?>
diff --git a/include/template/detail-action.php
b/include/template/detail-action.php
index 108c97b..0076ac7 100644
--- a/include/template/detail-action.php
+++ b/include/template/detail-action.php
@@ -136,7 +136,7 @@
</TR>
<tr>
<TD>
- <?php echo _('Destinataire')?>
+ <?php echo _('Groupe Gestion')?>
</TD>
<td>
<?php echo $str_ag_dest;?>