Jeremy David Pointer wrote: > I'm not sure I'm getting to where your problem actually is because you > haven't told us what is or is not happening. > But....... > 0. I'm using Cake 1.2 so some things might be different > 1. I don't see why you would want to redraw the tree, when I do this I > set up a div below the tree that's a simple 'Updated' view rendered into > it after the save completes. i.e. don't update the div with the tree in > it but rather another div to indicate whether the save was successful or > not. > 1a. If you really want to redraw the tree the place to do it would be in > the 'save' view (which you haven't included) > > 2. I see the ajax is supposed to submit with an interval which could > work but you seem to be missing a 'before' option in the $ajax->submit > that would call your saveMyTree_byForm(), it's just my preference but I > tend to use a combination of onkeypress/onmouseout of the tree div to > update the hidden field and only submit the form when a save button is > pressed since the save button is outside the div the hidden field will > be updated before the button is clicked, the onkeypress is in case the > keyboard is used to submit i.e. the enter key. In this way I'm not > unecessarily repeatedly posting to the server. > > So in the view: > <div ...... > onmouseout="document.getElementById('ModuleSavestring').value=treeObj<?=$uniq;?>.getSaveString();" > onkeypress=(same as above)..... >The tree</div> > <div id="updateTree"></div> > <input type="hidden" value="" id="ModuleSavestring" > name="data[Savestring]" /> > <?php echo $ajax->submit('Save > Tree',array("update"=>"updateTree".$uniq,"url"=>"updateTree")); ?> > > oops just ignore the .$uniq above the rest of the form that I'm took this from is complex with the possibility of multiple div's have the same name in a dhtml tabbed layout so nearly all my divs have .$uniq to uniquely identify them. > 3. Maybe I'm being dof (Afrikaans word for dim) but in my controller > side save method I parse the variable containing the hidden field and > save the items one by one ala > (this example only works to two levels of the menu): > > 4. For interest sake my initial menu is populated by > model->findAllThreaded() > > function updateTree() { > if (!empty($this->data)) { > $nodes=split(',',$this->data['Savestring']); > $vals=array(); > foreach($nodes as $val) { > $vals[]=split('-',$val); > } > $modids=$this->data['Module']; > $modids[0]=0; > $modules=array(); > foreach($vals as $order=>$record) { > $modules[$order]['Module']['id']=$modids[$record[0]]; > $modules[$order]['Module']['parent_id']=$modids[$record[1]]; > $modules[$order]['Module']['order']=$order; > } > $this->data['Module']=$modules; > foreach($modules as $module) $this->Module->save($module); > $this->render('updatetree'); > } > } > > HTH > Jeremy > noso wrote: > >> Hi everybody! >> >> I have a problem with posting a form. >> I use the tree Ajax component of DhtmlGoodies (http:// >> www.dhtmlgoodies.com/scripts/drag-drop-folder-tree/drag-drop-folder-tree.html) >> and I want to save it's structureString to the database. The problem >> is that it uses a javascript code to fill the hidden field in the >> form. >> >> ================================================================ >> <!-- edit.thtml --> >> ================================================================ >> <div id="menuTree_edit"> >> <ul id="menuTreeContainer" class="DHTMLSuite_tree"> >> <li id="node_10000" noDrag="true"><a href="#">MenuBar</a> >> <ul> >> #### TREE STRUCTURE #### >> </ul> >> </li> >> </ul> >> </div> >> >> <?= $ajax->form(array('action'=>$html->url('save')));?> >> <?= $html->hidden('menu_builder/saveString', array('id' => >> 'saveString', 'value' => 'none', 'size' => '40')) ?> >> <?= $ajax->submit('save tree',array('url'=>'save', >> 'update'=>'menuTree_edit', 'frequency'=>'2')); ?> >> >> function saveMyTree_byForm() >> { >> document.myForm.elements['saveString'].value = >> treeObj.getSaveString(); >> document.myForm.submit(); >> } >> >> ================================================================ >> >> ok then I have my controllerclass >> >> ================================================================ >> <!-- menu_builder_controller.php --> >> ================================================================ >> class MenuBuilderController extends AppController { >> var $name = 'MenuBuilder'; >> var $helpers = array('Html', 'Javascript', 'Ajax'); >> //var $components = array('RequestHandler'); >> >> var $myMenuItems = array(); >> var $TreeData=array(); >> >> function index() >> { >> $this->myMenuItems = $this->MenuBuilder->findAll(); >> >> $this->set('menubuilder', $this->myMenuItems); >> if(isset($this->params['requested'])) { >> return $this->myMenuItems; >> } >> } >> >> function edit(){ >> $this->myMenuItems = $this->MenuBuilder->findAll(); >> $this->set('menubuilder', $this->myMenuItems); >> } >> >> function save(){ >> $success = true; >> $succesMessage = 'Menu update successfully'; >> if (empty($this->data)){ >> $success = false; >> $errorMessage = "Error in menu updating - no >> data"; >> }else{ >> ### some building code ## >> $this->MenuBuilder- >> >> >>> save(array('MenuBuilder' => $this->params['data']['item'] >>> >>> >> ['MenuBuilder'])); >> >> } >> $this->render('save', 'ajax'); >> } >> >> ================================================================ >> >> Can somebody tell me how I post my form with the saveString with Ajax >> and refresh the result in the edit.thtml menuTree_edit-div. So if I >> click save the data is saved and my tree-view updates in the right >> region of the screen. >> >> Thanks in advance! >> Greetings to you all! >> >> >> >>> >>> > > > >
--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Cake PHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---