10 itkaclcommon::print_header();
11 my $entry = $itkaclcommon::cgi->param('entry');
12 itkaclcommon::print_tree(0, $entry);
14 my $ref = $itkaclcommon::dbh->selectrow_hashref('SELECT * FROM objects WHERE id=?', undef, $entry);
16 print "<script src=\"jquery-1.7.min.js\" type=\"text/javascript\"></script>\n";
17 print "<script src=\"itkacl.js\" type=\"text/javascript\"></script>\n";
18 print "<h1>$ref->{'description'}</h1>\n";
20 # Follow the tree up to the root to find the full path
21 my $path = "/" . $ref->{'name'};
23 while (defined($ref->{'parent'})) {
24 $ref = $itkaclcommon::dbh->selectrow_hashref('SELECT * FROM objects WHERE id=?', undef, $ref->{'parent'});
25 $path = "/" . $ref->{'name'} . $path;
26 push @ids, $ref->{'id'};
29 print "<h2>$path</h2>\n";
32 # Now, fetch all ACL entries to find inherited rights; since ACLs are
33 # applied starting from the root, we traverse the tree from the root as
37 my $num_inherited = 0;
39 for my $id (reverse @ids) {
40 $ref = $itkaclcommon::dbh->selectrow_hashref('SELECT * FROM objects WHERE id=?', undef, $id);
41 $curpath .= "/" . $ref->{'name'};
43 my $aes = $itkaclcommon::dbh->selectall_arrayref('SELECT entity_type,entity,allow FROM aclentries WHERE object=? ORDER BY entity_type ASC, allow DESC',
46 for my $ae (@{$aes}) {
47 if ($num_inherited == 0) {
48 # This is the first entry, we'll have to make
49 # the table borders and such
51 <h3>Arvede rettigheter</h3>
64 my ($entity_type, $entity, $allow) = @{$ae};
66 if ($entity_type eq 'group') {
71 my $e_text = HTML::Entities::encode_entities($entity);
76 <td>$num_inherited</td>
77 <td style="text-align: center;"><img src="/img/$allow.png" alt="$ae->[2]" /></td>
80 <td><a href="/view.pl?entry=$id">$curpath</a></td>
86 if ($num_inherited != 0) {
91 # Same, for non-inherited rights. Yes, it's a bit of code duplication,
92 # but it really won't be that much cleaner implementing it as a
93 # function, unfortunately.
96 print "<h3>Rettigheter</h3>\n";
99 $ref = $itkaclcommon::dbh->selectrow_hashref('SELECT * FROM objects WHERE id=?', undef, $entry);
100 my $aes = $itkaclcommon::dbh->selectall_arrayref('SELECT entity_type,entity,allow,comment FROM aclentries WHERE object=? ORDER BY entity_type ASC, allow DESC',
103 for my $ae (@{$aes}) {
104 if ($num_rights == 0) {
105 # This is the first entry, we'll have to make
106 # the table borders and such
121 my ($entity_type, $entity, $allow, $comment) = @{$ae};
123 if ($entity_type eq 'group') {
128 my $e_text = HTML::Entities::encode_entities($entity);
129 my $c_text = HTML::Entities::encode_entities($comment // '');
135 <td style="text-align: center;"><img src="/img/$allow.png" alt="$ae->[2]" /></td>
138 <td style="text-align: center;">
139 <a href="/delete.pl?entry=$entry&entity_type=$entity_type&entity=$e_text&csrftoken=$itkaclcommon::masked_csrf_token">
140 <img src="/img/delete.png" alt="Slett" />
143 <td ondblclick="enableEdit(this);" itkacl:entry="$entry" itkacl:entity-type="$entity_type" itkacl:entity="$e_text" itkacl:csrftoken="$itkaclcommon::masked_csrf_token">$c_text</td>
148 if ($num_rights != 0) {
151 print "<p>Ingen rettigheter er satt ennå for dette objektet.</p>\n";
155 # I'm a bit unsure if we want to have this all in one page, but OK, here
160 <h3>Legg til nye rettigheter</h3>
162 <p>Du kan legge til nye rettigheter på dette objektet. Merk at verdiene
163 dine ikke vil sjekkes for gyldighet (du kan mao. fint gi tilganger til
164 en ikke-eksisterende bruker eller gruppe, men det kan gi uforutsigbare
165 resultater ved ACL-sjekking seinere).</p>
167 <p>Den spesielle gruppen "<everyone>" inneholder alle brukere.</p>
169 <form method="post" action="add.pl">
170 <input type="hidden" name="csrftoken" value="$itkaclcommon::masked_csrf_token" />
171 <input type="hidden" name="entry" value="$entry" />
173 <tr style="text-align: left;">
176 <select name="allow">
177 <option value="deny">Nekt</option>
178 <option value="grant">Tillat</option>
182 <tr style="text-align: left;">
185 <select name="entity_type">
186 <option value="user">Bruker</option>
187 <option value="group">Gruppe</option>
191 <tr style="text-align: left;">
192 <th>Bruker-/gruppenavn:</th>
193 <td><input name="entity" size="16" /></td>
195 <tr style="text-align: left;">
197 <td><input name="comment" size="40" /></td>
200 <td colspan="2" style="text-align: center;">
201 <input type="submit" value="Legg til" />
207 <h3>Legg til nye tilgangsområder</h3>
209 <p>Du kan legge til nye tilgangsområder under denne noden. Merk at du
210 er begrenset til store og små bokstaver (kun små anbefales, områder
211 er case-sensitive) samt tall og bindestrek.</p>
213 <form method="post" action="addnode.pl">
214 <input type="hidden" name="csrftoken" value="$itkaclcommon::masked_csrf_token" />
215 <input type="hidden" name="parent" value="$entry" />
217 <tr style="text-align: left;">
220 $path/<input name="name" size="16" />
223 <tr style="text-align: left;">
226 <input name="description" size="50" />
230 <td colspan="2" style="text-align: center;">
231 <input type="submit" value="Legg til" />
237 <h3>Slett dette området</h3>
241 $ref = $itkaclcommon::dbh->selectrow_hashref('SELECT COUNT(*) AS num_aclentries FROM aclentries WHERE object=?', undef, $entry);
242 if ($ref->{'num_aclentries'} > 0) {
244 <p>Du kan ikke slette dette området ettersom det har tilordnet tilganger. Dersom du ønsker å
245 slette det må du først slette alle tilganger og eventuelle underområder.</p>
248 $ref = $itkaclcommon::dbh->selectrow_hashref('SELECT COUNT(*) AS num_children FROM objects WHERE parent=?', undef, $entry);
249 if ($ref->{'num_children'} > 0) {
251 <p>Du kan ikke slette dette området ettersom det har underområder. Dersom du ønsker å slette
252 det må du først slette alle underområdene.</p>
256 <p>Dersom du ønsker, kan du slette dette området. All tilgangskontroll mot det i fremtiden vil
257 feile, så sjekk grundig før du sletter det at det ikke fortsatt er i bruk.</p>
259 <form method="post" action="deletenode.pl">
260 <input type="hidden" name="csrftoken" value="$itkaclcommon::masked_csrf_token" />
261 <input type="hidden" name="entry" value="$entry" />
262 <p><input type="submit" value="Slett dette området" /></p>
268 itkaclcommon::print_footer();