Elxis CMS Forum

Ελληνικό Forum => Δημόσιο Βήμα => Topic started by: intefix on October 14, 2013, 09:25:28

Title: FlexiGrid βοήθεια
Post by: intefix on October 14, 2013, 09:25:28
Καλημέρα...
Αποφάσισα τελικά για την απεικόνιση/επεξεργασία πινάκων σε μορφή Grid να χρησιμοποπιήσω το FlexiGrid.
Πως κάνοντας select μια εγγραφή πατώντας ένα πλήκτρο (edit) να ανοίγει την σελίδα/φόρμα για editing.
px .../event_edit.php?event_id=78

Kαμμιά βοήθεια πάνω σε αυτό;
Title: Re: FlexiGrid βοήθεια
Post by: intefix on November 06, 2013, 15:04:24
Προχώρησα κάμποσο σαν άσχετος... εδώ (http://www.geocity.gr/polis/flexigrid_elxis/event_search.php)
Το μόνο που δεν κατάφερα να δουλέψει είναι η αναζήτηση.
Μπορεί να βοηθήσει κανένας;

Για κάποιον που ενδιαφέρεται τα αρχεία είναι ...
Title: Re: FlexiGrid βοήθεια
Post by: webgift on November 06, 2013, 19:38:14
Αναρωτιέμαι τι σχέση έχουν όλα αυτά με το Elxis;
Title: Re: FlexiGrid βοήθεια
Post by: intefix on November 06, 2013, 21:48:26
Όπως βλέπεις γράφω σε "δημόσιο βήμα".
Δεύτερο το κομμάτι flexifrid το χρησιμοποιούμε στο Elxis 4.
Είναι τόσο κακό να βοηθήσεις κάποιον;
Title: Re: FlexiGrid βοήθεια
Post by: webgift on November 07, 2013, 10:49:40
Δεν είπα ότι κάτι είναι κακό ωστόσο αυτά που έχεις γράψει σε κώδικα είναι php χρησιμοποιώντας το Flexigrid
που όντως το χρησιμοποιεί το Elxis. Δεν χρησιμοποιείς κάτι από το framework του Elxis. Η βοήθεια σε τέτοιου
είδους ερωτήματα είναι η υλοποίηση του.
Title: Re: FlexiGrid βοήθεια
Post by: intefix on November 07, 2013, 12:05:37
???? Ευχαριστώ.
 Στο θέμα της αναζήτησης παρεπιπτόντως βρήκα το λάθος μου.
Title: Re: FlexiGrid βοήθεια
Post by: intefix on January 16, 2014, 20:16:35
Ας συνεχίσω εδώ...
Έχω ένα πεδίο που το βλέπω σαν 0 η 1 (bolean) σε μια στήλη του flexigrid.
Είναι δυνατόν να to βλέπω σαν checkbox ; (Δεν με ενδιαφέρει η inline αλλαγή)
Title: Re: FlexiGrid βοήθεια
Post by: datahell on January 16, 2014, 20:45:13
Ναι, μπορείς. Στα data που επιστρέφει το grid ως περιεχόμενα των κελιών μπορείς να έχεις οποιαδήποτε html. Τα κελιά του grid που περιέχουν html να τα βάζεις μέσα σε CDATA blocks. Ωστόσο δεν θεωρώ σωστό να βάλεις ένα πεδίο φόρμας, εκτός φόρμας σε ένα πίνακα. Καλύτερα να εμφανίζεις ένα Ναι ή Όχι.

Παράδειγμα 1
$txt = ($row->something == 1) ? $eLang->get('YES') : $eLang->get('NO');
echo '<cell><![CDATA['.$txt."]]></cell>\n";

Παράδειγμα 2

if ($row->something == 1) {
    $txt = '<input type="checkbox" name="something'.$row->id.'" value="1" checked="checked" />';
} else {
    $txt = '<input type="checkbox" name="something'.$row->id.'" value="1" />';
}
echo '<cell><![CDATA['.$txt."]]></cell>\n";

Το flexigrid του Elxis είναι βελτιωμένη έκδοση σε σχέση με το πρωτότυπο και υποστηρίζει περισσότερα πράγματα. Αποτελεί ένα συνδιασμό τεχνολογιών και γλωσσών προγραμματισμού (ajax, javascript, json, css, php, xml, html). Είμαστε εδώ να βοηθήσουμε σε οποιαδήποτε απορεία ή πρόβλημα έχεις σχετικά με ανάπτυξη επεκτάσεων για το Elxis.
Title: Re: FlexiGrid βοήθεια
Post by: intefix on January 16, 2014, 21:25:46
Καλησπέρα Γιάννη...Ταχύτατος όπως πάντα.
Μακάρι νά χα τις γνώσεις σου να κάνω παπάδες. Έχω διαβάσει το flexi-elxis αρκετα. Έχω προσθέσει 2-3 μεταβλητές. Αλλά δεν τα έχω καταλάβει όλα.
Πάρα πολλές φορές έχω φτάσει να αναθεματήσω την ώρα που έπιασα το πληκτρολόγιο, και παράτησα το πολυμετρο μου και το κολλητήρι μου...αλλά πάλι τα ξαναπιάνω...Δυστυχώς είμαι σε μια ηλικία που δεν τα πιάνω όπως παλιά.
Όπως είπα και παραπάνω φτιάχνω μια εφαρμογή για διαχείρηση αιτημάτων Δημοτών. Ενσωματώνω αρκετά πράματα μέσα
GIS, Calendar κλπ. Μακάρι να ήξερα να έφτιαχνα componets...
Ευχαριστώ.
Title: Re: FlexiGrid βοήθεια
Post by: datahell on January 16, 2014, 23:33:32
Ενίοτε πιάνω και εγώ το κολητήρι (όχι, δεν είναι η ζωή μου μόνο η php και το Elxis)
Επισυνάπτω σημερινή φωτογραφία από κάτι που φτιάχνω με το arduino τις τελευταίες ημέρες (σε φάση πριν την δημιουργία του πρωτοτύπου ακόμα).
Title: Re: FlexiGrid βοήθεια
Post by: intefix on January 17, 2014, 08:56:40
Ωραίος...Τώρα Νοιώθω ποιο καλά  :P
Title: Re: FlexiGrid βοήθεια
Post by: intefix on January 27, 2014, 16:01:19
Επανήλθα σήμερα από τη βόλτα μου στο χωριό...
Συμφωνώ μαζί σου για τα στοιχεία φόρμας να είναι σε φόρμα. Οπότε καταλήγω να είναι δυο εκόνες yes, no ας πούμε.
Πάμε τώρα έχω είπαμε ένα πεδίο 0/1 με όνομα allDay.
Εγώ έχω
Code: [Select]
$json = "";
$json .= "{\n";
$json .= "page: $page,\n";
$json .= "total: $total,\n";
$json .= "rows: [";
$rc = false;
while ($row = mysql_fetch_array($result)) {
if ($rc) $json .= ",";
$json .= "\n{";
$json .= "id:'".$row['request_id']."',";
$json .= "cell:['".$row['request_id']."','".$row['request_date']."'";
$json .= ",'".addslashes($row['requester'])."'";
$json .= ",'".addslashes($row['foreas'])."'";
$json .= ",'".addslashes($row['hall'])."'";
$json .= ",'".addslashes($row['event'])."'";
$json .= ",'".addslashes($row['date_from'])."'";
$json .= ",'".addslashes($row['allDay'])."'";
$json .= ",'".addslashes($row['repeat'])."']";
$json .= "}";
$rc = true;
}
$json .= "]\n";
$json .= "}";
echo $json;
και μου βγάζει 0 η 1 ανάλογα. Το μετατρέπω σε true or false για τη ημερολόγιο. Στη δική μας περίπτωση να βλέπουμε Tick or untick...
Code: [Select]
if ($row->allDay== 1) {
    $txt = '<img src="http://www.sitename.gr/includes/icons/nautilus/16x16/tick.png" alt="icon" border="0">;
} else {
    $txt = '<img src="http://www.sitename.gr/includes/icons/nautilus/16x16/error.png" alt="icon" border="0">';
}
echo '<cell><![CDATA['.$txt."]]></cell>\n";
το ---'.$row->id.'---που το βάζω;
Title: Re: FlexiGrid βοήθεια
Post by: datahell on January 27, 2014, 19:23:49
Το flexigrid το δουλεύουμε με XML, όχι με json. Όλες οι εφαρμογές και παραδείγματα στο Elxis είναι με XML.
Title: Re: FlexiGrid βοήθεια
Post by: intefix on January 30, 2014, 21:16:18
Τα κατάφερα να σηκώνω με xml html/image check.png και error.png στα yes/no πεδία που έχω.
Παρατηρήσεις: Και στα elxis που έχω παρατηρώ ότι οι κάθετες που ορίζουν τι στήλες όσο πας πιο δεξια χάνουν και είναι πιο μέσα από τη θέση τους. Τώρα βέβαια σε άλλο μηχάνημα (ίδιος browser ιδιο Os win7) δεν το βλέπω...κουφο αυτό.
Στο δικό μου τώρα έφτιαξα δυο flexiGrids. Στο δεύτερο το εργαλείο searchitems "κολλάει" στη πρώτη επιλογή...ανεβάζω τα 2 αρχεία εδώ το request
Code: [Select]
<?php 
    session_start
(); 
include('includes/header.php');
include('includes/menu.php');
?>


<link rel="stylesheet" type="text/css" href="css/flexigrid.css" />

<script type="text/javascript" src="js/jquery-1.2.3.pack.js"></script>
<script type="text/javascript" src="js/flexigrid.js"></script>
<script type="text/javascript">
$(document).ready(function(){

$("#flex1").flexigrid
(
{
url: 'request_search_data_xml.php',
dataType: 'xml',
colModel : [
{display: 'Κωδικός', name : 'request_id', width : 50, sortable : true, align: 'center'},
{display: 'Ημερομηνία', name : 'request_date', width : 60, sortable : false, align: 'left'},
{display: 'Αιτών', name : 'requester', width : 100, sortable : true, align: 'left'},
{display: 'Φορέας', name : 'foreas', width : 90, sortable : true, align: 'left'},
{display: 'Αίθουσα', name : 'hall', width : 115, sortable : true, align: 'left'},
{display: 'Εκδήλωση', name : 'event', width : 285, sortable : false, align: 'left'},
{display: 'Από', name : 'date_from', width : 60, sortable : true, align: 'left'},
{display: 'Ολοήμερη', name : 'allDay', width : 50, sortable : false, align: 'center'}, 
{display: 'Επανάληψη', name : 'repeat', width : 40, sortable : false, align: 'center'}
],
buttons : [
{name: 'Προσθήκη', bclass: 'add', onpress : test},
{name: 'Διόρθωση', bclass: 'edit', onpress : test},
{name: 'Διαγραφή', bclass: 'delete', onpress : test},
{separator: true}

],
searchitems : [
{display: 'Αιτών', name : 'requester', isdefault: true},
{display: 'Φορέας', name : 'foreas'},
{display: 'Αίθουσα', name : 'hall'},
{display: 'Εκδήλωση', name : 'event'}
],


sortname: "request_id",
sortorder: "desc",
usepager: true,
title: 'ΑΝΑΖΗΤΗΣΗ ΑΙΤΗΣΗΣ',
useRp: true,
rp: 20,
height: 490,
width: '100%',

showTableToggleBtn: false,
showToggleBtn: false,
resizable: true,
singleSelect: true,

pagetext: 'Σελίδα',
outof: 'από',
pagestat: 'Εμφάνιση {from} ως {to} από {total} αντικείμενα',
findtext: 'Αναζήτηση',
procmsg: 'Παρακαλώ περιμένετε...',
nomsg: 'Δεν βρέθηκαν αποτελέσματα!',
errormsg: 'Σφάλμα σύνδεσης',
submittext: 'Υποβολή',
dir: 'ltr'
}
);   

});

function test(com,grid)
{
    if (com=='Διαγραφή')
    {
$('.trSelected', grid).each(function()
{
var id = $(this).attr('id');
id = id.substring(id.lastIndexOf('row')+3);
alert("Δεν επιτρέπεται η διαγραφή");
});
    }

    else if (com=='Προσθήκη')
    {
alert("Εισαγωγή νέας αίτησης");
location.href = 'request_add.php';
    }

else if (com=='Διόρθωση')
{
var nsel = $('.trSelected', grid).length;
if (nsel < 1) {
alert('Δεν επιλέχθηκαν αντικείμενα!');
return false;
} else {
var items = $('.trSelected',grid);
var id = parseInt(items[0].id.substr(3), 10);
alert("Διόρθωση αίτησης με κωδικό " + id);
location.href = 'request_edit.php?id='+id;
}
}
}
</script>

<div>
<table id="flex1" style="display:none"></table>
</div>
<?php
  include(
'includes/footer.php');
?>

και εδώ το xml του
Code: [Select]
<?php
    session_start
(); 

error_reporting(1);
function 
runSQL($rsql
{
require (
'includes/config.php');
$result mysql_query($rsql) or die ('Αδυναμία εκτέλεσης Sql'); 
return $result;
mysql_close($con);
}

$page = isset($_POST['page']) ? $_POST['page'] : 1;
$rp = isset($_POST['rp']) ? $_POST['rp'] : 10;
$sortname = isset($_POST['sortname']) ? $_POST['sortname'] : 'request_id';
$sortorder = isset($_POST['sortorder']) ? $_POST['sortorder'] : 'desc';
$query = isset($_POST['query']) ? $_POST['query'] : false;
$qtype = isset($_POST['qtype']) ? $_POST['qtype'] : false;

$where "WHERE dat_request.ota_id=".$_SESSION["OTA_ID"]; 

if($_POST['query']!='')
{
$where .= " AND ".$_POST['qtype']." LIKE '%".$_POST['query']."%' "

$sort "ORDER BY $sortname $sortorder";

if (!
$page$page 1;
if (!
$rp$rp 10;

$start = (($page-1) * $rp);

$limit "LIMIT $start$rp";

$sql "SELECT
dat_request.request_id, DATE_FORMAT(`dat_request`.`request_date`,'%d/%m/%Y') AS request_date,
CONCAT_WS(' ',`ref_requester`.`l_name`,`ref_requester`.`f_name`) AS requester, ref_foreas.foreas ,
ref_hall.hall, CONCAT_WS(' ',`ref_event_type`.`event_type`,`ref_event`.`title`,`ref_event`.`creator`) AS `event`,
DATE_FORMAT(`ref_event`.`date_from`,'%d/%m/%Y') AS date_from, ref_event.allDay, ref_event.`repeat`,
dat_request.ota_id
FROM dat_request
INNER JOIN ref_requester ON ref_requester.requester_id = dat_request.requester_id
INNER JOIN ref_foreas ON ref_foreas.foreas_id = dat_request.foreas_id
INNER JOIN ref_hall ON ref_hall.hall_id = dat_request.hall_id
INNER JOIN ref_event ON ref_event.event_id = dat_request.event_id
INNER JOIN ref_event_type ON ref_event_type.event_type_id = ref_event.event_type_id 
$where $sort $limit";

$result runSQL($sql);
$total mysql_num_rows($result);

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
header("Last-Modified: " gmdate"D, d M Y H:i:s" ) . "GMT" );
header("Cache-Control: no-cache, must-revalidate" );
header("Pragma: no-cache" );
header("Content-type: text/xml");

$xml "<?xml version=\"1.0\" encoding=\"utf-8\"?>
\n";
$xml .= "<rows>";
$xml .= "<page>$page</page>";
$xml .= "<total>$total</total>";
while ($row = mysql_fetch_array($result)) {
$xml .= "<row id='".$row['request_id']."'>";
$xml .= "<cell><![CDATA[".$row['request_id']."]]></cell>";
$xml .= "<cell><![CDATA[".$row['request_date']."]]></cell>";
$xml .= "<cell><![CDATA[".$row['requester']."]]></cell>";
$xml .= "<cell><![CDATA[".$row['foreas']."]]></cell>";
$xml .= "<cell><![CDATA[".$row['hall']."]]></cell>";
$xml .= "<cell><![CDATA[".$row['event']."]]></cell>";
$xml .= "<cell><![CDATA[".$row['date_from']."]]></cell>";
if ($row->allDay== 1) {
$xml .= "<cell><![CDATA[<img src=\"images/tick.png\" alt=\"yes\" border=\"0\" />]]></cell>'";
} else {
$xml .= "<cell><![CDATA[<img src=\"images/error.png\" alt=\"no\" border=\"0\" />]]></cell>'";
}
if ($row->repeat== 1) {
$xml .= "<cell><![CDATA[<img src=\"images/tick.png\" alt=\"yes\" border=\"0\" />]]></cell>'";
} else {
$xml .= "<cell><![CDATA[<img src=\"images/error.png\" alt=\"no\" border=\"0\" />]]></cell>'";
}
$xml .= "</row>";
}
$xml .= "</rows>";
echo $xml;
?>
που κάνω τη βλακεία πάλι;
Title: Re: FlexiGrid βοήθεια
Post by: datahell on January 30, 2014, 22:19:10
Ρε μάστορα πες από την αρχή ότι φτιάχνεις custom script και όχι για το Elxis. Αν το είχες κάνει component του Elxis θα το τέλειωνες αυτό το κομμάτι σε 1 ώρα αντί των μηνών που παιδεύεσε. Το Elxis τα έχει έτοιμα όλα αυτά, εσύ απλά χρησιμοποιείς την σχετική βιβλιοθήκη του Elxis.

Τέλος πάντων, απαντώ στην ερώτησή σου: Δεν έχω άποψη για την εφαρμογή σου αν σου κολάει όμως στο δεύτερο element του searchitems πιθανότατα είναι γιατί δεν έχει οριστεί το isdefault.

searchitems : [
   {display: 'Αιτών', name : 'requester', isdefault: true},
   {display: 'Φορέας', name : 'foreas', isdefault: false},
   {display: 'Αίθουσα', name : 'hall', isdefault: false},
   {display: 'Εκδήλωση', name : 'event', isdefault: false}
],

Σε αυτές τις περιπτώσεις βλέπουμε την κονσόλα σφαλμάτων στον firefox για να δούμε αν υπάρχουν σφάλματα στην javascript.

Ο αντίστοιχος κώδικας αν χρησιμοποιούσες το flexigrid του Elxis είναι αυτός:
$grid->addSearch('Αιτών', 'requester', true);
$grid->addSearch('Φορέας', 'foreas', false);
$grid->addSearch('Αίθουσα', 'hall', false);
$grid->addSearch('Εκδήλωση', 'event', false);
Title: Re: FlexiGrid βοήθεια
Post by: intefix on January 31, 2014, 06:25:10
Ρε μάστορα πες από την αρχή ότι φτιάχνεις custom script και όχι για το Elxis. Αν το είχες κάνει component του Elxis θα το τέλειωνες αυτό το κομμάτι σε 1 ώρα αντί των μηνών που παιδεύεσε.
Αν ήξερα να το κάνω λες να μην τό κανα; (από την αρχή το λέω...)
Στο κόλλημα τώρα. Κολλάει στη 1η επιλογή και όχι στη 2η. τα είχα δοκιμάσει και με συμπληρωμένα τα " isdefault: false" δεν αλλάζει κάτι...όπως προείπα έχω 2 flexis. To 1 δουλεύει σωστά και το 2ο όχι. Συγκρίνω και τα 2 αρχεία αλλά δεν βλέπω κάτι ύποπτο. Υποψιάζουμε ότι το πρόβλημα είναι στη $where η στο Sql .
Σχετικά με τις κάθετες που λέω τοχεις παρατηρήσει; (και στο Elxis συμβαίνει...)

Εδώ ας πω και κάτι...είσατε διαθέσιμοι με μαθήματα να πάρουμε ένα μικρό project όπως πχ το δικό μου (διαχείριση εκδηλώσεων) και να το κάνουμε component? Νομίζω πιο πολυ ωφέλεια θα είχε...
Title: Re: FlexiGrid βοήθεια
Post by: datahell on January 31, 2014, 09:00:23
Μα είναι πιο εύκολο να το φτιάξεις component για το Elxis από αυτό που κάνεις τώρα. Εσύ προσπαθείς να ξανα-ανακαλύψεις τον τροχό.
Title: Re: FlexiGrid βοήθεια
Post by: intefix on January 31, 2014, 13:22:23
Έχει κανα οδηγό να μάθουμε;