選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 
 
 

62 行
1.4 KiB

  1. wn.provide('wn.views.pageview');
  2. wn.views.pageview = {
  3. pages: {},
  4. with_page: function(name, callback) {
  5. if(!locals.Page[name]) {
  6. wn.call({
  7. method: 'webnotes.widgets.page.getpage',
  8. args: {'name':name },
  9. callback: callback
  10. });
  11. } else {
  12. callback();
  13. }
  14. },
  15. show: function(name) {
  16. if(!name) return;
  17. wn.views.pageview.with_page(name, function() {
  18. if(!wn.pages[name]) {
  19. wn.views.pageview.pages[name] = new wn.views.Page(name);
  20. }
  21. wn.container.change_to(name);
  22. });
  23. }
  24. }
  25. wn.views.Page = Class.extend({
  26. init: function(name) {
  27. this.name = name;
  28. var me = this;
  29. this.pagedoc = locals.Page[this.name];
  30. this.wrapper = wn.container.add_page(this.name);
  31. this.wrapper.label = this.pagedoc.title || this.pagedoc.name;
  32. // set content, script and style
  33. this.wrapper.innerHTML = this.pagedoc.content;
  34. wn.dom.eval(this.pagedoc.__script || this.pagedoc.script || '');
  35. wn.dom.set_style(this.pagedoc.style);
  36. this.trigger('onload');
  37. // set events
  38. $(this.wrapper).bind('show', function() {
  39. cur_frm = null;
  40. me.trigger('onshow');
  41. me.trigger('refresh');
  42. });
  43. },
  44. trigger: function(eventname) {
  45. var me = this;
  46. try {
  47. if(pscript[eventname+'_'+this.name]) {
  48. pscript[eventname+'_'+this.name](me.wrapper);
  49. } else if(me.wrapper[eventname]) {
  50. me.wrapper[eventname](me.wrapper);
  51. }
  52. } catch(e) {
  53. console.log(e);
  54. }
  55. }
  56. })