/[pub]/suikawiki/script/lib/SuikaWiki/Plugin/WikiFormText.wp2
Suika

Contents of /suikawiki/script/lib/SuikaWiki/Plugin/WikiFormText.wp2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.8 - (hide annotations) (download)
Sun Jul 25 06:54:29 2004 UTC (22 years ago) by wakaba
Branch: MAIN
Changes since 1.7: +20 -8 lines
Property Editor implemented

1 wakaba 1.1 #?SuikaWikiConfig/2.0
2    
3     Plugin:
4     @Name: WikiFormText
5     @FullName:
6     WikiForm: Text input module
7     @Description:
8     This module provides text input fields of WikiForm implementation.
9 wakaba 1.6 @License: %%Perl%%
10 wakaba 1.1 @Author[list]:
11     Wakaba <[email protected]>
12 wakaba 1.6 @Date.RCS:
13 wakaba 1.8 $Date: 2004/03/29 03:22:30 $
14 wakaba 1.1 @RequiredModule[list]:
15     WikiFormCore
16    
17     PluginConst:
18     @NS_XHTML1:
19     http://www.w3.org/1999/xhtml
20    
21     FormattingRule:
22     @Category[list]:
23     form-input
24     @Name: text
25     @Description:
26     @@@@: Short text input (input[@type='text'])
27     @@@lang:en
28     @Formatting:
29 wakaba 1.3 __ATTRTEXT:%id__;__ATTRNODE:%label__;
30     my $id = SuikaWiki::Plugin->module_package ('WikiFormCore')
31     ->control_id ($o,
32     local_id => $p->{id},
33     require_local_id => 1);
34 wakaba 1.6 my $has_label = 0;
35 wakaba 1.3 if ($p->{label}->count) {
36 wakaba 1.6 $has_label = 1;
37 wakaba 1.1 for ($p->{-parent}->append_new_node
38     (type => '#element',
39     namespace_uri => $NS_XHTML1,
40     local_name => 'label')) {
41 wakaba 1.3 $_->set_attribute (for => $id->{global_id});
42     $_->append_node ($p->{label});
43 wakaba 1.1 }
44     }
45     for ($p->{-parent}->append_new_node
46     (type => '#element',
47     namespace_uri => $NS_XHTML1,
48     local_name => 'input')) {
49     $_->set_attribute (type => 'text');
50 wakaba 1.3 $_->set_attribute (name => $id->{local_id});
51 wakaba 1.6 $_->set_attribute (id => $id->{global_id}) if $has_label;
52 wakaba 1.3 __ATTRTEXT:%size__;__ATTRTEXT:%description__;
53 wakaba 1.8 $_->set_attribute (size => ($p->{size}||20)*2); ## Length
54 wakaba 1.1 $_->set_attribute (title => $p->{description}) if $p->{description};
55 wakaba 1.5 $_->set_attribute (disabled => 'disabled') if $o->{form}->{disabled};
56 wakaba 1.1 __ATTRTEXT:%class__;
57     my @class = split /\s+/, $p->{class};
58 wakaba 1.7 push @class, 'require' if $o->{form}->{require}->{id}->{$p->{id}};
59 wakaba 1.1 $_->option (use_EmptyElemTag => 1);
60 wakaba 1.8 __ATTRTEXT:%source__;__ATTRTEXT:%default__;
61 wakaba 1.4 if ($p->{source}) {
62 wakaba 1.8 if (ref $o->{var}->{source}->{$p->{source}}) {
63     my $d = $o->{var}->{source}->{$p->{source}}->(p=>$p,o=>$o);
64     $_->set_attribute (value => $d->{value});
65     push @class, @{$d->{class}||[]};
66     } else {
67     $_->set_attribute (value => $o->{var}->{$p->{source}});
68     }
69 wakaba 1.3 } else {
70     $_->set_attribute (value => $p->{default}); ## Default value
71     }
72 wakaba 1.8 $_->set_attribute (class => join ' ', @class) if @class;
73 wakaba 1.1 }
74    
75     FormattingRule:
76 wakaba 1.4 @Category[list]: form-template
77     @Name: text
78     @Description:
79     @@@: Inputed text
80     @@lang:en
81     @Parameter:
82     @@Name: source
83     @@Type: ID
84     @@Default:(require)
85     @@Description:
86     @@@@: WikiForm control ID of the source field
87     @@@lang:en
88     @After:
89     $p->{-result} .= $o->{wiki}->{input}->parameter ('wikiform__'.$p->{source});
90    
91     FormattingRule:
92 wakaba 1.1 @Category[list]:
93     form-input
94     @Name: textarea
95     @Description:
96     @@@@: Multiline text input
97     @@@lang:en
98     @Formatting:
99 wakaba 1.3 __ATTRTEXT:%id__;__ATTRNODE:%label__;
100     my $id = SuikaWiki::Plugin->module_package ('WikiFormCore')
101     ->control_id ($o,
102     local_id => $p->{id},
103     require_local_id => 1);
104 wakaba 1.6 my $has_label = 0;
105 wakaba 1.3 if ($p->{label}->count) {
106 wakaba 1.6 $has_label = 1;
107 wakaba 1.3 for ($p->{-parent}->append_new_node
108     (type => '#element',
109     namespace_uri => $NS_XHTML1,
110     local_name => 'label')) {
111     $_->set_attribute (for => $id->{global_id});
112     $_->append_node ($p->{label});
113 wakaba 1.1 }
114 wakaba 1.7 $p->{-parent}->append_new_node
115     (type => '#element',
116     namespace_uri => $NS_XHTML1,
117     local_name => 'br')
118     ->option (use_EmptyElemTag => 1);
119 wakaba 1.1 }
120    
121 wakaba 1.2 for ($p->{-parent}->append_new_node (type => '#element',
122     namespace_uri => $NS_XHTML1,
123     local_name => 'textarea')) {
124 wakaba 1.3 $_->set_attribute (name => $id->{local_id});
125 wakaba 1.6 $_->set_attribute (id => $id->{global_id}) if $has_label;
126 wakaba 1.1 __ATTRTEXT:%size__;__ATTRTEXT:%lines__;__ATTRTEXT:%description__;
127 wakaba 1.8 $_->set_attribute (cols => ($p->{size}||20)*2); ## Length
128 wakaba 1.1 $_->set_attribute (rows => ($p->{lines}||5)); ## Lines
129     $_->set_attribute (title => $p->{description}) if $p->{description};
130 wakaba 1.3 $_->set_attribute (disabled => 'disabled') if $o->{form}->{disabled};
131 wakaba 1.1 __ATTRTEXT:%class__;
132     my @class = split /\s+/, $p->{class};
133 wakaba 1.7 push @class, 'require' if $o->{form}->{require}->{id}->{$p->{id}};
134 wakaba 1.3 ## ISSUE: Can't we separate this into stylesheet?
135     if ($o->{wiki}->{var}->{client}->{user_agent_name}
136     =~ m#^Mozilla/[0-4]\.#) {
137 wakaba 1.1 $_->set_attribute (wrap => 'virtual');
138     }
139 wakaba 1.4 __ATTRTEXT:%source__;
140     if ($p->{source}) {
141 wakaba 1.8 if (ref $o->{var}->{source}->{$p->{source}}) {
142     my $d = $o->{var}->{source}->{$p->{source}}->(p=>$p,o=>$o);
143     $_->append_text ($d->{value});
144     push @class, @{$d->{class}||[]};
145     } else {
146     $_->append_text ($o->{var}->{$p->{source}});
147     }
148 wakaba 1.1 } else {
149     __ATTRTEXT:%default__;
150     $_->append_text ($p->{default}); ## Default value
151     }
152 wakaba 1.8 $_->set_attribute (class => join ' ', @class) if @class;
153 wakaba 1.1 }
154    

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24