Guest User

Untitled

a guest
Jun 19th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 26.02 KB | None | 0 0
  1. Gallery = {};
  2. Gallery.photos = {
  3. init: function(roles,userid) {
  4. var allow_file_drop = true;
  5. var photo_ids = [];
  6. var gallery_text = "";
  7. var gallery_selected_id = 0;
  8.  
  9. // create gallery node or file manage node
  10. function add_tbar(tree, text, url, type){
  11. var icon_name = 'file_node';
  12. if ( type == 'gallery' ){
  13. icon_name = 'album_node';
  14. }
  15. var new_node = new Ext.tree.TreeNode({
  16. text: text,
  17. iconCls: icon_name,
  18. allowDrag: false
  19. });
  20. var node = tree.root.appendChild(new_node);
  21. var ge = new Ext.tree.TreeEditor(tree, {
  22. allowBlank:false,
  23. blankText:'A name is required'
  24. });
  25. ge.on("complete", function(){
  26. Ext.Ajax.request({
  27. url: url,
  28. method: 'POST',
  29. params: {
  30. node_name: node.text
  31. },
  32. success: function(response,request){
  33. node.id = Ext.decode(response.responseText).id;
  34. node.attributes.name = node.text;
  35. node.setText(node.text + '(0)');
  36. },
  37. failure: function(result,request){
  38. Ext.MessageBox.alert('Tip','failure!');
  39. }
  40. });
  41. });
  42. tree.getSelectionModel().select(node);
  43. setTimeout(function(){
  44. ge.editNode = node;
  45. ge.startEdit(node.ui.textNode);
  46. }, 10);
  47. }
  48.  
  49. // implement gallery or file management operation like the right mouse button, include rename, delete, show.
  50. function menu_manipulate(Gallery, tree, node, e, delete_url, update_url){
  51. e.preventDefault();
  52. node.select();
  53. var treeRightMenu = new Ext.menu.Menu({
  54. id: Gallery+'menu',
  55. items:[{
  56. id:'rename_' + Gallery,
  57. text:'Rename ' + Gallery
  58. }]
  59. });
  60. if(roles == 'galleryC' || Gallery == 'Folder'){
  61. treeRightMenu.addMenuItem({
  62. id:'delete_' + Gallery,
  63. text:'Delete ' + Gallery
  64. });
  65.  
  66. //delete gallery or file
  67. var delete_node = 'delete_' + Gallery;
  68. Ext.getCmp(delete_node).on('click',function(){
  69. var selectedNode = tree.getSelectionModel().getSelectedNode();
  70. if (selectedNode.attributes.recycle)
  71. {
  72. Ext.MessageBox.alert('Tip',"You can't delete Recycle bin!");
  73. return;
  74. }
  75. selectedNode.remove();
  76. Ext.Ajax.request({
  77. url: delete_url,
  78. method: 'DELETE',
  79. params: {
  80. select_node_id: selectedNode.id
  81. },
  82. success: function(response,request){
  83. view.store.baseParams = {};
  84. view.store.reload();
  85. images.setTitle("The latest uploded photos");
  86. },
  87. failure: function(result,request){
  88. Ext.MessageBox.alert('Tip','failure!');
  89. }
  90. });
  91. });
  92. // delete gallery end
  93. }
  94.  
  95. // rename gallery
  96. var rename_node = 'rename_' + Gallery;
  97. Ext.getCmp(rename_node).on('click',function(){
  98. var treeEditor = new Ext.tree.TreeEditor(
  99. tree,
  100. {
  101. allowBlank: false
  102. }
  103. );
  104. var selectedNode = tree.getSelectionModel().getSelectedNode();
  105. if (selectedNode.attributes.recycle)
  106. {
  107. Ext.MessageBox.alert('Tip',"You can't Rename Recycle bin!");
  108. return;
  109. }
  110. treeEditor.editNode = selectedNode;
  111. treeEditor.startEdit(selectedNode.ui.textNode,selectedNode.attributes.name);
  112. treeEditor.on("complete", function(treeEditer){
  113. Ext.Ajax.request({
  114. url: update_url,
  115. method: 'PUT',
  116. params: {
  117. node_id: selectedNode.id ,
  118. node_name: selectedNode.text
  119. },
  120. success: function(response,request){
  121. selectedNode.setText(selectedNode.text + "("+ Ext.decode(response.responseText).photos_num + ")");
  122. },
  123. failure: function(result,request){
  124. Ext.MessageBox.alert('Tip','failure!');
  125. }
  126. });
  127. });
  128. });
  129. treeRightMenu.showAt(e.getXY());
  130. }
  131.  
  132. // user space info.
  133. var infos = new Ext.Panel({
  134. id: 'info',
  135. title: 'Information',
  136. width: 200,
  137. heigth:400,
  138. bodyStyle: 'padding-bottom:15px;background:#eee;',
  139. contentEl:'infos'
  140. });
  141.  
  142. // photos info
  143. var photo_info = new Ext.Panel({
  144. id: 'photo_info',
  145. title: 'Photo Information',
  146. width: 200,
  147. heigth:400,
  148. contentEl: 'photo_infos'
  149. });
  150.  
  151. // define store of data view, provide photos data
  152. var view_store = new Ext.data.JsonStore({
  153. totalProperty: 'totalProperty',
  154. url: '/photos/index.json',
  155. root: 'root',
  156. id:'url',
  157. fields:[
  158. 'name', 'url','id',
  159. {
  160. name: 'shortName',
  161. mapping: 'name',
  162. convert: shortName
  163. }
  164. ]
  165. });
  166.  
  167. // define data view, show photos
  168. var view = new Ext.DataView({
  169. itemSelector: 'div.image_show',
  170. style:'overflow:auto',
  171. id: 'view_photo',
  172. multiSelect: true,
  173. plugins: new Ext.DataView.DragSelector({
  174. dragSafe:true
  175. }),
  176. // store: view_store,
  177. tpl: new Ext.XTemplate(
  178. '<tpl for=".">',
  179. '<div class = "image_show" id="photo_{id}">',
  180. '<div class="thumb-wrap" id="{url}">',
  181. '<div class="thumb"><a href="/photos/show_photo?id={id}"><img src="/uploads/{url}" class="thumb-img"></a></div></div>',
  182. '<span><a href="/photos/show_photo?id={id}">{shortName}</a></span></div>',
  183. '</tpl>'
  184. ),
  185. listeners: {
  186. 'render': initdropzone
  187. }
  188. });
  189. function initdropzone(id)
  190. { var self = this;
  191. ImageDragZone = function(config){
  192. this.view = id;
  193. ImageDragZone.superclass.constructor.call(this, id.getEl(), config);
  194. };
  195.  
  196. ImageDropZone = function(config){
  197. this.view = id;
  198. ImageDropZone.superclass.constructor.call(this, id.getEl(), config);
  199. };
  200. Ext.extend(ImageDropZone, Ext.dd.DropZone, {
  201. getTargetFromEvent: function(e) {
  202. return e.getTarget('.image_show');
  203. },
  204. onNodeEnter: function(nodeData,source,e,data){
  205.  
  206.  
  207. },
  208. onInvalidDrop: function(){
  209. //console.log('that was invalid'); //Need to send back to original location or maybe snap to closets possible valid location.
  210. //this.validDrop=0;
  211. },
  212.  
  213. onNodeDrop : function(target, dd, e, data){
  214. console.log("endddddddddddddd")
  215. // var rowIndexTarget = id.getRecord(target).data.id;
  216.  
  217. // var rowIndexSource = data.officeData.officeId;
  218. self.tar = target;
  219. self.da = data.sourceEl;
  220. alert("target: " + Ext.get(target).id);
  221. alert("v: " + id.getEl().id);
  222.  
  223. //Ext.get(data.sourceEl).insertBefore(target);
  224.  
  225. // alert("FROM: " + rowIndexSource + " : TO : " + rowIndexTarget);
  226.  
  227.  
  228. //var rowIndex = g.getView().findRowIndex(target);
  229. //var h = g.getStore().getAt(rowIndex);
  230. // Ext.Msg.alert('Drop gesture', 'Dropped patient ' + data.patientData.name +
  231. //' on hospital ' + h.data.name);
  232. return false;
  233. }
  234. })
  235. Ext.extend(ImageDragZone, Ext.dd.DragZone, {
  236. getDragData : function(e){
  237. var target = e.getTarget('.image_show');
  238. var sourceEl = e.getTarget(id.itemSelector, 10);
  239. if(target){
  240. var view = this.view;
  241. if(!view.isSelected(target)){
  242. // view.onClick(e);
  243. var vs=view.getSelectedNodes()
  244. // Ext.getCmp("photo_info").load({
  245. // url: '/photos/photo_info?id='+view.getRecord(vs[0]).data.id
  246. // });
  247. }
  248. var selNodes = view.getSelectedNodes();
  249. var dragData = {
  250. nodes: selNodes,
  251. sourceEl: sourceEl
  252. };
  253. if(selNodes.length == 1){
  254. dragData.ddel = target;
  255. dragData.single = true;
  256. }else{
  257. var div = document.createElement('div'); // create the multi element drag "ghost"
  258. div.className = 'multi-proxy';
  259. for(var i = 0, len = selNodes.length; i < len; i++){
  260. div.appendChild(selNodes[i].firstChild.firstChild.cloneNode(true)); // image nodes only
  261. if((i+1) % 3 == 0){
  262. div.appendChild(document.createElement('br'));
  263. }
  264. }
  265. var count = document.createElement('div'); // selected image count
  266. count.innerHTML = i + ' images selected';
  267. div.appendChild(count);
  268. dragData.ddel = div;
  269. dragData.multi = true;
  270. }
  271. return dragData;
  272. }
  273. return false;
  274. },
  275. getTreeNode : function(){
  276. var treeNodes = [];
  277. var photos = [];
  278. var nodeData = this.view.getRecords(this.dragData.nodes);
  279. for(var i = 0, len = nodeData.length; i < len; i++){
  280. var data = nodeData[i].data;
  281. photos.push(data.id);
  282. }
  283. photo_ids =photos;
  284. },
  285. startDrag: function(x, y){
  286. this.dragEl = Ext.get(this.getDragEl()); //Get the element being dragged.
  287. this.el = Ext.get(this.getEl()).stopFx().setOpacity(.5); //Set the item left behind to partially transparent.
  288. this.dragEl.update(this.el.dom.innerHTML);
  289. this.dragEl.setOpacity(.8);
  290. console.log("5555555555555555555");
  291. //this.dragEl.setWidth(100);
  292. //this.dragEl.setHeight(200);
  293. //this.dragEl.dom.firstChild.width=100;
  294. },
  295. // the default action is to "highlight" after a bad drop
  296. // but since an image can't be highlighted, let's frame it
  297. afterRepair:function(){
  298. for(var i = 0, len = this.dragData.nodes.length; i < len; i++){
  299. Ext.fly(this.dragData.nodes[i]).frame('#8db2e3', 1);
  300. }
  301. this.dragging = false;
  302. },
  303. endDrag: function(){
  304. this.el.setOpacity(1);
  305. console.log(this.el.setOpacity(1))
  306. console.log(this.overEl)
  307. //this.el.remove(); //DON'T REMOVE THE ELEMENT. IT WILL DISAPEAR IN IE
  308. if(this.dropLocation=='before')
  309. { console.log("11111111111")
  310. Ext.get(self.da).insertBefore(self.tar);
  311. }
  312. else
  313. {console.log("444444444444")
  314. Ext.get(self.da).insertAfter(self.tar);
  315. }
  316. }
  317. ,
  318. onDragOver: function(e, ids){
  319. //console.log(e.xy[0]); //Mouse Pos
  320. this.overEl = Ext.get(ids);
  321. var cellXSize = this.overEl.dom.getClientRects()[0].right - this.overEl.dom.getClientRects()[0].left; //Width of the cell
  322. var cellXSize = cellXSize/2;
  323. var cellXCenter = this.overEl.dom.getClientRects()[0].right - cellXSize; //x cord of cell center
  324.  
  325. //This is where I want to do something to the dom to indicate where the item will drop.
  326. if (e.xy[0] <+ cellXCenter)
  327. {
  328. this.dropLocation = 'before';
  329.  
  330. console.log('put before');
  331. }
  332. else
  333. {
  334. this.dropLocation = 'after';
  335. console.log('put after');
  336. }
  337. },
  338. // override the default repairXY with one offset for the margins and padding
  339. getRepairXY : function(e){
  340. if(!this.dragData.multi){
  341. var xy = Ext.Element.fly(this.dragData.ddel).getXY();
  342. xy[0]+=3;xy[1]+=3;
  343. return xy;
  344. }
  345. return false;
  346. }
  347. });
  348.  
  349. var dragZone = new ImageDragZone({
  350. containerScroll:true,
  351. ddGroup: 'organizerDD'
  352. });
  353. var dropZone = new ImageDropZone({
  354. ddGroup: 'organizerDD'
  355. });
  356. }
  357. function shortName(name){
  358. if(name.length > 15){
  359. return name.substr(0, 12) + '...';
  360. }
  361. return name;
  362. }
  363.  
  364. // show photo panel
  365. var images = new Ext.Panel({ // center region show photos.
  366. id:'images',
  367. title:'The latest uploded photos ',
  368. margins: '5 5 5 0',
  369. border: false,
  370. items: view
  371. });
  372.  
  373. var tree_bar = new Ext.Toolbar({
  374. items:[{
  375. text: 'New Gallery',
  376. iconCls: 'add_gallery_btn',
  377. handler: function(){
  378. add_tbar(tree,"My Gallery","/galleries/create", 'gallery');
  379. }
  380. }]
  381. });
  382.  
  383. // loading gallery node
  384. var root_node = new Ext.tree.AsyncTreeNode({
  385. id: 'root_node',
  386. text: "Galleries",
  387. allowDrag: false,
  388. allowDrop: false
  389. })
  390.  
  391. var tree = new Ext.tree.TreePanel({
  392. id: 'tree',
  393. animate:true,
  394. enableDD:true,
  395. ddGroup: 'organizerDD',
  396. rootVisible: false,
  397. width:320,
  398. collapsible:true,
  399. layout: 'fit',
  400. title:'Gallery',
  401. margins: '5 0 5 5',
  402. tbar: tree_bar,
  403. root: root_node,
  404. loader: new Ext.tree.TreeLoader({
  405. dataUrl:'/galleries/show_gallery.json',
  406. listeners: {
  407. 'load' : function(This,node,response){
  408. for(var i=0; i<node.childNodes.length; i++){
  409. node.childNodes[i].leaf = false; // if treenode is leaf, it need to set false. So,wo can move photos to gallery
  410. }
  411. }
  412. }
  413. }),
  414. listeners: {
  415. 'click':function(node,e){
  416. images. setTitle(node.text);
  417. center.initialConfig.bbar.items.items[0].hide();
  418. center.initialConfig.bbar.items.items[1].show();
  419. gallery_text = node.text;
  420. gallery_selected_id = node.id;
  421. view.store.baseParams = {};
  422. view.store.baseParams.gallery_id = node.id;
  423. view.store.reload();
  424. var nodes_length = Ext.getCmp("file_manages").root.childNodes.length;
  425. for(var i=0; i<nodes_length; i++){
  426. Ext.getCmp("file_manages").root.childNodes[i].allowChildren = false;
  427. }
  428. allow_file_drop = false;
  429. },
  430. 'beforenodedrop': function(o){
  431. if (o.source.el.id == 'view_photo'){
  432. var gallery_id = o.target.id;
  433. if (o.target.leaf == true)
  434. {
  435. gallery_id = o.target.parentNode.id;
  436. o.target.parentNode.childNodes.allowDrop=false;
  437. return false;
  438. }
  439. var photo_id = []
  440. if (o.target.childNodes.length == 0)
  441. {
  442. photo_id = photo_ids;
  443. }
  444. else{
  445. for(var i=0; i<photo_ids.length;i++) {
  446. for(var a=0;a<o.target.childNodes.length;a++)
  447. {
  448. if(photo_ids[i] == o.target.childNodes[a].id)
  449. {
  450. o.target.childNodes[a].remove();
  451. break;
  452. } else{
  453. if (a == o.target.childNodes.length-1)
  454. {
  455. photo_id.push(photo_ids[i])
  456. }
  457. }
  458.  
  459. }
  460.  
  461. }
  462. }
  463. if (photo_id.length > 0){
  464. Ext.Ajax.request({
  465. url: '/photos/drag_photos',
  466. method: 'POST',
  467. params: {
  468. 'photo_ids[]': photo_id, //array must use encode methos
  469. gallery: gallery_id
  470. },
  471. success: function(response,request){
  472. o.target.setText(o.target.attributes.name + "("+ Ext.decode(response.responseText).photos_num + ")");
  473. },
  474. failure: function(result,request){
  475. Ext.MessageBox.alert('Tip','failure!');
  476. }
  477. });
  478. }
  479. }
  480. },
  481. 'contextmenu': function(node,e){
  482. menu_manipulate('Gallery',tree,node,e,'/galleries/destroy','/galleries/update');
  483. }
  484. }
  485. });
  486.  
  487. // define file management toolbar
  488. var file_bar = new Ext.Toolbar({
  489. items:[{
  490. text: 'New Folder',
  491. iconCls: 'new_folder_btn',
  492. handler: function(){
  493. add_tbar(file_manage,"new folder","/files/create_folder", 'file');
  494. }
  495. },{
  496. text: 'Upload Photos',
  497. iconCls: 'upload_btn',
  498. handler: function(){
  499. Application.uploadDialog.show(userid);
  500. }
  501. },{
  502. text: 'Clear Recycle Bin',
  503. iconCls: 'recycle_btn',
  504. handler: function(){
  505. Ext.MessageBox.confirm('Tip', 'Do you continue to do it ?', function(btn) {
  506. if(btn == 'yes'){
  507. Ext.Ajax.request({
  508. url: '/files/clear_recycle',
  509. method: 'DELETE',
  510. params: {
  511. file_id: Ext.getCmp("file_manages").root.childNodes[0].id
  512. },
  513. success: function(response,request){
  514. view.store.baseParams = {};
  515. view.store.reload();
  516. file_manage.root.reload();
  517. tree.root.reload();
  518. },
  519. failure: function(result,request){
  520. Ext.MessageBox.alert('Tip','failure!');
  521. }
  522. });
  523. }
  524. else{
  525. return false;
  526. }
  527. });
  528. }
  529. }]
  530. });
  531.  
  532. // file_tree, manage uploading file, delete file, drog file.
  533. var file_manage = new Ext.tree.TreePanel({
  534. id: 'file_manages',
  535. animate:true,
  536. enableDD:true,
  537. ddGroup: 'organizerDD',
  538. rootVisible: false,
  539. width:320,
  540. collapsible:true,
  541. layout: 'fit',
  542. title:'File Management',
  543. margins: '5 0 5 5',
  544. tbar: file_bar,
  545. root: new Ext.tree.AsyncTreeNode({
  546. id: 'root_file',
  547. text: "File",
  548. allowDrag: false,
  549. allowDrop: false
  550. }),
  551. loader: new Ext.tree.TreeLoader({
  552. dataUrl:'/files/show_file.json',
  553. listeners: {
  554. 'load' : function(This,node,response){
  555. for(var i=0; i<node.childNodes.length; i++){
  556. node.childNodes[i].leaf = false; // if treenode is leaf, it need to set false. So,wo can move photos to gallery
  557. }
  558. }
  559. }
  560. }),
  561. listeners: {
  562. 'click':function(node,e){
  563. images. setTitle(node.text);
  564. center.initialConfig.bbar.items.items[0].show(); // show delete photo button
  565. center.initialConfig.bbar.items.items[1].hide(); // hide remove photo buttom
  566. center.items.items[0].show();
  567. view.store.baseParams = {};
  568. view.store.baseParams.file_id = node.id;
  569. view.store.load();
  570. if(allow_file_drop == false){
  571. var nodes_length = Ext.getCmp("file_manages").root.childNodes.length;
  572. for(var i=0; i<nodes_length; i++){
  573. Ext.getCmp("file_manages").root.childNodes[i].allowChildren = true;
  574. }
  575. }
  576. } ,
  577. 'beforenodedrop': function(o){
  578. if (o.source.el.id == 'view_photo'){
  579. var file_id = o.target.id;
  580. if (o.target.leaf == true)
  581. {
  582. file_id = o.target.parentNode.id;
  583. o.target.parentNode.childNodes.allowDrop=false;
  584. return false;
  585. }
  586. var photo_id = []
  587. if (o.target.childNodes.length == 0)
  588. {
  589. photo_id = photo_ids;
  590. }
  591. else{
  592. for(var i=0; i<photo_ids.length;i++) {
  593. for(var a=0;a<o.target.childNodes.length;a++)
  594. {
  595. if(photo_ids[i] == o.target.childNodes[a].id)
  596. {
  597. o.target.childNodes[a].remove();
  598. break;
  599. } else{
  600. if (a == o.target.childNodes.length-1)
  601. {
  602. photo_id.push(photo_ids[i])
  603. }
  604. }
  605.  
  606. }
  607.  
  608. }
  609. }
  610. if (photo_id.length > 0){
  611. Ext.Ajax.request({
  612. url: '/files/drag_file',
  613. method: 'POST',
  614. params: {
  615. 'photo_ids[]': photo_id, //array must use encode methos
  616. file_id: file_id
  617. },
  618. success: function(response,request){
  619. for(var i=0; i<photo_ids.length;i++) {
  620. Ext.get('photo_'+photo_id[i]).remove();
  621. }
  622. file_manage.root.reload();
  623. },
  624. failure: function(result,request){
  625. Ext.MessageBox.alert('Tip','failure!');
  626. }
  627. });
  628. }
  629. }
  630. },
  631. 'contextmenu': function(node,e){
  632. // file management menu
  633. menu_manipulate('Folder', file_manage, node, e, '/files/destroy_file', '/files/update_folder');
  634. }
  635. }
  636. })
  637. if(roles != 'galleryA'){
  638. var west = new Ext.Panel({
  639. id: 'west',
  640. region: 'west',
  641. collapsible: true,
  642. width: 320,
  643. title: "Operation Panel",
  644. items: [{
  645. items: [tree,file_manage]
  646. }]
  647. });
  648. }else{
  649. west = new Ext.Panel({
  650. id: 'west',
  651. region: 'west',
  652. collapsible: true,
  653. width: 320,
  654. title: "Operation Panel",
  655. items: [{
  656. items: [file_manage]
  657. }]
  658. });
  659.  
  660. }
  661. if(roles == 'galleryB'){
  662. west.initialConfig.items[0].items[0].initialConfig.tbar.hide();
  663. }
  664. var east = new Ext.Panel({
  665. id: 'east',
  666. region: "east",
  667. width: 200,
  668. layout: 'fit',
  669. border: false,
  670. bodyBorder: false,
  671. items: [{
  672. items:[infos,photo_info]
  673. }]
  674. });
  675.  
  676. var top_bar = new Ext.Panel({
  677. id:'top_bar',
  678. margins: '5 5 5 0',
  679. tbar: new Ext.Toolbar({
  680. items:[{
  681. text: 'Latest Uploaded Photos',
  682. iconCls: 'show_photos_btn',
  683. handler: function(){
  684. images.setTitle("The latest uploded photos");
  685. view.store.baseParams = {};
  686. view.store.reload();
  687. var nodes_length = Ext.getCmp("file_manages").root.childNodes.length;
  688. for(var i=0; i<nodes_length; i++){
  689. Ext.getCmp("file_manages").root.childNodes[i].allowChildren = true;
  690. }
  691. }
  692. }]
  693. }),
  694. items:images
  695. })
  696.  
  697. var center = new Ext.Panel({
  698. id: 'center',
  699. region: 'center',
  700. layout: 'fit',
  701. contentEl:'photo',
  702. autoScroll: true,
  703. bbar: new Ext.Toolbar({
  704. items:[{ // Default showing this button.
  705. id: 'delete_photo', // When current state is File Manage,showing delete photo button.This will delete photo from server.
  706. text: 'Delete',
  707. iconCls: 'delete_photo_btn',
  708. handler: function(){
  709. var getSelected = view.getSelectedNodes();
  710. var photo_selected =[];
  711. if(view.getRecords(getSelected).length >0){
  712. for(var i=0; i<view.getRecords(getSelected).length; i++){
  713. photo_selected.push(view.getRecords(getSelected)[i].data.id);
  714. }
  715. Ext.Ajax.request({
  716. url: '/files/destroy_to_recycle',
  717. method: 'DELETE',
  718. params: {
  719. gallery_id: gallery_selected_id,
  720. 'photo_ids[]': photo_selected
  721. },
  722. success: function(response,request){
  723. for(var i=0; i<photo_selected.length;i++) {
  724. Ext.get('photo_'+photo_selected[i]).remove();
  725. }
  726. file_manage.root.reload();
  727. Ext.MessageBox.alert('Tip','Delete Success!');
  728. view.clearSelections(); // cleare last selected nodes
  729. },
  730. failure: function(result,request){
  731. Ext.MessageBox.alert('Tip','failure!');
  732. }
  733. });
  734. } else {
  735. Ext.MessageBox.alert('Tip','Please select photos!');
  736. }
  737. }
  738. },{
  739. id: 'remove_photo', // Current sate is Gallery, showing remove photo button. This will remove photo from gallery.
  740. hidden: true,
  741. text: 'Remove',
  742. iconCls: 'delete_photo_btn',
  743. handler: function(){
  744. if(allow_file_drop == false){
  745. var getSelected = view.getSelectedNodes();
  746. var photo_selected =[];
  747. if(view.getRecords(getSelected).length >0){
  748. for(var i=0; i<view.getRecords(getSelected).length; i++){
  749. photo_selected.push(view.getRecords(getSelected)[i].data.id);
  750. }
  751. Ext.Ajax.request({
  752. url: '/galleries/destroy_photos',
  753. method: 'DELETE',
  754. params: {
  755. gallery_id: gallery_selected_id,
  756. 'photo_ids[]': photo_selected
  757. },
  758. success: function(response,request){
  759. for(var i=0; i<photo_selected.length;i++) {
  760. Ext.get('photo_'+photo_selected[i]).remove();
  761. }
  762. tree.root.reload();
  763. Ext.MessageBox.alert('Tip','Remove Success!');
  764. view.clearSelections();
  765. },
  766. failure: function(result,request){
  767. Ext.MessageBox.alert('Tip','failure!');
  768. }
  769. });
  770. }else{
  771. Ext.MessageBox.alert('Tip','Please select photos!');
  772. }
  773. }
  774. }
  775. }]
  776. }),
  777. items: top_bar
  778. });
  779. view.store = view_store;
  780. view_store.load();
  781. }
  782. }
Add Comment
Please, Sign In to add comment