noalyss-commit
[Top][All Lists]
Advanced

[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 '&nbsp;';
         }
     }
+    /**
+     * @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;?>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]