Search Results

Search found 412 results on 17 pages for 'jean francois cote'.

Page 10/17 | < Previous Page | 6 7 8 9 10 11 12 13 14 15 16 17  | Next Page >

  • Opera 11.10 sort en version bêta : meilleur support du CSS3 et prise en charge du standard WOFF et du format ouvert WebP

    Opera 11.10 sort en version bêta Meilleur support du CSS3 et prise en charge du standard WOFF et du format ouvert WebP Opera Software vient de dévoiler la bêta de la version 11.10 de son navigateur, encore plus rapide, épurée et performante. Côté visuel, cette version (nom de code Barracuda) garde le même design général simplifié de la version 11. Seule la fonctionnalité Speed Dial (galerie des miniatures) a été relookée pour faciliter et accélérer l'accès aux sites favoris. Le nombre d'adresses que l'utilisateur peut désormais placer da...

    Read the article

  • Deuxième Défi Web Developpez.com : illustrez trois types d'algorithmes dans une page web

    Bonjour à tous! Bienvenue pour cette nouvelle édition du Défi de création Développement Web. Rappelez-vous, dans la première édition, nous avions joué avec le temps sur de belles créations représentant une horloge. Aujourd'hui nous allons du côté des mathématiques ! Vous les utilisez, vous les aimer pour leurs utilités, ou les détester pour leurs complexités parfois ; je parle des algorithmes, un mot banalisé au fil du temps mais derrière ce mot se cachent de grands penseurs ou mathématiciens :

    Read the article

  • Sybase IQ 15.4 annoncé : Sybase parie sur Hadoop et MapReduce, et défie sa maison mère ?

    Sybase IQ 15.4 annoncé pour fin novembre Sybase veut repousser les limites du Big Data avec Hadoop et MapReduce Alors que la grand messe annuelle de SAP, le SAPPHIRE NOW, battait son plein, la nouvelle filiale de l'éditeur allemand Sybase a annoncé en totale indépendance la sortie de Sybase IQ 15.4, son serveur analytique haute performance structuré en colonnes pour gérer les "big data". Alors que de son côté SAP met en avant HANA, sa nouvelle technologie de mise en cache des données (ou "In-Memory Computing") pour accélérer la vitesse de traite...

    Read the article

  • Flash Player 10.3 disponible en beta, confidentialité et statistiques sur les contenus à l'honneur

    Player 10.3 disponible en beta Confidentialité et statistiques sur les contenus à l'honneur Pour respecter son nouveau programme d'incubation pour Flash Player et Air axé sur un cycle de développement plus court et recentré sur l'ajout continue de nouvelles fonctionnalités, Adobe vient de mettre à la disposition des développeurs la beta de la version 10.3 de Flash Player. Adobe a ajouté à cette version une nouvelle fonctionnalité,baptisée « Media Measurement » qui offre la possibilité aux fournisseurs de contenus d'obtenir plus d'informations et de retours, comme les statistiques en temps réel sur les vidéos diffusées. Coté vie privée, Flash Player 10.3 intègre les ...

    Read the article

  • Les 11 lois du marketing créatif, de Katalin Berenyi, critique par Youghourta Benali

    Bonjour, La rédaction de DVP a lu pour vous l'ouvrage suivant: Les 11 lois du marketing créatif de Katalin Berenyi [IMG]http://images-eu.amazon.com/images/P/2212549997.08.LZZZZZZZ.jpg[/IMG] Citation: De l'expérience de Katalin Berenyi est née cet ouvrage, véritable condensé d'énergie pour remporter de grands succès et relever les défis marketing de demain : une méthode basée sur les "pas de côté&qu...

    Read the article

  • Maîtriser les flux de données sous Node : partie 2, article de Roly Fentanes traduit par vermine

    Je vous propose une traduction de l'article Mastering Node Streams: Part 2 de Roly Fentanes publié sur DailyJS. Roly Fentanes est un développeur de logiciels qui apprécie travailler avec le JavaScript et particulièrement avec Node.js. Il a d'ailleurs créé plusieurs plugins. Aujourd'hui il désire nous apprendre à maîtriser efficacement les flux de données avec Node car il estime que leur potentiel est trop souvent mis de côté.

    Read the article

  • Sortie de Flash Player 11.4, parallélisation des tâches et accélération 3D au premier plan

    Sortie de Flash Player 11.4 Parallélisation des tâches et accélération 3D au premier plan Adobe vient d'annoncer la sortie de Flash Player 11.4. Diverses anomalies et failles ont été corrigés, dont le bogue rencontré par les utilisateurs de Firefox sous Windows 7, qui occasionnait la perte du focus sous certaines circonstances. Adobe a publié un bulletin de sécurité recensant 6 vulnérabilités critiques (corruption de mémoire, buffer overflow et fuite d'informations interdomaines). [IMG]http://flash.developpez.com/ressources/logo_accueil.gif[/IMG] Côté fonctionnalités, cette nouvelle mise à jour apporte les améliorations suivantes ...

    Read the article

  • Utilisation de la colonne de type XML dans SQL Server 2005 avec ADO.net

    De plus en plus les développeurs, dans leurs applications, doivent faire cohabiter des données relationnelles et des données XML au sein d'une même source de données et le plus souvent optent pour la mauvaise solution. Bonjour, Je viens de finalisé avec mon premier article qui porte sur l'intégration du XML dans Sql Server et le traitement côté client avec ADO.net. Cette discussion est ouverte pour prendre vos commentaires et remarques sur l'article. le lien Cordialement ...

    Read the article

  • Sortie de la version 0.7 de Apache Cassandra, le SGBD NoSQL phare du Cloud Computing, utilisé par Facebook et Twitter

    Sortie de la version 0.7 de Apache Cassandra Le SGBD NoSQL phare du Cloud Computing, utilisé par Facebook et Twitter Mise à jour du 12/01/2011 par Idelways La fondation Apache vient d'annoncer la disponibilité de la version 0.7 de Cassandra, le système de gestion de base de donnée de type NoSQL conçu pour supporter des quantités massives de données. Parmi les nouveautés de cette version, l'arrivée des Indexs Secondaires, une manière efficace d'exécuter des requêtes sur des noeud locaux de stockages côté client. Autre nouveauté, le support des « Large Row », qui permettent d'avoir jusqu'à 2 milliards de co...

    Read the article

  • Maîtriser les flux de données sous Node : partie 1, article de Roly Fentanes traduit par vermine

    Je vous propose une traduction de l'article Mastering Node Streams: Part 1 de Roly Fentanes publié sur DailyJS. Roly Fentanes est un développeur de logiciels qui apprécie travailler avec le JavaScript et particulièrement avec Node.js. Il a d'ailleurs créé plusieurs plugins. Aujourd'hui il désire nous apprendre à maîtriser efficacement les flux de données avec Node car il estime que leur potentiel est trop souvent mis de côté.

    Read the article

  • Suivez l'actualité de la rubrique Mac sur Facebook

    Bonjour, Vous l'aurez peut-être remarqué, la rubrique Mac s'est dotée d'une page Facebook que vous pouvez voir apparaître dans le gabarit en haut à droite à coté des flux de syndication. Cette page vous permet de suivre l'actualité de la rubrique Mac comme sur le portail. C'est un outil de plus que nous vous offrons pour être averti des nouvelles publications de la rubrique Mac. Nous espérons que cette page Facebook sera utile pour certains d'entre vous. L'équipe Mac...

    Read the article

  • amCharts sort en version 3.9, la bibliothèque JavaScript permet d'intégrer des graphiques et des cartes aux pages Web

    amCharts 3.9 : intégrez des graphiques et des cartes à vos pages Web Grâce à cette bibliothèque JavaScript amCharts est une bibliothèque JavaScript graphique avancée et indépendante qui convient à n'importe quel besoin de visualisation de données. Elle propose différents types de graphiques à intégrer dans vos pages Web : en colonnes, linéaires, par zone, en étape, comme un radar, le camembert, les bulles, les jauges, etc. Avec son côté "responsive", cette bibliothèque convient tout...

    Read the article

  • Azure : Mobiles Services et Web Sites entrent en production, l'infrastructure stocke 8,5 trillions d'objets et gère 900 000 transactions par seconde

    Windows Azure : Mobiles Services et Web Sites entrent en production L'infrastructure stocke 8,5 trillions d'objets et gère 900 000 transactions par secondeDisponible en Preview depuis août 2012, Windows Azure Mobiles Services est passé en disponibilité générale (GA) avec Windows Azure Web Sites. Une étape qui marque l'entrée de ces services en phase de production. Pour rappel, Windows Azure Mobile Services est une plateforme Backend as a service (BaaS), qui fournit une solution clef en main dans le Cloud, permettant d'accélérer le développement d'applications connectées côté client.

    Read the article

  • CKFinder 2.4 : un gestionnaire de fichiers pour l'éditeur WYSIWYG CKEditor, intégrez facilement des images dans vos contenus Web

    CKFinder 2.4 : un gestionnaire de fichiers pour l'éditeur WYSIWYG CKEditor Intégrez facilement des images dans vos contenus Web ! CKFinder est un gestionnaire de fichiers utilisant la technologie de l'Ajax. Il est puissant et facile à implémenter dans les navigateurs Web. Cet outil fait suite au CKEditor, un éditeur de texte WYSIWYG, et s'y intègre parfaitement. Il est alors facile d'inclure en toute sécurité des fichiers et des images au contenu créé avec l'éditeur. L'outil présente d'un côté...

    Read the article

  • Chrome 31 : paiement Web, exécution d'applications natives et améliorations de la sécurité, le navigateur sort en version stable

    Chrome 31 : paiement Web, exécution d'applications natives et améliorations de la sécurité le navigateur sort en version stableChrome 31 est disponible en version stable pour Windows, Mac et Linux.Cette nouvelle mouture du navigateur de Google vante essentiellement sa nouvelle fonctionnalité qui permet de remplier les formulaires en ligne avec le moins d'effort possible. Les développeurs peuvent désormais accéder de façon pragmatique aux données distantes stockées localement côté client, grâce...

    Read the article

  • Python 3.4.0a4 disponible en téléchargement, nouvelles fonctions intégrées, amélioration des modules et de la sécurité

    Python 3.4.0a4 disponible en téléchargement, nouvelles fonctions intégrées, amélioration des modules et de la sécurité La Python Software Foundation a publié la quatrième et dernière alpha de Python 3.4. Le langage de programmation objet revient avec de nouveaux modules dans la bibliothèque, de nouvelles fonctions intégrées, une amélioration de la sécurité et également de certains modules. En revanche aucune nouvelle fonctionnalité n'a été apportée à la syntaxe. Côté bibliothèque, Python...

    Read the article

  • Microsoft dévoile la Preview de Windows Azure Mobile Services, qui fournit un Backend pour les applications mobiles et Windows 8

    Microsoft dévoile la Preview de Windows Azure Mobile Services qui fournit un Backend pour les applications mobiles et Windows 8 La plateforme d'hébergement Cloud Windows Azure vient de s'enrichir d'un nouveau service. Microsoft vient d'annoncer l'ouverture de la Preview de Windows Azure Mobile Services pour les développeurs d'applications mobiles et Windows 8. Windows Azure Mobile Services est une plateforme Backend as a services, qui fournit une solution clef en main dans le Cloud, permettant d'accélérer le développement d'applications connectées côté client. Le service rationalise le processus de développement en permettant d'exploiter le Cloud pour des scénario...

    Read the article

  • Ubuntu 13.10 sort en version stable, Saucy Salamander améliore la fonction de recherche Dash et les performances de l'OS Linux

    Ubuntu 13.10 sort en version stable l'OS Linux améliore sa fonction de recherche Dash et ses performancesAlors que Microsoft dévoilait au grand public Windows 8.1, du côté de l'open source, les feux des projecteurs étaient braqués sur Ubuntu 13.10, alias Saucy Salamander.Canonical vient de mettre à la disposition des utilisateurs, la dernière version de la célèbre distribution Linux, qui apporte juste quelques nouvelles fonctionnalités. Selon Canonical, l'attention des développeurs était portée...

    Read the article

  • Ottawa Code Camp 2010 pictures

    - by guybarrette
    The Ottawa Code Camp IT Day 2010 took place over the weekend.  With about 130 attendees, it was a great success according to Jean-René Roy, one of the organizers. Pictures are available here var addthis_pub="guybarrette";

    Read the article

  • www-data mkdir - Permission denied after update

    - by user788721
    I updated my server from lenny to squeeze and Ispconfig. I got everything back in place except a right problems. if i us "mkdir" with php i get : permission denied. whoami return : "www-data" File owner are like before (for example web54:client4), same for directory Ftp user work fine, create new file and edit file with the same right (web54:client4) I don't understand why it does'nt work in php and I don't have any idea where to look now ? Thanks for your help, Francois

    Read the article

  • Le Gouvernement français fait le choix du Logiciel Libre pour l'Etat, que pensez-vous de cette décision ?

    Le Gouvernement français fait le choix du Logiciel Libre pour l'Etat Que pensez-vous de cette décision ? Edit de Gordon Fowler, le 27/09/12 : ajout des avantages, des limites et des questions de la circulaire Dans une circulaire adressée à tous les membres du gouvernement intitulée "Orientations pour l'usage des logiciels libres dans l'administration", le Premier ministre, Jean-Marc Ayrault, a recommandé l'usage des logiciels libres tout en soulignant leurs avantages dans différents domaines. Cette initiative, faisant suite à la circulaire Fillon sur la généralisation de l'usage des formats ouverts, est fruit d'un travail animé par la d...

    Read the article

  • How to display different value with ComboBoxTableCell?

    - by Philippe Jean
    I try to use ComboxBoxTableCell without success. The content of the cell display the right value for the attribute of an object. But when the combobox is displayed, all items are displayed with the toString object method and not the attribute. I tryed to override updateItem of ComboBoxTableCell or to provide a StringConverter but nothing works. Do you have some ideas to custom comboxbox list display in a table cell ? I put a short example below to see quickly the problem. Execute the app and click in the cell, you will see the combobox with toString value of the object. package javafx2; import javafx.application.Application; import javafx.beans.property.adapter.JavaBeanObjectPropertyBuilder; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.Scene; import javafx.scene.control.TableCell; import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn.CellDataFeatures; import javafx.scene.control.TableView; import javafx.scene.control.cell.ComboBoxTableCell; import javafx.stage.Stage; import javafx.util.Callback; import javafx.util.StringConverter; public class ComboBoxTableCellTest extends Application { public class Product { private String name; public Product(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } public class Command { private Integer quantite; private Product product; public Command(Product product, Integer quantite) { this.product = product; this.quantite = quantite; } public Integer getQuantite() { return quantite; } public void setQuantite(Integer quantite) { this.quantite = quantite; } public Product getProduct() { return product; } public void setProduct(Product product) { this.product = product; } } public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) throws Exception { Product p1 = new Product("Product 1"); Product p2 = new Product("Product 2"); final ObservableList<Product> products = FXCollections.observableArrayList(p1, p2); ObservableList<Command> commands = FXCollections.observableArrayList(new Command(p1, 20)); TableView<Command> tv = new TableView<Command>(); tv.setItems(commands); TableColumn<Command, Product> tc = new TableColumn<Command, Product>("Product"); tc.setMinWidth(140); tc.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Command,Product>, ObservableValue<Product>>() { @Override public ObservableValue<Product> call(CellDataFeatures<Command, Product> cdf) { try { JavaBeanObjectPropertyBuilder<Product> jbdpb = JavaBeanObjectPropertyBuilder.create(); jbdpb.bean(cdf.getValue()); jbdpb.name("product"); return (ObservableValue) jbdpb.build(); } catch (NoSuchMethodException e) { System.err.println(e.getMessage()); } return null; } }); final StringConverter<Product> converter = new StringConverter<ComboBoxTableCellTest.Product>() { @Override public String toString(Product p) { return p.getName(); } @Override public Product fromString(String s) { // TODO Auto-generated method stub return null; } }; tc.setCellFactory(new Callback<TableColumn<Command,Product>, TableCell<Command,Product>>() { @Override public TableCell<Command, Product> call(TableColumn<Command, Product> tc) { return new ComboBoxTableCell<Command, Product>(converter, products) { @Override public void updateItem(Product product, boolean empty) { super.updateItem(product, empty); if (product != null) { setText(product.getName()); } } }; } }); tv.getColumns().add(tc); tv.setEditable(true); Scene scene = new Scene(tv, 140, 200); stage.setScene(scene); stage.show(); } }

    Read the article

  • JsTree v1.0 - How to manipulate effectively the data from the backend to render the trees and operate correctly?

    - by Jean Paul
    Backend info: PHP 5 / MySQL URL: http://github.com/downloads/vakata/jstree/jstree_pre1.0_fix_1.zip Table structure for table discussions_tree -- CREATE TABLE IF NOT EXISTS `discussions_tree` ( `id` int(11) NOT NULL AUTO_INCREMENT, `parent_id` int(11) NOT NULL DEFAULT '0', `user_id` int(11) NOT NULL DEFAULT '0', `label` varchar(16) DEFAULT NULL, `position` bigint(20) unsigned NOT NULL DEFAULT '0', `left` bigint(20) unsigned NOT NULL DEFAULT '0', `right` bigint(20) unsigned NOT NULL DEFAULT '0', `level` bigint(20) unsigned NOT NULL DEFAULT '0', `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, `h_label` varchar(16) NOT NULL DEFAULT '', `fulllabel` varchar(255) DEFAULT NULL, UNIQUE KEY `uidx_3` (`id`), KEY `idx_1` (`user_id`), KEY `idx_2` (`parent_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ; /*The first element should in my understanding not even be shown*/ INSERT INTO `discussions_tree` (`id`, `parent_id`, `user_id`, `label`, `position`, `left`, `right`, `level`, `type`, `h_label`, `fulllabel`) VALUES (0, 0, 0, 'Contacts', 0, 1, 1, 0, NULL, '', NULL); INSERT INTO `discussions_tree` (`id`, `parent_id`, `user_id`, `label`, `position`, `left`, `right`, `level`, `type`, `h_label`, `fulllabel`) VALUES (1, 0, 0, 'How to Tag', 1, 2, 2, 0, 'drive', '', NULL); Front End : I've simplified the logic, it has 6 trees actually inside of a panel and that works fine $array = array("Discussions"); $id_arr = array("d"); $nid = 0; foreach ($array as $k=> $value) { $nid++; ?> <li id="<?=$value?>" class="label"> <a href='#<?=$value?>'><span> <?=$value?> </span></a> <div class="sub-menu" style="height:auto; min-height:120px; background-color:#E5E5E5" > <div class="menu" id="menu_<?=$id_arr[$k]?>" style="position:relative; margin-left:56%"> <img src="./js/jsTree/create.png" alt="" id="create" title="Create" > <img src="./js/jsTree/rename.png" alt="" id="rename" title="Rename" > <img src="./js/jsTree/remove.png" alt="" id="remove" title="Delete"> <img src="./js/jsTree/cut.png" alt="" id="cut" title="Cut" > <img src="./js/jsTree/copy.png" alt="" id="copy" title="Copy"> <img src="./js/jsTree/paste.png" alt="" id="paste" title="Paste"> </div> <div id="<?=$id_arr[$k]?>" class="jstree_container"></div> </div> </li> <!-- JavaScript neccessary for this tree : <?=$value?> --> <script type="text/javascript" > jQuery(function ($) { $("#<?=$id_arr[$k]?>").jstree({ // List of active plugins used "plugins" : [ "themes", "json_data", "ui", "crrm" , "hotkeys" , "types" , "dnd", "contextmenu"], // "ui" :{ "initially_select" : ["#node_"+ $nid ] } , "crrm": { "move": { "always_copy": "multitree" }, "input_width_limit":128 }, "core":{ "strings":{ "new_node" : "New Tag" }}, "themes": {"theme": "classic"}, "json_data" : { "ajax" : { "url" : "./js/jsTree/server-<?=$id_arr[$k]?>.php", "data" : function (n) { // the result is fed to the AJAX request `data` option return { "operation" : "get_children", "id" : n.attr ? n.attr("id").replace("node_","") : 1, "state" : "", "user_id": <?=$uid?> }; } } } , "types" : { "max_depth" : -1, "max_children" : -1, "types" : { // The default type "default" : { "hover_node":true, "valid_children" : [ "default" ], }, // The `drive` nodes "drive" : { // can have files and folders inside, but NOT other `drive` nodes "valid_children" : [ "default", "folder" ], "hover_node":true, "icon" : { "image" : "./js/jsTree/root.png" }, // those prevent the functions with the same name to be used on `drive` nodes.. internally the `before` event is used "start_drag" : false, "move_node" : false, "remove_node" : false } } }, "contextmenu" : { "items" : customMenu , "select_node": true} }) //Hover function binded to jstree .bind("hover_node.jstree", function (e, data) { $('ul li[rel="drive"], ul li[rel="default"], ul li[rel=""]').each(function(i) { $(this).find("a").attr('href', $(this).attr("id")+".php" ); }) }) //Create function binded to jstree .bind("create.jstree", function (e, data) { $.post( "./js/jsTree/server-<?=$id_arr[$k]?>.php", { "operation" : "create_node", "id" : data.rslt.parent.attr("id").replace("node_",""), "position" : data.rslt.position, "label" : data.rslt.name, "href" : data.rslt.obj.attr("href"), "type" : data.rslt.obj.attr("rel"), "user_id": <?=$uid?> }, function (r) { if(r.status) { $(data.rslt.obj).attr("id", "node_" + r.id); } else { $.jstree.rollback(data.rlbk); } } ); }) //Remove operation .bind("remove.jstree", function (e, data) { data.rslt.obj.each(function () { $.ajax({ async : false, type: 'POST', url: "./js/jsTree/server-<?=$id_arr[$k]?>.php", data : { "operation" : "remove_node", "id" : this.id.replace("node_",""), "user_id": <?=$uid?> }, success : function (r) { if(!r.status) { data.inst.refresh(); } } }); }); }) //Rename operation .bind("rename.jstree", function (e, data) { data.rslt.obj.each(function () { $.ajax({ async : true, type: 'POST', url: "./js/jsTree/server-<?=$id_arr[$k]?>.php", data : { "operation" : "rename_node", "id" : this.id.replace("node_",""), "label" : data.rslt.new_name, "user_id": <?=$uid?> }, success : function (r) { if(!r.status) { data.inst.refresh(); } } }); }); }) //Move operation .bind("move_node.jstree", function (e, data) { data.rslt.o.each(function (i) { $.ajax({ async : false, type: 'POST', url: "./js/jsTree/server-<?=$id_arr[$k]?>.php", data : { "operation" : "move_node", "id" : $(this).attr("id").replace("node_",""), "ref" : data.rslt.cr === -1 ? 1 : data.rslt.np.attr("id").replace("node_",""), "position" : data.rslt.cp + i, "label" : data.rslt.name, "copy" : data.rslt.cy ? 1 : 0, "user_id": <?=$uid?> }, success : function (r) { if(!r.status) { $.jstree.rollback(data.rlbk); } else { $(data.rslt.oc).attr("id", "node_" + r.id); if(data.rslt.cy && $(data.rslt.oc).children("UL").length) { data.inst.refresh(data.inst._get_parent(data.rslt.oc)); } } } }); }); }); // This is for the context menu to bind with operations on the right clicked node function customMenu(node) { // The default set of all items var control; var items = { createItem: { label: "Create", action: function (node) { return {createItem: this.create(node) }; } }, renameItem: { label: "Rename", action: function (node) { return {renameItem: this.rename(node) }; } }, deleteItem: { label: "Delete", action: function (node) { return {deleteItem: this.remove(node) }; }, "separator_after": true }, copyItem: { label: "Copy", action: function (node) { $(node).addClass("copy"); return {copyItem: this.copy(node) }; } }, cutItem: { label: "Cut", action: function (node) { $(node).addClass("cut"); return {cutItem: this.cut(node) }; } }, pasteItem: { label: "Paste", action: function (node) { $(node).addClass("paste"); return {pasteItem: this.paste(node) }; } } }; // We go over all the selected items as the context menu only takes action on the one that is right clicked $.jstree._reference("#<?=$id_arr[$k]?>").get_selected(false, true).each(function(index,element) { if ( $(element).attr("id") != $(node).attr("id") ) { // Let's deselect all nodes that are unrelated to the context menu -- selected but are not the one right clicked $("#<?=$id_arr[$k]?>").jstree("deselect_node", '#'+$(element).attr("id") ); } }); //if any previous click has the class for copy or cut $("#<?=$id_arr[$k]?>").find("li").each(function(index,element) { if ($(element) != $(node) ) { if( $(element).hasClass("copy") || $(element).hasClass("cut") ) control=1; } else if( $(node).hasClass("cut") || $(node).hasClass("copy")) { control=0; } }); //only remove the class for cut or copy if the current operation is to paste if($(node).hasClass("paste") ) { control=0; // Let's loop through all elements and try to find if the paste operation was done already $("#<?=$id_arr[$k]?>").find("li").each(function(index,element) { if( $(element).hasClass("copy") ) $(this).removeClass("copy"); if ( $(element).hasClass("cut") ) $(this).removeClass("cut"); if ( $(element).hasClass("paste") ) $(this).removeClass("paste"); }); } switch (control) { //Remove the paste item from the context menu case 0: switch ($(node).attr("rel")) { case "drive": delete items.renameItem; delete items.deleteItem; delete items.cutItem; delete items.copyItem; delete items.pasteItem; break; case "default": delete items.pasteItem; break; } break; //Remove the paste item from the context menu only on the node that has either copy or cut added class case 1: if( $(node).hasClass("cut") || $(node).hasClass("copy") ) { switch ($(node).attr("rel")) { case "drive": delete items.renameItem; delete items.deleteItem; delete items.cutItem; delete items.copyItem; delete items.pasteItem; break; case "default": delete items.pasteItem; break; } } else //Re-enable it on the clicked node that does not have the cut or copy class { switch ($(node).attr("rel")) { case "drive": delete items.renameItem; delete items.deleteItem; delete items.cutItem; delete items.copyItem; break; } } break; //initial state don't show the paste option on any node default: switch ($(node).attr("rel")) { case "drive": delete items.renameItem; delete items.deleteItem; delete items.cutItem; delete items.copyItem; delete items.pasteItem; break; case "default": delete items.pasteItem; break; } break; } return items; } $("#menu_<?=$id_arr[$k]?> img").hover( function () { $(this).css({'cursor':'pointer','outline':'1px double teal'}) }, function () { $(this).css({'cursor':'none','outline':'1px groove transparent'}) } ); $("#menu_<?=$id_arr[$k]?> img").click(function () { switch(this.id) { //Create only the first element case "create": if ( $.jstree._reference("#<?=$id_arr[$k]?>").get_selected(false, true).length ) { $.jstree._reference("#<?=$id_arr[$k]?>").get_selected(false, true).each(function(index,element){ switch(index) { case 0: $("#<?=$id_arr[$k]?>").jstree("create", '#'+$(element).attr("id"), null, /*{attr : {href: '#' }}*/null ,null, false); break; default: $("#<?=$id_arr[$k]?>").jstree("deselect_node", '#'+$(element).attr("id") ); break; } }); } else { $.facebox('<p class=\'p_inner error bold\'>A selection needs to be made to work with this operation'); setTimeout(function(){ $.facebox.close(); }, 2000); } break; //REMOVE case "remove": if ( $.jstree._reference("#<?=$id_arr[$k]?>").get_selected(false, true).length ) { $.jstree._reference("#<?=$id_arr[$k]?>").get_selected(false, true).each(function(index,element){ //only execute if the current node is not the first one (drive) if( $(element).attr("id") != $("div.jstree > ul > li").first().attr("id") ) { $("#<?=$id_arr[$k]?>").jstree("remove",'#'+$(element).attr("id")); } else $("#<?=$id_arr[$k]?>").jstree("deselect_node", '#'+$(element).attr("id") ); }); } else { $.facebox('<p class=\'p_inner error bold\'>A selection needs to be made to work with this operation'); setTimeout(function(){ $.facebox.close(); }, 2000); } break; //RENAME NODE only one selection case "rename": if ( $.jstree._reference("#<?=$id_arr[$k]?>").get_selected(false, true).length ) { $.jstree._reference("#<?=$id_arr[$k]?>").get_selected(false, true).each(function(index,element){ if( $(element).attr("id") != $("div.jstree > ul > li").first().attr("id") ) { switch(index) { case 0: $("#<?=$id_arr[$k]?>").jstree("rename", '#'+$(element).attr("id") ); break; default: $("#<?=$id_arr[$k]?>").jstree("deselect_node", '#'+$(element).attr("id") ); break; } } else $("#<?=$id_arr[$k]?>").jstree("deselect_node", '#'+$(element).attr("id") ); }); } else { $.facebox('<p class=\'p_inner error bold\'>A selection needs to be made to work with this operation'); setTimeout(function(){ $.facebox.close(); }, 2000); } break; //Cut case "cut": if ( $.jstree._reference("#<?=$id_arr[$k]?>").get_selected(false, true).length ) { $.jstree._reference("#<?=$id_arr[$k]?>").get_selected(false, true).each(function(index,element){ switch(index) { case 0: $("#<?=$id_arr[$k]?>").jstree("cut", '#'+$(element).attr("id")); $.facebox('<p class=\'p_inner teal\'>Operation "Cut" successfully done.<p class=\'p_inner teal bold\'>Where to place it?'); setTimeout(function(){ $.facebox.close(); $("#<?=$id_arr[$k]?>").jstree("deselect_node", '#'+$(element).attr("id")); }, 2000); break; default: $("#<?=$id_arr[$k]?>").jstree("deselect_node", '#'+$(element).attr("id") ); break; } }); } else { $.facebox('<p class=\'p_inner error bold\'>A selection needs to be made to work with this operation'); setTimeout(function(){ $.facebox.close(); }, 2000); } break; //Copy case "copy": if ( $.jstree._reference("#<?=$id_arr[$k]?>").get_selected(false, true).length ) { $.jstree._reference("#<?=$id_arr[$k]?>").get_selected(false, true).each(function(index,element){ switch(index) { case 0: $("#<?=$id_arr[$k]?>").jstree("copy", '#'+$(element).attr("id")); $.facebox('<p class=\'p_inner teal\'>Operation "Copy": Successfully done.<p class=\'p_inner teal bold\'>Where to place it?'); setTimeout(function(){ $.facebox.close(); $("#<?=$id_arr[$k]?>").jstree("deselect_node", '#'+$(element).attr("id") ); }, 2000); break; default: $("#<?=$id_arr[$k]?>").jstree("deselect_node", '#'+$(element).attr("id") ); break; } }); } else { $.facebox('<p class=\'p_inner error bold\'>A selection needs to be made to work with this operation'); setTimeout(function(){ $.facebox.close(); }, 2000); } break; case "paste": if ( $.jstree._reference("#<?=$id_arr[$k]?>").get_selected(false, true).length ) { $.jstree._reference("#<?=$id_arr[$k]?>").get_selected(false, true).each(function(index,element){ switch(index) { case 0: $("#<?=$id_arr[$k]?>").jstree("paste", '#'+$(element).attr("id")); break; default: $("#<?=$id_arr[$k]?>").jstree("deselect_node", '#'+$(element).attr("id") ); break; } }); } else { $.facebox('<p class=\'p_inner error bold\'>A selection needs to be made to work with this operation'); setTimeout(function(){ $.facebox.close(); }, 2000); } break; } }); <? } ?> server.php $path='../../../..'; require_once "$path/phpfoo/dbif.class"; require_once "$path/global.inc"; // Database config & class $db_config = array( "servername"=> $dbHost, "username" => $dbUser, "password" => $dbPW, "database" => $dbName ); if(extension_loaded("mysqli")) require_once("_inc/class._database_i.php"); else require_once("_inc/class._database.php"); //Tree class require_once("_inc/class.ctree.php"); $dbLink = new dbif(); $dbErr = $dbLink->connect($dbName,$dbUser,$dbPW,$dbHost); $jstree = new json_tree(); if(isset($_GET["reconstruct"])) { $jstree->_reconstruct(); die(); } if(isset($_GET["analyze"])) { echo $jstree->_analyze(); die(); } $table = '`discussions_tree`'; if($_REQUEST["operation"] && strpos($_REQUEST["operation"], "_") !== 0 && method_exists($jstree, $_REQUEST["operation"])) { foreach($_REQUEST as $k => $v) { switch($k) { case 'user_id': //We are passing the user_id from the $_SESSION on each request and trying to pick up the min and max value from the table that matches the 'user_id' $sql = "SELECT max(`right`) , min(`left`) FROM $table WHERE `user_id`=$v"; //If the select does not return any value then just let it be :P if (!list($right, $left)=$dbLink->getRow($sql)) { $sql = $dbLink->dbSubmit("UPDATE $table SET `user_id`=$v WHERE `id` = 1 AND `parent_id` = 0"); $sql = $dbLink->dbSubmit("UPDATE $table SET `user_id`=$v WHERE `parent_id` = 1 AND `label`='How to Tag' "); } else { $sql = $dbLink->dbSubmit("UPDATE $table SET `user_id`=$v, `right`=$right+2 WHERE `id` = 1 AND `parent_id` = 0"); $sql = $dbLink->dbSubmit("UPDATE $table SET `user_id`=$v, `left`=$left+1, `right`=$right+1 WHERE `parent_id` = 1 AND `label`='How to Tag' "); } break; } } header("HTTP/1.0 200 OK"); header('Content-type: application/json; charset=utf-8'); header("Cache-Control: no-cache, must-revalidate"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Pragma: no-cache"); echo $jstree->{$_REQUEST["operation"]}($_REQUEST); die(); } header("HTTP/1.0 404 Not Found"); ?> The problem: DND *(Drag and Drop) works, Delete works, Create works, Rename works, but Copy, Cut and Paste don't work

    Read the article

< Previous Page | 6 7 8 9 10 11 12 13 14 15 16 17  | Next Page >