File: ecms_util.pike

package info (click to toggle)
libroxen-ecms 20000927-2
  • links: PTS
  • area: main
  • in suites: woody
  • size: 160 kB
  • sloc: xml: 155; makefile: 40
file content (133 lines) | stat: -rw-r--r-- 2,983 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!NOMODULE

constant cvs_version="$Id: ecms_util.pike,v 1.0 2000/07/17 07:40:12 pit Exp $";

class TemplateStructure {

  mapping inheritance=([]);
  array finfo=({});
  mixed inheritance_last;
  string data;
  
  string Tchild(Parser.HTML p, mapping attr, mapping extra) {
    inheritance[inheritance_last]+= ({ ([ "file" : attr->file ]) });
    return "";
  }
  
  
  string Tfield(Parser.HTML p, mapping attr, mapping extra) {
    mapping fi=([]);
    fi+=(["name":attr->name]);
    fi+=(["type":attr->type]);
    fi+=(["options":attr->options]);
    finfo+=({ fi });
    return "";
  }
  
  
  string Cnode(Parser.HTML p, mapping attr, string contents, mapping extra) {
    mapping res = ([ ]);
    
    inheritance+=([attr->file : ({}) ]);
    inheritance_last=attr->file;
    
    Parser.HTML()
      ->add_container ("node", Cnode)
      ->add_tag ("child", Tchild)
      ->add_quote_tag ("!--", "", "--")
      ->set_extra (res)
      ->finish (contents);
    extra[attr->name] = res;
    
    return "";
  }
  
  string Cinheritance(Parser.HTML p, mapping attr, string contents, mapping extra) {
    mapping res = ([ ]);
    Parser.HTML()
      ->add_container ("node", Cnode)
      ->add_quote_tag ("!--", "", "--")
      ->set_extra (res)
      ->finish (contents);
    extra[attr->name] = res;
    return "";
  }
  
  string Cxmltemplateinfo(Parser.HTML p, mapping attr, string contents, mapping extra) {
    mapping res = ([ ]);
    Parser.HTML()
      ->add_tag ("field", Tfield)
      ->add_quote_tag ("!--", "", "--")
      ->set_extra (res)
      ->finish (contents);
    extra[attr->name] = res;
    return "";
  }
  
  
  mapping inheritance_decode(string s) {
    inheritance_last="";
    mapping res = ([ ]);
    Parser.HTML()
      ->add_container ("inheritance", Cinheritance)
      ->add_quote_tag ("!--", "", "--")
      ->set_extra (res)
      ->finish (s);
    return res;
  }
  
  
  mapping xmltemplateinfo_decode(string s) {
    mapping res = ([ ]);
    Parser.HTML()
      ->add_container ("xmltemplateinfo", Cxmltemplateinfo)
      ->add_quote_tag ("!--", "", "--")
      ->set_extra (res)
      ->finish (s);
    return res;
  }
 
  string template_dir;
  
  void create(string file) {
    template_dir=file;
    data=Stdio.read_file(file+"INHERITANCE");
  }
  
  void destruct () {
  }
  
  
  mapping get_structure() {
    inheritance_decode(data);
    string templatefile;
    return inheritance;
  }
  
  array get_fields(string file) {
    string content=Stdio.read_file(template_dir+file);
    finfo=({});
    xmltemplateinfo_decode(content);
    return(finfo);
  }
  
  
  
};  



string mk_font(string s) {
  return(sprintf("<gtext nfont=\"futura\" scale=\"0.5\">%s</gtext>", s));
}


string mk_err_font(string s) {
  return(sprintf("<gtext fgcolor=\"#CC2020\" nfont=\"futura\" scale=\"0.5\">%s</gtext>", s));
}


string mk_ok_font(string s) {
  return(sprintf("<gtext fgcolor=\"#20CC20\" nfont=\"futura\" scale=\"0.5\">%s</gtext>", s));
}