Download document - Escuela Superior de Informática

Transcript
!
#
$%
* +
%&'%
#(
)
* +
% $%' $ (
* +
"
"
!
Agradecimientos
,
-
+
.
/
,
2
+%+ + # .
0 1
,
0
3 1
+
+
"
"
Resumen
%
0
. 4+%
%
,
5
-
.
0
0
4 5
0
0
0
4
0
+ % .
/
3,
6
7
+
" #"
.
0
3
Índice
8+8+" %
:+8+"
%) ( 9 %&'(+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'$9 '9$
& %& %$;
%) (*'5 $%+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <
"##$
%
"#'$
&
(
%
:+8+ +8+" ( ' =( /
:+8+ + +" @
'
)
.,>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ?
1+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 88
:+8+ +:+" (( % =( / (
"#"$
7
% .
*
+ %
:+8+:+8+" ) 3
:+8+:+ +" )
9
/
/
%'( ()( ;
#,
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8A
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8A
:+8+:+:+" % ) . / 9
:+ +"
.>++++++++++++++++++++++++++++++++++++++ 8
=9 )>+ +++++++++++++++++++++++++++++++++++++++++
$ %) %
$$())( %
'(
5%@+ ++++++++++++++++++++++++++++++++++++++++
"'#$ -
'"
"''$ .
$/
:+ + +8+" $
=$
1
:+ + + +" $& =$
:+ + +:+" #C
"'"$ .
:+ +:+ +" ((C
:+ +:+:+" 5
:+ +:+!+" (C
"',$ .
.
1
1 "& 3 .
=# 7"
=% 1
.,>+ ++++++++++++++++++++++++++++++++++ !
, >+ ++++++++++++++++++++++++++++++++++++++++++ B
C,
.
1
.,>+ ++++++++++++++++++++++ A
')
( / "$
=( / "(
=5
=
>++++++++++++++++++++++++++++++++++++++ A
C,
.
"
1
.
1 >+++++++++++++++++++++++ ?
1 >+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++ :
( / "
C,
.
.,>+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ :
* 1
:+ +!+8+" 95% =9 )"
""
5
:+ +!+ +" (("C =( / (
"'2$ 1 (
',
0
:+ +:+8+" %($
1
!
3
% .
.>+ ++++++++++++++++++++++++++++++++++++++++++++++++++ ::
C,
>+++++++++++++++++++++++++++++++++++++++++++++++++++++ :!
$* 1 43
$
"#"
5
* 16
",
:+:+"
$D9 '% '9$
%
)
(&%
5%@++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !
""#$
:+!+"
3
$&
:+F+" '%
(
%
%E( %
&()( ;
"2#$ 78 1 47
$$())( %
85
"2'$ ;<4
;
5%@+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !!
'(
$ %) %
,'
)
(&%
5%@+ +++++++++++++++++++++++++++++++ !B
9 1 ( (6
%
<
,:
6
,:
"2"$ 1 (
,)
"2,$ .
=
2>
"22$ ? 1 4?
9 1 ( (6
"2& $ ?+1 4?
:+<+"
'%
"& #$
+
% '($%
(
:+<+8+8+"
"& '$ 8
1 ( (6
% (&'%&
+4
2
2'
(
2"
)'%$& ' #
+ %
+ +++++++++++++++++++++++++++++++++++++++++ F!
6
2&
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ FB
"
2@
:+<+ +8+"
2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ F?
"& "$ A
&'
:+<+:+8+"
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <!
:+<+:+ +" ( /
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <<
:+<+:+:+"
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ B
:+<+:+:+8+" ' ) =
:+<+:+:+ +" 6 ' =6
:+<+:+!+"
0
:+<+:+F+"
.
:+<+:+<+"
G
. '
) . . > +++++++++++++++++++++++++++ B
>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ B8
4 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ B:
,
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ BF
3
:+<+:+B+"
:+<+:+A+"
'
+ ++++++++++++++++++++++++++++++++++++++++ A
3
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ A
*=
.
*
7 G>+++++++++++++++++++++++++++++++++++++++++++++++ AF
"& ,$
)&
!
"
!+8+" %
'9
( H &I)
,##$ B (
$%D9
'(
%)
C !
J&+
)
<
++++++++++++++++++++++++++++++++++++++++++++ ?
D C+
@'
,#'$
@,
,#"$ /
@&
,#,$
@:
"# "
!+ +" *
%E(+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8
% %
,'#$
(
,''$
!+:+" *
#>2
D
% %
F
3
)% %&'
#>&
J&+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8
,"#$
!
,"'$
?
##>
3
###
,""$ + (
##,
#
$
F+8+"
K'( (
% & ' )
2##$ <
!
2#'$ <
!
J&+ $%D9
F+:+"
%
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 88B
##:
C
2#"$ E
F+ +" 9& %
'(
#''
5
+%+ +
)( % & ' &
!
)
#',
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 B
&9 ) % 9 9 $ (+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8
A
%
<+8+"
(& )9 (&%
<+ +"
$( 9% '
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8:
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8:
$
&
&
'
(
)
#
"# "
Lista de Figuras
*.
:+8+ #
9
*.
:+ +
9
*.
:+:+
/
*.
:+!+
*.
:+F+
*.
:+<+
*.
:+B+
*.
:+A+ %
*.
:+?+ *
*.
:+8 + *
*.
:+88+ % 0
*.
:+8 +
*.
:+8:+
*.
:+8!+
*.
:+8F+
*.
:+8<+ -
*.
:+8B+
*.
:+8A+
*.
:+8?+ %/
*.
:+
*.
:+ 8+ #
*.
:+
*.
:+ :+ )
*.
:+ !+ -
*.
:+ F+ )
*.
:+ B+
*.
:+ A+ %/
*.
:+ ?+ 9
*.
:+: + *
*.
:+:8+
$
.
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8B
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8?
/
+++++++++++++++++++++++++++ 8
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ F
$
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ B
5 %+++++++++++++++++++++++++++++++++++++ !
0
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !8
4
4
0
.
+++++++++++++++++++++++++++++++++++++++++++++++++ !!
5
++++++++++++++++++++++++++++++++++++++++ !A
. /
.
3
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ FF
0
6
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <!
1
3
6
4 6
6
/ 6
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <F
=6
>+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++ <F
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <<
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <B
/
6
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <B
/ 6
0
+
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <A
4 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ B:
4
6
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ BF
=9
+
+++++++++++++++++++ !?
4
6
,
*
>+++++++++++++++++++++++++++++++++++++++++++++ B<
6
+ ++++++++++++++++++++++++++++++++++++++++++++++++ B<
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ BA
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ BA
6
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ B?
L4
4 .
L
+ ++++++++++++++++++++++++++ A
D)
M
L
+ +++++++++++++++++ A8
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ A:
0
3
+++++++++++++++ A:
3 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ A!
"#
"
*.
:+: + %
/
*.
:+::+
4
*.
:+:!+
.
*.
!+8+ $
M
*.
!+:+ * /
/
*.
!+!+ * /
/
*.
!+F+ * /
/
*.
!+<+ * /
/
*.
!+B+
*.
!+A+
*.
!+?+ %
*.
!+8 + %
*.
!+88+ '
*.
!+8 + %
*.
F+8+ . .
*.
F+ +
3
*.
F+:+
2
3 4
*.
F+!+
3
M
*.
F+F+
*.
F+<+ -
*.
F+B+
*.
F+A+ * /
*.
F+?+ $ .
*.
F+8 +"
*.
F+88+
*.
F+8 +
*.
F+8:+ ,
6
(
6
+ ++++++++++++++ A!
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ AF
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ?
4
5 % + +++++++++++++++++++++++++++++++++++++++++++ ?B
+++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 :
.
-
+ +++++++++++++++++ 8 :
+ ++++++++++++++++++++++++++++++++ 8 !
3
1
.
+ +++++++++++++++++++++++++++++++++++++++++ 8 !
5 % + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 !
O
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 A
3. 4 O
+ +++++++++++++++++++++++++++ 8 A
3. 4
++++++++++++++++++++++++++++++++++++++++ 8 ?
5 % + ++++++++++++++++++++++++++++++++++++++++++++++++ 88
. M
.
+
+++++++++++++++++++++++++++++++++++++++++++++++++++ 88:
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 88?
4 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 88?
+++++++++++++++++++++++++++++++++++++++++++++++++++++ 8
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8
demo+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 8
4 6
3
% + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 8
Products +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 :
/
L
4
P
5 % +++++++++++++++++++++++++++++++++++++ 8 !
Q+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 F
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 <
,
.
+ ++++++++++++++++++++++++++++++ 8 <
.
.
4
5 % + +++++++++++++++++++++++++++++++++ 8 B
5 % +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 A
*.
+8+
.
3. 4
*.
+ +
.
3. 4
*.
+:+
*.
+!+ $
*.
+F+ '
*.
+<+
L +++++++++++++++++++++++++++++++++++++++++++ 8F
.
+ ++++++++++++++++++++++++++++++++++++++ 8F
5 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8F:
4
4
0
+++++ 8F:
O
++++++++++++++++++++++++++++++++++++++++++++++++ 8F!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8F!
" N"
*.
+B+
.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8FF
*.
+A+
.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8FF
*.
+?+
.
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8F<
*.
+8 + # 4 .
*.
+88+ * 1
*.
+8 + %
*.
+8:+ $
.
+ +++++++++++++++++++++++++++++++++++++++++ 8F<
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8FB
/
%
O0
3 + ++++++++++++++++++ 8FB
4 + ++++++++++++++++++++++++++++++++++++++++++++++ 8FA
"N"
1.- INTRODUCCIÓN.
1
3
4"
4
+ C
-
L
4
3
4
13
L4
3
+ 9
4
0
0
2
0
2
3
+
1
.
3
3
3
3
0
-2 .
0 -
1.
2
,
.
.
O
.
.2
4
3 ,
1
,
4
.
TT777+
" / U
5
3 1
3
, L
5
/2
.
9$)
+ T " / > ,
,
%
-
4
4
/
.
+
%
1
4S
0
/
%
,
1
3
3
1
+
R( 0
,
3
3
3
,
2
+%
.
O
0
.
.
.
O
4
3
4
+ >+
02
=
3
=
/
4
=
.
.
M
3
.
>+
3
5
=
+>
O
=
1
3. 4 =
,
L
.
L
+
L
3
.
>
4
+>
=
L
1
=C' )
5H 5H
+>
,
5
%
.
0
, 2
3
>
3
1
.
+ %
-
2
0
.+
%L
, 2
/
%
3 =
,
.
-
"
.
%
"
=>
P
Q
5 >
P
Q
4
+
%) ( 9 %&'(+
8
2
4
L
/
=>
1
2
3
1, 0
"
,
%
5
4
.
8+8+" % '$9 '9$
.
L +
0
4 5
4
,
%
/
,
-
+ '
M
,
+
%
2
%L
/ 3
/ 3
+
,
.
0
,
.
0
L
4
/ 3
+
" "
,
0
.
+
%
2
:
4
/ 3
,
+'
0
/ 3
7
.
2
7
+% 1 1
4
0
4
5
.2
.2
L
+ *
2
%
!
4
2
2
7
4+
4
4
,
2
4
4
B
1
/
+
< L
,
/
2
,
4
5
,
4
,
L
,
4+
M
4
%
,
1
F
5% +
%
0
+
.
%
3
2
.
%
V
. 2,
,
4
0
+
4 .
0
5
.
,
+
%
L
.
4 0
+
":"
5
2.- OBJETIVOS DEL PROYECTO.
%
/ 3
%
,
5
-
0
0
4
,
%
O
3
3
3
0
1
=
%
3
+>+
%
/
0
,
5
0
4
3
0
2
0
+
.
7
3
0
+%
+
! 3
<
0
. M
,
;
D C +
4; + 3< +6+
5%
.
0
M
%
3+ *
1
0
.
,.
.
5
5
+
+
+
.
5%
,
.
2
1
0
3
4
1
5
0
1
'
.
+
/ 3
4
1
7
"!"
5
/ 3
•
$
.
2
7
.2
•
%L
.2
•
C
5 +
0
5
,
+
L4
0 .
ML
5 +
2
•
3
.
L
.
+
"F"
3.- ANTECEDENTES, ESTADO DE LA CUESTIÓN.
:+8+" & %& %$;
)
.
0
%) (*'5 $%+
2
7
P
<
0
%
QW $%
)
.
2
& ?AX+
7
,
4
3
3
T
3
0
4 ,
.
2
4
.2
+
1
M
L
.
2
7
+
4
,
(
•
%
+6 G7
+
!
•
!
(
%
%
4
7
1
M
.
3
7
+
.
4 ,
2
+
7
0
.
9
9
:+8+8+"
.
!
%%% 8??:+
%
-
. 4
.2
1
1
3
7
-
M
>+ %
.
"<"
,
. M
.
=
.
2
7
+)
,
4
.
,
,
7
>
.
M
.
.
•
+
,
.
0
&
.
-
+
%
7
7
,
,
2
L
2
1
+
1
/
7
1
•
+
+
O
•
+ )
,
3
4
0
3
0
0
.
.
'
.
4
7
4
+
•
%
•
)
4 .
3
,
.
.
•
>
4
/
,
!
4
0
+
,
- P
•
4
-
0
0
3
3 O
,
+
3
0
1
M
P
0
•
Q+ %
M
%
0
7
4
%
+
%
3
.O
2
+
4
+%
,
O
3
,
4
Q,
1
+
%
4
,
0
+
"B"
>
2
3
4
+ %
0
.
+
7
+
)
•
2
•
2
3
+
0
,
•
$0
•
)
+
.
L
+
0
+
>
3
3
3 0
3
,
7
3
+
7
/
3 + &
/
+
.2
)
-
4
+%
:+8+ +"
.
/
+
+ %L
L
- 0
,
/
7
0
0
0
+
/
0
7
.2
- <
/
,.
- ? +
.
2
7
/
3 4
)
3
4
7
7
3
4
1
7
2
,
,
3 + )
/
7
,
+
"A"
+
4
4
4
/
( '
@
3
.2
1 , (( %+
$
.1 @
1 ,
1
.2
%
:+8+ +8+" B 8 4B
)
8
(6
.2 ( '
$
M
/
.1 0
) . /9
=9 )>+ %
.2
.
/
,
4
,
3
-+ )
,
/ 3 =
>
3 + )
PL
P
/
M
/
+
4
•
3
7
3
4
•
2
,
/
+
M
•
3
/
+
)
.2 ( '
3
0
1
.
L
3
1
0 ,
( '
. +
.
.
4
3
.2
3
4
,
/
+
3
"?"
,
,
,
C
+
& ?AX+
%
13
-
1
W $%
-+ %
+
4
0
3
- ,
)
0
0
+
( '
>
C !
.
.
%
= .
,
>
.
3 4 0
0
,
+)
4
1
" .
.
3 4
,
>
.
4
/
3
/ ,
.
2
.
/
4
4
2
+
.
.
4
+)
3
0
,
+)
0
+
4 0
O
L
3
+
%
/
1
3
3
,
1
4
1
9
+
3
3
/
/
,
3
.
4
, 4
,
+
1
4
4
+'
4 0
,
/
Y
3
/
+
>
D
0
.
+
0
.
,
4 ,
+ ) .
+
2
,
M
+
"8 "
L
,
-
-
/
4+
/
,
.
4
4 ,
+
. .
,3
.
/
1
4+
3
-
,
-
+
> <
!+ )
/
,
/
4
+
4
.
2
7
0
,
L
,
-
, L
+&
/
4
4 . ,
,
.
3
/
4
+
%L
1
7
G
.2 ( '+
-
+ (
.2 ( '
( /
0
$
@(
$
( / '
,
1
0
1
( '
4
7
@
+
:+8+ + +" .
, @
-
1+ )
,
.2 @
W@ ( %)X+ @
.
1
/
.2
%
,
,
+)
-
/
-
+
/
3
3 =
1
+)
,
4.
>
" 88 "
,
+)
2
.2 @
+
1
4
>
+%
" / +%
0
,
+%
2
4.
=
.
.
,
/
.
4
3
, ,
4
+
% .
.2 ( '+ '
+9
0
O
=
=
->
4 ,
,
,
/
+
M
+ %
(
4>
>
0
+
,
•
,
3
4
•
=
M
/
3
4
/
4
+
:+8+ +:+" BB+ 4B
B
3
/
(6
+
.2
+
+
-
3
3
4
4 ,
%
7
/
+)
0
4+
3
4
>
,
0
+%
7
,
2
0
+%
3
,
3
0
0
0
+
0
•
+%
"8 "
2
0
,
0
2
0
1
+
3
3
3
+
!
•
0
3
3,
0
/
+
•
/
.
.
3 4
,
/
+)
/
+
>
/
,
4+ '
0
,
4
+ )
4
•
4
4
,
+
2
+
0
•
%
,
+
4
•
%L
+
4
3
L
+
/
+
/
.
4 1
+
>
D
,
+9
4
,
3
,
-
4.
4 .
" 8: "
-
0
-
4
4 .
+
,
/
.
-+ 9
+
0
0
.
0
0
/
4
&
0
/
.
>
4
!
+
+
-
. /
4+
>
+%
0
1
3
0
/
1
3
:+8+:+" %
+
9
7
%
/
+
.
+
.
0
3
+%
1 3
0
,
L.
4 ,
%
.
L
2
7
/ 3
+%
0
1
4
7
.
0
/
+9
, !
9
+
/ 3+
7
3
0
.2 1
%
,
4
.
4+
7
O
0
/
" 8! "
.
,
+%
/
.
O
+&
.2
O
0
0
0
/
0
,
,
M
3
,
0
,
0
4
,
3
+
%
9
7
3
/
0
/. M
7
0
.
7
4
3
.
,
4
,
.2
L
3
.
-
+
4
+*
/
/
+
)
2
>
9
(
=1
9
,
O
7
>+ 9
.
0
4
+% W
4
/
/
=
3
4
.
4 0
(@ (&
0
+>+ %
/
/
0
+> ,
4
X
. 0
+%
1
=
3
3
4
/ ,
0
+
9
4
+ 9
.
0
+)
0
+%
/
0
+%
7
S+ )
4
.
.
R0 M
1
.
" 8F "
R0 M
1
S+ )
4
+
)
4
Y
.
1
1
M .2
+
(
0
3
0
-
4 ,
0
3M
.2
0
/
/0
+
>
%
0
/ .
0
0
7
4
+)
7
4
0
3
=
2
4
+>+
%
0
.
7
3
,
,
,
/
+ )
0
0
=1
7
3
+>
.
4
7
4
3
L
+ )
-
0
2
/
+
%
0
0
•
2
0
/
/
•
+
/
=
3
.
0
•
%
M
+
3 0
•
>+
,
,
.
,M
+
O 1
0
" 8< "
0
+
>
F
3
3
,
0 - +
4 0
+ )
/
/,
3
0
1
M
,
+
)
4
4
0
4
.
2
0
1
/
,
.
+
.
•
$
•
$
3
.
+
.
3
+
=
•
>+
•
$
.
,
0
+
*
+,-.
#
9
" 8B "
+
:+8+:+8+" 1
*
) 3
3
9
0
+
4
4+
3
4 ,
+
3
4
0
"
+
%
4
,
.
+
1
0
,
%
,
!
,
-
+
4
,
3
,
+
%
!
+
+
M
.
0
+
)
P
+
, 2
0
,
,
!
Q+ 9
2
O
3
4
L
,
+
:+8+:+ +" 1
%
3
.
,
/
,
/
4
/
3
,
.O
/+
3
/
" 8A "
/
*
+,-.
>
9
+
%
0
+ %
3 .
0M
.
0
/ .
=
M
> , 0
1
4 =
0M
/
,
0
=
%
/ 3
M >+
/
0
0
>,
/
4
.
0
0
/
/
3
4
0
,
4
L
0
0
0
=
"
.
,
,
+
8
%
M
,
+
0
/
1
.
1
%
8
.
Y
.
+
.
0
4
/
+ %/
+W
(@ (&
" 8? "
X
.
9 )
>
>
F
0
0
1
/
/
,0
,
. /
>
=
0
+
/
0
,
3
3
+
%
0
3
+
%
•
0
(
4
0
0
+
. /
•
,
,
,
+
•
%
0
0
4
4 ,
4
.
+
L
•
=
0
2
4
-
> ,
- ,
4+
>
D
,
0
0
+)
/
0
%
3
/
+
- ,
.
/
,
. +%
0
4
+
2
4
+ )
0
4
> <
0
+
!
- ,
M
1
"
"
4 .
1
4 .
/
+)
/ 3 0
.
.
•
4+
0
.
.
/
. +
,
•
-+
3
•
,
4
,
.
*+,-.
F
.
/
3
>
.
+
•
,
3
+
/
/
+
3
4
4
,
2
+)
/ 3
4
.
3
/
•
4 ,
,
+ )
.
4
4
4
4
0
4+
-
•
0
0M
,
/
•
/
$
,
+ )
+
/
0
" 8"
3 ,
3
-
)
.
4
:+: W
(@ (&
/
0
.
X
.
/
3
:+8+:+:+"
1 (
/
*
9
+
4
+
4* 16
% ) . /9
9 ) P
(
(
C
(
%
QW@(( C 8X+
%
. /
9
7
W@(( C
0
9 )
/ 3
,
0 O
L
+%
,
4
. /0 1
%'( ()( ;
5
5
$ %) %
=555
5 +
$$())( %
' ( 5%@+
1
4
1
32
+*
3
,
4
.
. / ,
1
=
>+
+
4
+
0
8?? ,
.
3
L 2
5 >
3. 4
%
2
0
:+ +F
5
X+ &
3
.2
:+ +"
(@ (&
4
0
,
5
8X , W
4.
/ , M
"
1
L +)
1
.
+
"
555
3
,
3
0
1
,
/ 3
-
,
5
/
1
2
.
,
4+ %
M
0 .
L
.
4
0
+%
ML
,
:+ +8+" &
,
.
5 +
+
%
5
4 0
3
3
3
,
3
+ )
0
,
/
%
+
0
.2
2
-
+%
4
0
4 ,
4+
-
.
.
.2
0 3
4
M
L
0
.2
M
- ,
4 ,
.2 0
3
/+
%L
.2
1
5
.
,
4+ %
)
4
0
.2
.2
/
/
,
.2
+'
.2
/
+
.
-
0
+
%
2
2
1
,
G
4
0
3
" :"
.
.2
3 4
,
3
3
-
+
4
.2
5
3
%
"$
:+ + +" @
C
>+
X$
((C
G7
+%
1,@
3
0
0
+
)
.2
(
> 0
4
3. 4
2
$
.
"
4+
/
2 1,
/
+
M
+
2
3
$
3
0
3
/
,
0
4. + 9
.
,
=C,
.
.2
M
3
>,
+
4/
.
4
+
/
C
+
,
.O
=
, 5 %"9 )+
.2
/
1
3
9 )+
(6
1
=
,
4+
(
.2 $
.
"$
0
/
WZ( C
4/
M
4
%
)
4
4
.2
:+ + +8+" /
/
.
.
>
1
0
.
3 +
.
/ 3
+
-
" !"
0
+
*+,-.
%
$
3
+
3 0M .
/
3
•
+
+
PC
.O
G
2
1
,
3
2
+%
P
Q
H
2
32
,
2
1
3
+
+%
3
+
5
4 12
2
M
3. 4
3
M
•
0 1,
+
3
O+
)
.
3 .
4;
.>
.
O+
.2
3
+ %
.2
,
7
M
.
3 3
3
(
,
0
1, 0
1
•
/
4+
(
.
O
0
/
3
H
4+
2
+
•
M
3
3 3
Q, 0
0
4
3 . 4 >+ '
M
0
+ )
1
" F"
1
=
4
1
7
,
0
0
.2 2
.
2
7
+
%
8 =
4 2
- %
"$
.
2
=
3 ,
1
.
>
.
3
/
3
,
32
1
.
0
3. 4 + %
0
0
3
, 0
.O
L +9
1, 0
%
:=
$
+% .
-
3.
>
8 >,
.
+
/
.
$
3M
+ %
%
O
.
O+
. .
02 , 0
+%
+
,
!=
3
>+ %
! F <,B=
$
,
+
0M
+
3
0
2
0
O
O
2
4
.
2
.
1, 0
3
.
L
O
)
3
,
3
+
02
3
+
0 - =
.
+
+
,0
3M
3 4
2
0
0
3
+%
/
,
/
4
3
+
1
.
3. 4 +
.O
.
/ 3
3. 4 +
-
2
"
+
4
%
1
8 &+ %
/
3. 4 +
.
&
L
.
4>
-
4>
3
" <"
4>
$
/
. +
%
%
F=
-
>
-
0
%
%
<=
1
+
-
/
.
3
.
1
1
9
4>
0M
9 (
+
*
+,-. #
%
%
B =
4 ,
.
$
>
+
,
4 ,
3. 4 +
:+ + + +" /- 4/
%
$-
(
6
.2
@
.
, )
8??A
5
+%
+%
>
.
=
=
4+ %
>
0
" B"
+
M
4+ )
0
.
=
>
,
=
3.
3
>
-
+%
3. 4 ,
O
4
3
$&
+
O
.2
3
Y
4
:+ + +:+" H7
4H %$
7
%
(
.2
3
)
,
O
1
8???+ )
0
-
3
.
.2
3
.
+%
+
(6
-
+*
4+)
.
"
3. 4 ,
4 ,
.2
3
.
1
:+ +:+" @
M
%
+
/
:+ +:+8+" B/ 4
B
+
$/
6
.2
+ ) .
4 C
(
= C
>
2
( /
C
( /
/
4
4 =
> ,
/
4
/
=
>+
" A"
( ' 0
,
3M
M
)
.2
.
-
/
-
/
C
3
0
%($
0
0
/
4 =
C
,
3. 4
+
>
1
L
2
1
.
3
+
0
3
2
=
4
2
.
2
= 9 >+
:+ +:+ +" BB7
4B
(
O
4
4 .
.
.
4
+>+
%
0
1
,
$B
0
7
.2 $
( /
>
/
,
3. 4 ,
(
((C
C
4
2
6
=
.2
- C
+)
4
3
-
+
)
.2
.
2
7
.2
4
4
C
3
4
, 4
/Y
ML
.
+ 9
3. 4
C
+
.
-
+
4
M
" ?"
4 1
4 5
M
/
0
/
4+
0
2
% C
L
0
+
0
3. 4 ,
.
4
+
-
4
3.
0
W
((C
CX+
C
-
-
3M
3.
-
4+
>
D
+
3
,
/
0
,
+ %
L
C
3
C
,
/
4
2
=
>+
,
0
4
/
/
/
0
+ % ((C
,
0
+)
/
+
O
.
3
+
4
/
$ =
9 ),
"$
/
,
"
4 >+ %
0
/
+ )
+)
3
>
D
,
0
(
)
3. 4
-
3.
+
.
4
5
3M
C
2
-
/
4
4
+ % ((C
+9
": "
3. 4
3.
,
-
4
+
3
3
%
/ 3
-
3.
-
3. 4
,
3.
+
L
0
0
L
3.
/
0
+ % ((C
L
3.
+)
,
,
C
,
2
.
+
)
3
L
3.
+9
L
L
,
3.
3.
L
4
L
3.
L
/
3.
=
4
>+
+)
/ .
,
3
+ (.
3.
0
, 0
2
,
+ )
M
>
L
4
L
/
4
=
0
/
3 ,
=
>
D
.
C
0
>
3.
9
3
L +
0
1
3.
+%
/
3
2
3.
.
4
/
3. 4 ,
4 0M
,
9
4
-
+
3.
,
3.
.
.2
/
+%
3 =
5 >
2
0
+ % ((C
.2
4
C
" :8 "
+
%
# =#
.
>
4 ,
2
,
4
#
1
4+
> <
! %
-
1
-+ C
1
4Y
3
/
4+
.
0
2
-
4 0
M
4
+
.
Y
2
0M
,
2 3
, 4
2
5
4
:+ +:+:+" 3+
-
+
(
6
.2
5 >
+5
4
4
5 +C
' ,
,
-
.2
,)
4
=8??B> ,
:
-
T3
5
4
,
3
/
/
:+ +:+!+" +B7
-
4+
/
- C
=
0
%
(
0M
+
43
%
+
3
4+
$
B
.2
/
.
$
7
)
,H
( /
3. 4 + %
,
-
3.
+
,
8??A
3
3 +
(
(C
>+
": "
,
(6
=
.2
/
4 ,
((C
-
3
4
-
3.
-
4+ '
$
, %($ +
.
3
3
+
)
,
/
+%
-
3
3
+%
-
/
.
3.
+
:+ +!+" @
9 )+
:+ +!+8+" *3 4* 1$
3
(
95%
(6
4.
9
. /9 )
5 +
M
.
/
9 )
,
3
3
-
+9
4 ,
4 5 +)
5
( % ( +
%
95%
,
,3
0
3. 4
5 +
( !
.
95%+
,
3. 4 =
>,
4
,
%
0M /
M
3
, 4
3. 4 = 4
3. 4
2
3. 4
O
+ %
,
(
*
0
,
4
3.
,
" :: "
4
+
:+ +!+ +" BB$7 4B
B
(("C
.
7
L
6
4
M
4
0
/
1
M
+
. M
5
C%$( :X -
/
0
4
/
-
W
.
,
,
L
.
M
,1
0
.
+
9
/ 3
(("C
3
.
,
L
1
5 +
)
M
0 (("C
O
,.
4
5 +
(("C
/
1
+
.
3
3
0
5
+ &
4
.
/
0
3
%L
M
1
1
#
5
%0
5 +%
L
+
% 0
(("C+ %
4
4
3 ,
.
0
M
W ( %6 :X+
:+ +F+" ) . /
5 %"9 ) =5 "
5 %
%L
9 )>+
.
-+ %
L
0
0
- ,
/
4
5
4
. /9 )
3
/
5
3 4 .
=
+
4
" :! "
1 L
4
,
> 3
0
,
W (& ))%&
9
0
+
4
X
.
3
.
/
3
0
+%
3
O
4.
)
5
.
,
L
/
,
3
.
+
0
3
=
. >+
4
'
3
#
0
4
/
+
0
0
'
2
. /
/
.
= C
+>+
9
.
.
C' ) ,
4
.
4. + )
3.
0
3.
.
,
+)
0
)
.
0
.
5
. +
3
.
=
0
4
. >+ )
.
.
3
+
&
#
0
.
% 0
& 3.
9$)
% 0
3 + % 0
0
L
'2
<Body>
+
" :F "
0
@
=TitleTag>
2
=BaseTag>
9$)
=BodyTag>
/
,
9
[
0
\
4
.
0
+ 9
C' ) <form>+ )
C' ) =
L
[
L
1 G
\
L
,
0
4 0
.
O
0
+
&
+
#
0
3
=Method> V
M
9$)
O
4
5
O
M
3
%
POST+
GET
.
3
5 + )
.
+
/ 3 =target>+ %
.
+
&
+
#
0
*
3
V
O
+
2L
/
2L
"
3
%
.
>+ 9
0
+
3
1
/
3
O
1
3
+
3.
3
5 + %
/ 3+
$
%
/ 3
O
+
&
3
0
+
/
3
+
+ 4
L
&
&
3.
L
+
3
4
0
" :< "
+
.
0
+
9
G=
. +%
>
.
.
.
4
,
0
.
.
4 ) G
0
&
3
C' )
+9
<a>.
+
#
0
0
2
4
%
4
.
+
+%
3
.
/ 3 =target>+
<a
ref.=”...” target=”....”>+
&
+
#
0
.
+&
/ 3
/ 3
3
. +
%
4
.
/ 3+
&
+
#
0
9
.
*
4 P
3
Q
.
.
3
3
3
+ %
,
3
5
4
+
+
#
0
0
2
4 [
4
.
\
.
O
,
3
&
L
+
32
3M
3 2
,
+ )
3
)
. . 4 0
4 0
,
3
" :B "
+
+
3
+ )
.
3
.
+
)
4 [
4
\
0
.
+K
.
3
4
.
4
3
O
1
.
3
0
9
+
+
4 [
.
5 +
3
+
\
4
.
, 1
4
.
.
0
.
3
.
. +%
0
.
+%
4
.
3
+
&
3
.
4
4
4
4
4
4 .
.
1
3M
. +
.
4
0
4
+
=
.
.
0
&
META
4
, HTTP-EQUIV
0
3
Refresh+
"
0
.
.
4
.
=
<object>
&
Meta+
,
3
3N
/
+
C' )+
+
0
.
3
" :A "
.
. +%
0
Content
,
>
+ %
2
#
.
3
+
#
0
.
.
3.
0
.
.
.
&
+9
+
0
3
%
3
4
/
+ $
4 =
@
,
3 @
3
&
3
%
0
/
3
0
+
/
,@
+
&
3
9
0
+
%
/
0
L + )
C' )Y
0
<input>
,
\+
3
3
<input>.
0
[*
C' ) <input>+ %
2
0
/
>+
3
3
,
3
0
0
3
&
0
+
+
#
0
Type: e
=Text, Number, Password, Checkbox, Radio, Submit, Reset)+
Size
V %
.
+ Maxlength V %
0
L
O
0
+
%
+%
+
&
+
#
0
Size: e
+ Multiple: b
O
0
+
%
O
0
2
&
+
+
" :? "
#
0
O
Rows
L
1 3
3
+ Cols:
3
1
+
9
.
1
.
3.
+9
3
+ '2
.
.
L
3
4
0
*
5 +
5
.
3
3M
3
M
3
5
C' ) 0
4
3.
32
+
&
+
#
.
.
0
5
3
2
0
Path:
5 +%
3
2
3
4 5 +
*.
*
+,-.
:+:+" $D9 '% '9$
5 %+
%
)
(&% 5%@+
'
"
0
3
:+<+
0
2
+)
4
1
5
, 0
3
0
0
"! "
3
0
5 +
+
/
,
+
0
3
/
0
4.
0
4
0
=
.
3 3
4 +++>+
Primera Capa
(Cliente)
Cliente Web
(Browser)
Servidor Web
(Apache, IIS...)
Servidor BD
Base de
Datos
Segunda Capa
Tercera Capa
(Servidor de Aplicación)
(Servidor de BD)
*+,-. $
% 8??F
3
,
0
4
+
2
0
0
/
+ %
*.
:+B W (&6 )%6
%
X
0 - 4.
3M
O
.
=0
4
3
)
4.
3 0
4.
3
,
. 1
4.
0
+ %
L4
4
3
+
.
3
4
,
.
+
0
1 3
+ )
4
2
4
O
)
%
>+ %
+
.
0
+
1
,
3
/
0 ,
+
" !8 "
0
0 -
:+:+8+"
0
)
5 +
0
5
3.
3
,
5
3
,
3
,
+
% W (& ))%&
X
0
0
4 5
> 8
3
4
0
3
1(
3.
.
,
, 0
4.
.
3
& 3.
3
5
O
Y
+ %
C' )+
C''
4
L 4 Q0
.
C' )
C''
= .
+
+
>
,
4 0
+
3
4
+ %
4 .
.
3
3
0
+
•
P
4 0
3
/
•
3
,
3
3
•
,
+&
.
3
3.
O+
0
•
+ )
4+
.
•
4.
4
3
•
4
+%
3
4 ,
•
0
,
3
•
6
1
9$)
"! "
.
+ %
+
1
.
=
> 8
=
3
93
3
>+
4
3
6
2
+
4.
+ %
3N
/
5 > ,
C' )
+%
0
0
=
L
/
5
+%
,
.
.
0
0
3.
>
3
4
0
4.
.
+'
3M
4
4
C'' +
,
3
8
3
•
+
3.
•
N )+
•
3N
4 .
/
0
+
-
3.
32 C'' +
N )
•
/
•
3@
•
+++++++++++++
> 3
4+
+
4
! 3
C''
6+
0
/
+ %
/
4
3
"
3
+
/
5
0
1
/
3.
3.
+ %
,
4
.
.
4
&
+
0
.
,
,
,
+%
0
0
" !: "
/
0 .
5
4
.
)
.
.
.
3
0
,
"
(
(
1
,
,
1
3
>+
3
4.
, +
/
.2
0
:+A
.
0
,
,
.
4
2
3
(
0
0
+
*+,-. ( %
%
%E( %
'
4
4
0
+
' ( 5%@+
0
0
4
/ 3
5
,
0M
4
=$
+
) *.
L
$
+%
.
3
M
,
,
0
:+!+" $ &
3
,
.
+
0
4
4
)
0
3
M
,
- 5 +%
-2
+
" !! "
+%
-
,
%
- 5
P
I
(
Q W (5%)) 8X+
4
.
- 5 +
>
+
)
1
.
1
3
4 0
0
+)
.
2
2
> < (
+
0
4
/ 3 ,
L +
,
4
L
3
3
L
0
4
2
2
,
"
M
0
. /
.
+
.
+
, 0
4
,
. +
-
.+ '
<IMG
3. 4
ALT=”..”>
,
3
+
> 1
( !+ )
'
3. 4
.
.
0
3. 4
4
+%
3
$
.
0
/
3.
O
0
L
+
+
3 4 .
1
.M
,
0
(
3
4
,
+)
> 1
0
,0
3. 4
'
W (5%)) 8X+
2
+
+%
0
+%
3
3
,
0
3
+
,
4
/ 3
" !F "
/
0
,
Y,
.
3 +
> 1
I
!+ )
4
0 -
+
3
.
4
O0
,
O0
.
+%
O0
.
3
4
L
> +(
+ %
0
+
L
4
.
.
G
+%
/
,
)
•
9
•
9
•
@
X
+
4+
1/
1
.
+
4+
3
0
3
•
+
+
$
+
•
2
•
) .
/+
3
,
•
•
- 5
4
•
.
3
W (5%)) 8X, W& %) %&
•
.
+
+
*
= 3
.2 =
•
3
+%
-+
4
•
0
3
4
>+
" !< "
>+
:+F+" '% &()( ;
$ %) %
$$())( %
%
)
(&% 5%@+
.2
,
L
5
. / C' ) 0
1
5
5
:+F+8+" C' ) =C,
5
' L
C' )
0
- ,
.
+
G ) . . >+
. /
1
L
4
0
2
.
4
5
):+ %
L
0
4
1
+ C' )
L
.
4
, 4
L1
4
. /
+
%
. /
.
.
.
5
0
+&
.2 =
:
V
.
+
1 1
+>
C' )
0
0
.
.
+
>+
0
.
.
5
+9
3
4
5
/
3M
3
+
) =) . /
L
3.
3.
.2
5
,
.
7,
0
C''
3
3
0
=
%
.
3
. /
4 .
:+F+ +"
3
,
4
5 + ]
,
>
. /
4
X+
" !B "
1
.
L
L
W (&6 )%6
Internet
Cliente W eb
(Browser)
[ HTTP ]
Servidor Web
(Apache, IIS ...)
[ HTTP ]
CGI
Docum.
HTML
Otras Fuentes
de Datos
*
+,-. " *
.
4
+
9
4
.
5
0
.
0
+
3
=
,
B ase de
Datos
5
,
.
>
3
3 3
+$
=
3M
.
3
.
0
^^ #
@
.
. /
3
4
C =C,
.
0
>
=
1
.
3
3
0
1
0
4
+
,
1
" !A "
3
4
3
.
0
3
/
O
M
5
L
,
4
0
.
+
. /
0
3
. /+
+
)
3
X
+>+
text/html, text/plain, image/jpeg
,1
0
=Content-type W
MIME
:+F+:+" ) . /
.
32
C' )> ,
)
5 +
L
4
0
,
.
.
+
. >
,
. /+ K
1
C' )
,
3
0 O
1
3.
.
+%
3.
.
4
1
.
,
0
3 0
+
3
. /
L
1
,
+
C
4 .
1
7
=
0
. /
,
+++>+
.
3
4
.
4
=
>
4
0
+
'
C
0
4 . C' )+ %
, 4
4 .
0
4 .
1
. /
.
C' ) 0
0
1,
+
Petición página PHP, ASP...
Cliente W eb
(Browser)
Servidor Web
(Apache, IIS...)
Documen to HTM L estándar
Página
Página
Dinám
ica
Dinámica
(PHP,ASP...)
(PHP,ASP. ..)
M otor
Lenguaje
Script
Páginas
HTML
*+,-.
%*
Otras Fuentes
de Datos
Base de
Datos
. /
*.
3
:+8 W (&6 )%6
X
=.
( @
.
0
4
. /
>
0
, 2
+
@
5
=
. /
D)
" !? "
+
3
(
,0
+>+
:+F+!+" @
3+
3
. /
-2
,
.
4
/
+ %
. /
/
^^
-
1
3
2
/
4
.
. /
+%
4
1
3+ %
4 .
/
. /
4
.
C' )
5
+%
. /
.
-
+
0
/
4
4 .
3M
+
0
1
.
1
1
O
/
20
+
)
3
3
.
3
^^>
3
3
4 .
4 .
.
+)
0
#
=
+ )
4 .
0
0
0
+%
=
/
4 0
1
M
.O
3
,
3
4 .
4
=
#
/
> .
3>
0
M
3
4
+
3
>
0
@
,
. /+
3
'
.
/
= 3
2
5
@
3 ,>
4
%
0
+
3
0
3
/
=
"F "
.
4
>
1
4
)
0
+
@
,
D) =) . /
/
%
>
L
D) ,
+
( @ =
3
@
>
3
M
0
+
@
,
+%
4
3
@
@ =
@
.
2
>0
+%
3
.
3
3
D)
,
+)
0
:+F+:+
%L
@ "( @
@
M
0
( @
0
,
( @
+
> +
9
3
3
3
L
3
+ )
2
/
5
3
0
3
3
0
/
#3
Y
5
C'' + &
0
/
,
0
0
0
M
)
O
.
1
+
3 0
5 +
.
/
3M
2
+
.
+ '
0
13
3
" F8 "
4
,
,
3
0
0
5
.
3 ,
+
.
0
3
.
.
3 0
0
+
,
+ '
M
,
0
.
M
+
>
= .
3
3>
3
C' ) , N )
.
4 .
+
3
4.
/
0 .
.
3
+%
4
M
13
0
3
+
,N )
.
4 ,
4Y 2
.
C' )
.
.
:+F+F+" N ) = N
)
N )+
G ) . . >+
N ) =) . /
N
0
0
>
/
2
+
N )
+%
),
/ 3
0
5
3
-
3
+& 1
0
.
,
C' )+
0
4
4
). M
0
N )1
4
/
. /
4>
/
4
+N )1
0
C' )> ,
,
"F "
=O
/
4
3 =
4 0
+
3
%
4
3
N )
/
3
0
4 N )
L
1
.
3
+
0
4
M
'
+%
4
0
4
.
0
4
.
4
,
'
>+
N )
3
0
, 0
4
=
N )Y
. /+
.
-
. /
N )
.
,
'
0
.
.
+
:+F+<+" N ) = N
,
N ) =) . /
5:
1
1/
=5
5
N )
L
5
+
1/
=C /
0
) . . >+
0
1
%
0
>
2
,
N )
3
4.
. / 1
M+
. /
N )
N )
2
3
+
2
0 -
4
>
3 1
N )
>
0 ,
4 ,
L
4
-
. /
+N )
N )
-
4.
" F: "
1/
+
)
N )
3
N )
5
-
+
=
N )
. /
,
0
+,
%
1/
>0
. /
0
L
+%
N )+ %
3
N )
. /
/
C' )
+
1/
N )
,O
+
N )
C' )
.
0
4 ,
4
0
<
N )
1
L
3
4 N )
4
+%
4
4
4 0
,
3
.
N )
4+
) .
3
0
/
N ),N )
0
,
4
13
:+<+"
'%
% '($%
)
4
1
% (&'%&
)'%$& ' #
.
.
3
4
3
4
4
4
O
(
+
4 ,
4
+
2
M
C' )
+ %
0
4
1 1
3
3
0
5 +
)
.
O
4+
O
3
2
4
3 O
" F! "
4
,
4+
%
1
/
0
3
L
2
.
@
9
,
O
=
3
.
#.
', :
.
1
4
>+
21
+
,
,
3
M
W@( (
,
0
4
%
1
/
X
4+
0
4
0M
.
3
0
.
P
,
2
+ %
!
Q+
9
/
,
.
3M
4
4
.
+)
%0
3
.
0
+ ) *.
+
1
" FF "
4
+%
+
*
+,-.
)
O 3
4 ,
,
0
0
:+88
•
(
3
.
,
M
,
+
3
•
3
2
L
+ %
3
,
. /+
•
$
,
1
0
)
1
+
.
/
+
.
/
/
Y ', :
4 .
6
6)
),
7
C +
, 4 .
.
,
4
3
,
+6
6
L
,
)+ )
3 4 .
,
.
,1
,
2
4 ,
.
4 5
:+<+8+"
%
=
-
.
=
7
>+
.
0
,
,
.
5 % >+
0
5
-2 ,
.
+
4
3 .
4 5
+
+%
.
%
.2 +&%'+ '
#
3
3 ,
0
4
,
_ +&%' ,
1
4
+
" F< "
+&%'
`
3
5
:+<+8+8+"
3
2
,
4 ,
4
.
0
,
, %L
>
.
3
5
+)
!
!
1
0
,
,
5 + %
4
/
4
/
O
,
3
.
4
.
L
13
,
3M
N ) C' ) ,
L
4 ,
+)
.
4 0
.
+)
+
/
/
3 +
D)
1
4
5
•
3
,
L
+
5
. .
3.
4
+9
0 1
1
/
/
.
+ )
32
.
3
5
3
3
3
0
3 4+
(
•
B
F
,
5
(
>
3
,
4
1
.
+
!
.
3
.
#
+&%'+ %
,
4 .
3
3M
" FB "
/
+
>
C
3
.
=
8
2 W%& ) C :X+ %
O
3
3
>
5 +
1
3
.
,.
2
,
4
3
4
1
6 B
3
7
0
+
F
3 4 ,
•
/
4
/ 4% 9 %6
3
4 ,
0
,
+
0
•
2
3
,3
.
.
•
3M
3 , L
+
•
,
L
-
3
.
4+
L
•
4
L
1
•
3
7
,
.
+ - 8
7
0
+
.
+
N )+
•
4
•
1/
N )'+
4
•
3
•
5
,
N )
+
3
3
" FA "
,+
+
:+<+ +" ', :
'H (:
4 .
. / C ,
,
/
)
.
, D)+
L
,0
3
/
,
0
0
4 5 + )
,
L
.
,
0
% W 'X
•
3
3
%
.
/
4
4
,
+
', :
,
4
/
/
+
•
* L
•
$
0
,
+
.
4
3+
4
•
O
.a , 0
•
•
.
.
%L
+
4
8<
/
.
.
+
/+
+
•
:+<+ +8+"
', :
4 .
+% .
),
+
1 1
3 3
-
L
', :
W'H (:X+ %
4
,
3
4
W'H (:X+ (
0
•
%
4
2
.
>
0
F
0
3.
" F? "
+
M
-
•
9
L
0
.
,
, L
5
•
(
.
L
0
L
L
4
.
1
.
+
- ,
.2 b ( < ( b
.
,
)
4
0
0
5 + )
•
.
-+
,
O
0
3
L
•
4
+
%
,
.
/
/
•
0
,
+
)
O
L
/
+ %L
4
+
•
'
. 2
+
•
)
.
/
0
1
13
+
)
,
0 -
>
F
%L
/
L
4 =
/
/
•
L
+
0
•
,
.
,
•
0
/
.
=
9& N>+
"< "
+
>0
,
,
.
.
L 8
,
0
%
3
.
.
4
+
,.
•
/
,
4
)
5 +
,
1
/ +
3 4
.
•
O
.
.
•
,
O
+
'
2
3
1
3
O
•
.
1
.
L
+
3
0
/
.
+(
1
,
4
1
.
C
,
,
.
+
>
0
F
3
•
.
.2
4 8
+
. /
,
,
,
O .
,
.
,
)
.
.
/
4
0
3
,
3
C' )
. +
.
.
+(
.
4
4
+
4 .
•
-
,
, .2
4
0
4
', :
.
+ %
.
0
%
0
.
4
,
L4
/3
+ '
L
0
+
L
+
32
M
/
.
.
C
.
•
2
1 4
3
O
•
+
3
.
13
+ 8
,
-
3
•
.
1
4 . C' )
+
" <8 "
%L
•
,
.
-
5 +
•
%
4
3
+
43
(
)
)
L
4
.O
.
0
3.
+
+
0
3.
+
7
.
3
;
E
< (
( + %
,
> +(
0
C +
7
3
M
4 +++
4
.
4
5 )
N )
0
3
1/
.
> 8
3.
.
.
, D)+
.
13 + %
-
2+
4
32 ,
%L
+
,
4
)+
>
+ ', :
4
C
, D)
! ,
/
3
+ '
3
++> ,
.
1
=)
L 5
7 *
1
@
+
&
O
)
:+<+:+" 6
L+
+
6
3 .
4
3
0
5 +*
2
,
5
/
7 &'
9& N") &9N
:,N +%
+%
,1
-2 A
"< "
. /
+
.2
C
.
6
/
4
/
,
3
4
,
.
/
.
,
6
.
+
O
0
P
3
Q+
>
2
.
3
3
=
+*
,
(
> ,
3
5
,
=
1
3
5
>+
>
0
6
3
+
> 9
5
=6
> 9
/
T
T
.
.
.
6
D) ( @
>
4
9
4
,1
+
N ) *'
. /
8
>+
=6( @>
0
>
C''
=A
1 ( ( "
+
( 8
' )>
3M
"6'
. /
+
.>
+
) *.
:+8 W
9%) 8X
0
2
/
C''
3
6
4
5
/
1
A A T
T
Lc1
1
.
+
+9
/
,
9$)
0 2+ %
+ % 6
.
TT
/
0
/
/
1
5
D)+ 9
/
/
4
index_html
demo+
%
,
6
1
4 5
" <: "
%
-
=
5 % >+ %
.
4
6
+
*
+,-.
0
6
+
:+<+:+8+"
6
1
4
TT777+
+ .T
+% 5
win32.exe>
,
+
7
)
7
0
4
.O
0
/
13
L
.
13
M
=
/
.
, /
Zope2.7.0-
4 =install>+
/
)
L
start.bat
5
7
0
" <! "
=start
5
7
L
+%
4
3
/
4
*.
4
:+8: =
+B+ >+
*+,-.
1
3
6
+
4 6
,
2 .
9$) 1
C' )
%L
,
TT
3.
1
A A T
3
-
6
&
& 3.
6
+ %
,
3
4
4+
4
*.
.+ %
0
%
3
3
6
=6
>
0
:+8!+
*+,-.
4 6
" <F "
=6
>+
%
3
3. 4
+%
3
0
4 ,
3. 4
/
3
/
.
6
3. 4
Y
,
1 3
2
M+
6
%
/
+#
*.
4 ,
3
:+8F+
*
+,-.
% 6
#
,
6
2
=
+
4
+
=
7
>
2
.
A
J
9
>+
:+<+:+ +" B
% .
/
F
•
,
•
6
.
,
L +
1!( F
(
" << "
,1
, D)+
!F
•
/
3
0
6,
*+,-.
-
3
0
6
4E
.
-
>
.
4 Add+
4
L
6
6
4
, .
/
+
/ 3
/
,
4 +
5
0
+)
+ )
*
+,-.
)
ML
L
3
title
' )= 8 1
+
=
,
,
=6 '>+
/ 6
0
:+8B
6
6
/
/
>
+
. /
, 8 1
.
5
6
+
$
/
/
3
6
+
6
+%
/demo/Indice
1
.
" <B "
)
/
*.
=ObjectManager6 ,
indice
+
3
,
>
6
L
-
1
3+
7
1/
+
/
13 + %
13
0
13
>
Q
1
.
*
13
-
-
. +'
%
, & +
/
+
@
=
height
M
P
> , width
Q
4 Upload
0
/
0
/
+ %L
+'
M
D) 0
=
=
.
>+ )
.
M
M
2
0
/
objectValues
/
2
<ul>
<dtml-in objectValues>
<li><dtml-var getId>,<dtml-var title></li>
</dtml-in>
</ul>
" <A "
1
+
0
/
M
13
.O
+ 9
,
M
8 1
4 > , +J1
M
0
P
/ 6
(
6 < ( 4< ( 6F
>
+
+
*
+,-.
1
1
0
content_type
%
,
13
3
13
=
3
+
4E 6F
* 1
, contenido
/
/
M
' ) 0
0
/
0
>
8 1 4
81
6
' )+ )
4
+9
/
.
C' )
5
0
' ) .
0
M
.
5
.
<i>Gracias por su visita, © <dtml-var portal></i>
0
piepag
/
,
2
9$) 1
' )
TT
1
M
3
A A T
.
.+ '
3
M
3
' )
' )+
/
<html>
<title>Ejemplo</title>
<body>
<p>Bienvenido a nuestro portal,
<dtml-var AUTHENTICATED_USER>
</p>
<dtml-var piepag>
</body>
</html>
>
A
+F
6
C' )
N )+
4A
( 8
6F
+
/
,
3
4
.
.
3
4
,
4.
. /
0
.
+9
/
,1 +9
/
6'
<html>
<body>
<p>
El título de la plantilla es:
<b tal:content="template/title">titulo</b>.
</p>
</body>
</html>
.> +
/
1
0
4 .
2
from DateTime import DateTime
fecha='%s / %s / %s' %
(DateTime().day(),DateTime().mm(),DateTime().year())
return fecha
" <? "
5 + %
4
4
0
4
:+<+:+:+"
6
M
.
. /
/
8 1
(
5
' ) ,
, 8 1
6' ,
,1 +
4
2
%
' ) , 6 '+
:+<+:+:+8+" 8 1 4
8
' )
. /
0
6
+
+ &
1 ( (>
3
+ %
' ).
L
4
9
. /
,
4
,
.
4
, 0
4. +
+
' )
.
5 +&
. M
.
=
L
4
0
0
' )
1
4.
0
0
3
R
=
4
' )S&
. /
X
.
4
3
.
'
, 0
4 + % W) ''% %$
/
4
,
+
3
.
(
/+
+> )
1
4
C' ) ,
=
4
>+ &
/
,1
1
L
, 1 >+ &
. M
=
=
>+
/
,
/
6 '>+
R
M
+
M
0
+
M
/
' ),
' )S
1
/
0
M
+
/
"B "
/
M
/
M
+
/
, 0
0
)
0
L
/
/
/
0
+
L
' )
C' )Y
+
. /
. /
.
L
' )
var>
O
M
=N )
0
,
=
.
C' )
/
(
,
4
=
L
+>
/
0
dtml-
0
/
dtml-in>+
'
0
' )
0
0
•
+
+%
.
,
3
var
M
0
expr
•
in
•
in / with / let
3 O
.
,1
' )+
O
+
+
+
M
all
3 3 3
4 .
+
' )
comment
•
tree
•
sendmail / mime
•
raise / try / finally / except
.
' )+
C' )+
:+<+:+:+ +" A 8 4A
32
4
( 8
6'
M
,
/
•
/
.
4
0
L
+
4
. /
=C' )>
+
6
3
32
4
4
+
1
' )+
M
if / else / elif / unless
•
,
var
•
6 ',
3
4
' )
•
'
4
3.
.
+6
/
+
0
+
" B8 "
5 +
0
' ) 6'
6'
.
4.
%
L
4
0
+
.
C' )TN )+
-
,
,
3
.
4
+F
+
P
/ 3
6
Q .
/
,
0 /+
4.
' )
.
C' ) 3
' ) R
0 M 6 'S+ 6 '
/
' )
4+
C' ) 3
.
+ %
6'
.
+
6'
> 8 1 48
1 ( ( 6+ %
0
. /
0
C' )
3
4
' )
0
,
4
+)
N )0
C' )+ )
N )
' )
•
tal:attributes
•
tal:define
•
tal:condition
•
tal:content
•
tal:omit-tab
+
3
+
3 O
4 4. +
,
+
0
,
+
•
tal:on-error
•
tal:repeat
•
tal:replace
/
+
+
,
,
+
0
3
' )
L
repeat, content
> 8 1 + 48
0
5
/
4
4replace, attributes , omit-tag+
+
' ),
56+
0M L
%' )+ )
"B "
C' )
,
define, condition,
>
•
path
•
exists
•
nocall
•
not
•
string
•
python
3
1+
3 O
1
3
+
/
.
L
1+
4+
+
/
81 4
L
5
4
,1 +
8 16+ ) . /
+)
•
/
metal:define-macro
.
0
=
.
+>+
+
•
metal:use-macro
•
metal:define-slot
•
metal:fill-slot
+
4 0
3 0
%
L
4
/
6',
' ) L
2
5% +
:+<+:+!+"
%
+
!
6
M
0
O0
M
4
M
=
>
,
1
/
4
+
*+,-.
" %/
" B: "
0
4+
/
0
+
1
/
L
/
4
M
6
+
/
+
/
.
/
4
+ 9
/
,
+
)
./0
/
M
4E
>
ObjectManager
/
objectValues
M
M
/
/
dos
0
0
1
+
.
/
unodos
unodos
./0
unodos
color
1
unodos
color
+
uno
3
./0
1
,
4
dos+
4
4
5 +
3
M
0
3
3
.
+)
3
4
+ %L
0
M
L
+
,
/
4
2
tamano
/
0
6
ejemplo
5
.
/
L
.
3
0
,
dos/tamano
4
)
=,
+
tamano
/
2
1
/
1
6
,
dos
unodos
dos
color
ejemplo
/
3
3
unodos
> 1
6
,
30
0
+
" B! "
M
.
:+<+:+F+" + (
)
5
4 ,
.
0 M1
+)
+%
0 M
.
-
5 +
3
4
4 ,
0 3
6
2
5 +%
0
0
.
.
M
4
.
.
4
.
6
Y
.
6
+
.
,
)
.
.
+
3
4
1
6
- 0
.
4+
0
4+
4 ,
.
0 M
,
4
.
+ 6
/
4
,
4
0
+
:+<+:+F+8+8
4+
L
0 .
4
/
5
4
3
7 N
0
*.
*+,-.
%
4
" BF "
3
:+
M /
+
6
+
6
+
6
/
0
4
+
)
*
.
/
>+ %
/
0
O
=*
>
3
3
3
*
4
+6
K
=9
*.
,
=9
+
#
*+,-.
-
/
*
+
>
:+ 8
,
L
,
+
-
3
0
C ,0
+
=
- =
3
>
3
>
0
Y
>,
=
L
*
+,-.
%
6
4
L
/
=
02
/
L
>+
6
+
O
3
+9
0
" B< "
4
2=
/
02
/
O
3
L
>
3
+'
6
.
,
2+ %
3
2
L
.
+
.
.
=
>
/
3
,
0
+H
O
/
. 4 =
/
0 -
:+<+:+F+8+
-
3
=
. >
02
3
(
>+
02
3
/ 0
4 ,
2
6
1
+ %
4
6
4
.
3
3
.
.
2
7
+
+
2
.
+9
+K
0M
4
,
0
.
0M
=
.
.
4
2
4
,
.
,3 3
+
.
=
>
/
+
>
/
4
+)
02
1
/
6
0M
+%
+
%L
6
( F
•
4
6
F
•
user
3
+
0
0
1
+
O
anonymous
0
/
1
O
+
+
" BB "
•
B%
F
.
L
0
/ +
F
•
.
3
0
4
0
+
.
0
+
%
3
+
1
L
-
0
Security
0
L
3
L +
*+,-.
C
)
6
+
(1
1
4 ,
.
6
+
3
4
+
*
+,-.
%
-
,
+
0
*
L
.
2
/ + %
.
0
+
6
- +
3
4
/ +
)
0M
3
.
4
4
3
0
0
1
4
6
,
.
0
.
3
"
/
=
>+
" BA "
0
.
+)
*
+,-.
#)
6
+
6
(
2+
.
0
0 .
.
.
/
%
.
/
+
.
0
.
M
.
2
0
.
.
!+
0
+#
3
3
4
"
( L,
3
+
*+,-.
0
4
+
2
0
3
,
3
+
" B? "
0
0
4
:+<+:+<+"
6
L
L
4
L
6
4 ,
M
4
+ %
6
3
0
M
D) 4A +J1
L4+ 6
, 2
.
.
D)
(
, D)
+
4
( @
,
4
3 O
4 , 0
4
/
0 - +
L4
/
3
4
+
L4
( @ +%
=
,
,
,1
+ )
.mdb
.
.
6
,
0
3 >+
/
AB .
,
2
,
L4
.
L4 ,
L4
+
*+,-.
$
L4
L
"A "
+
/
8
4 .
L4
D)
1
M
/
,
SQL Method
=
4 >+
*
+,-.
( %/
4 . D)
.
-
L
.
2
+
3
M
D)
4 .
insert into prueba values (1,'uno',1.10);
insert into prueba values (2,'dos',2.20);
insert into prueba values (3,'tres',3.30);
M
/
D)
, 0
/
4+)
0
4
+9
1
M
/
D)
+)
32
4 .
<html>
<body>
<p align="center">Introducir datos de prueba</p>
<form method="POST" action="insertar”>
<p align="center">uno <input type="text" name="uno"></p>
<p align="center">dos<input type="text" name="dos"></p>
<p align="center">tres <input type="text" name="tres"></p>
<p align="center"><input type="submit" value="Insertar"></p>
</form>
</body>
</html>
,
M
D)
insertar
,
insert into prueba values (
<dtml-var unotexto>,'<dtml-var dos>',<dtml-var tres>)
" A8 "
4 .
3M
%
4
=3 * .
M
L
:+ A>
.
.
M
uno, dos,
tres.
*
D) select+
M
D)
,
listarRegistros
4 .
select * from prueba
' )0 3
2
.
<html>
<body>
<table>
<tr>
<td>uno</td>
<td>dos</td>
<td>tres</td>
</tr>
<dtml-in listarRegistros>
<tr>
<td><dtml-var uno></td>
<td><dtml-var dos></td>
<td><dtml-var tres></td>
</tr>
</dtml-in>
</table>
</body>
</html>
:+<+:+B+"
)
,
3
= /
2
,0
6
>+ %L
0
,
1
TT777+
+ .T
%L
6
12
,
+
6
,
. /
+)
.
4
1
,1 +'
6
)
3M
M
6
M
+
Product Management Folder
+
3
=PortalIES> ,
4 Add Product ,
2
Generate+
"A "
=Portal Genérico IES> ,
4
*+,-.
%
0
*
+,-.
+
%*
/
M
3
/
' )
addForm+
3
/
4
/
+
0
.
.
0
M
.
6
%
"9
4A
=FactPortal>
0
6
2
/
.
6
=Portal Generico>
=Portal Generico de IES> ,
3
*
E
+
=addForm>+
0
+
M
/
0
L
3
3
34
/
0
32 5
2
6
addForm>
4
0
M
=portalgen> , 1
1,
=
0
+ ) *.
/
:+:8
>+
Help
" A: "
=add
,
0
2
*
+,-.
%
,1
3+
add
4 .
0
.
3
/
2
.
#El script recibe un parámetro llamado id con el identificador que el
#usuario ha elegido
#Paso 1. Clonar la carpeta portalgen que contiene el objeto a instanciar.
exhibit=context.manage_clone(container.portalgen,id)
#Paso2. Poner título al nuevo objeto
exhibit.manage_changeProperties(title='Home')
#Paso 3. Si la creación del nuevo producto es vía Web, redireccionar al #contexto llamador
if REQUEST is not None:
try:
u=context.DestinationURL()
except:
u=REQUEST['URL1']
REQUEST.RESPONSE.redirect(u+'/manage_main?update_menu=1')
*
3
/
L
Add Documents, Images and Files+
3
*
+,-.
/
3
/
0
Portal Generico de IES
%
/
" A! "
6
+
1, 0
1, 0
3
- Distribution
4
,
4+ '
,
M
.
L
. 0M
4
6
4 .
. 4
3
13 .
4 ,
6
3
/
L
(
.
13
,
,
4 .tar.gz+ %
E
/
6
.
4
3
+
3
0
O
3
,
+
0
.
3
+)
+
L
.
2
O
M
+
" AF "
.
/+ C ,
/
+)
.
3M
.
0
.
% 96
4
0
+
2 PortalIES-1.0.tar.gz
E4
*
.
3
+
%
.
+%
0
*+,-.
:+<+:+A+"
O
0
4 ,
)
2
*
4
•
3
P . Q, P .
•
•
+
Q+
%
0
+ %
L
•
-
.
,
+
3
•
/
)
"
. 4
3
•
1
3
4>
.
,
+
+
.
4
+++> ,
4
/
/ =% 9 %>
4
*
+
M
.
6
)
3
+
3
•
,
0
.
P
.
,
1
+
,
0
Q= 9 >+ %L
.
,
3
3
O
+%
0
+
1
4 1, 0
=6 '> ,
•
1
1
O0
0
•
=2
4+
0
=
•
,
0
1
%
13
+
)
•
3
%
-
.
L
13 +
*
0
L
.
M+
:+<+!+"
+
.
4
5
4 ,.
4
" A< "
4
5
6
,
+
+
'
0
3M
1
5
.
0
4
/
,
3 ,
+
,
)+
,
+
'
*,
.
2
O
3. 4
1
,O 0
3. 4
0
.
.
0
,
+)
,
O
/
0
Y
0
3
3.
O
3. 4
,
3
0
.
+
.
+ %
4
1
.
/ M
3
3. 4 ,
4
0
0
,
1
.
+
.
3.
+
%
3
0
1
0
1
4
3
.
+ %
3+
%
3
0
2
,
1
.
0
3
,
.
.
3
+
*+
" AB "
+%
.
M3.
0
.
1
4 ,
4 ,
3
)
3
)
4 ,
4+ %
. 3
2
0 6
3
3
.
,
4
O
1
.
.
/
,
/ 0
3
+
/
. C'' + )
O0
1
,
4
+ ) 0
3.
1
,
3
4
4
4
3.
+
)
0
,
3.
/
,
4
,0
4
%
,
4
+
$
4
N )+ '
02
3.
/
3
1
,
3
3
0
,
M
4 N )
3M
3
%
/
3
4 +
+
/ =7 G 7>
/
2
,
3
3
3 . 0
.
0
4
/ + )
.
4
/
,
3
3. 4
+&
O0
+
H
,
3. 4 +
3.
.
,
+
/
0
,
.O
M
+
M
4
3
,
/
'
/
" AA "
3
,
+
3
0
L
,
4+
/
4
0
,
O
/
0
3
3
I
%
+%
/
O
2
3. 4 +
3
2
+
3
3.
3. 4
.
,
+
,
0
+
3
O
+%
4
3
3
,
3
L
+ %
.
/
0
2
/
'
3
,
L
O
M 1, 3
=
+
>
/
0
0
/
,
,
+
/
2
0
3 4
2
,
0
0
1
+
/
0
M
/
1
%
5
.
4 ,.
4
(
.
+
+
" A? "
,
1
+
3
*
+,-.
.
"? "
(
+
4.- MÉTODO DE TRABAJO.
%
M
/
0
> $
.
4
,
1
1
4
4
7
.2
> %
5
.2
.2 ,
/ 3
.2
3
,
/
,
6
. / ,1
4+
> %
,
>
0
-
4
+
4+
>
4
4+
.> $
4+
1>
5%
0 1
&
3
3
0
1
,
+
1
0
+
>
>
1
4
.2
8+
4
3
6
+
.
>1
.
.> , 1>
,
F+
L
3
4
4+
/
+
%
%
/
1
+ (
%
%
+%+ +
+
1
.
)
.
+
3
,
1 1
0
+>+
4
>
=
4
> > , >+
3
L
" ?8 "
4
.
1
.
3
4
4
4+
( H &I)
$%D9
!+8+" % '9
- ,
'(
%)
)
%
J&+
3
.
4+
!+8+8+" ( .
4 ,
9
%
%
3
-
,
+
=% >
4
4
4
-
/2
0
%
4
+
%
-
.
%
-
4 ,
,
+
%
>
)
4
@ 1
,
8< -
L
'
-
.
.
=
2
C
*
M
% (+
,
+
4
=
.
3
1
2
*
3
3 +)
0
.2 , @ 1
.
*
=
@ 1
,
O
8 , 8< - +
>
4
(
,
, 2
-
%
+
'
.
.O
0
%
2
%
> 0
3
% (,
2
"? "
@ 1
+
+%
%L
-
.
L
0
2
%
%
L
%
4
4.
+
/ %
%
0
3+ %
,
,
,
,
0
%
+
,
%
3
0
/
4
.
M.
M
4
/ 3
,
+'
3
M
%
L
,
,
%
,
3+
4.
.
%
/
=
% (
)
.
+
)
%
"
@ 1
,T
-
*
%0
3 0
,3
%
4
>+
.
+
+'
O
%0
0
3+
L
.
,
+
0
.
0
/
3
4 ,
/ 3
4
)
4
4+
3
+ )
,
.
.2 ,
3
3
@ 1
+%
.
.
4
*
" ?: "
% ( ,
4
+
9
3
4
/ 3
.
3
+%
4
3
3
,
4
0
!+8+ +" %
3
0
0
0
+
)
L
5
)
2
.
%0
P
3
4 Q,
.
0
4
.
5 +
.
0
2
.
C
+
4
,
+%
0
3
= 1
+>+ %
.
0
4
+
4
•
.
1
4
2
,
+
0
•
4
0 0
•
.
3
3 0
•
1
)
3
L
•
0
)
•
)
=
.
+
,
.
3
•
4
+
0
•
3
+
%
%
+%
+
0
4
O
3
+
3
M
/
4
.
/ %
" ?! "
+
,
3
L
+>
4
+%
.O
3
•
%
/
4
%0
=
4
3 1
.4. > 0
=
•
+
>+
)
/.
+
.
4
0
.
0
4
=
•
%
,
%
3
.
, %L
3
4
+
0
.
L
4
/ .
0
L
4
.
>+
3
,
•
M
%
0
/2
4
%
.
+%
+% %
4
4
2
4
L
4
+
•
%
.O
L
4
5
=
,
M
>+
•
$
2
0
1
0
,
1/ +
O
1
2
+
4
.
3
/
,
3
1/ +
.
.
3
•
.
)
0
= 3
•
+
9
4
1/
/
0
1
3
4
!
" ?F "
L
+>+
0
P
Q+
M
L
(
0
•
L
,
2
, 0
.
3
.2 +
%
1
L
0
0
4 =
0
>+
4
4 ,
3
4
+)
L
2
.
.
•
.
+
3
2
0
.
0
•
0
.
,
+
L
0
0
, .
O
/
.
/
+
•
)
3. 4
•
4
)
+
-
,
.
+
•
%
3+
2
0
0
0
+
1
!+8+:+" $
,
L
2
0
,
3. 4 +
+
1
4
4 5
L
3
.
2
,
0
.
" ?< "
=
>
> *
!
3
0
.
%
+
3+
>
+
>
+
> =
0
+C
+'
>
.
%0
.
3
.
M
+
0
+'
M
>
+
0
4 ,
.
4
+
O
4
L
+
Anónimo
Profesor
<< AN >>
<< PR >>
Alumno
0
Equipo Directivo
Administrador
<< JD >>
<< ED >>
<< AD >>
<< AL >>
*+,-.
!+8+!+"
Jefe de Dpto.
$
M
5% +
+
.
0
,
.
4
3
,
4
4
/ 3
3 4
.
" 0
= .
>
,
3
L
,
0
,T
0
/ 3
*.
!+ +
" ?B "
M+ )
.
4
*+,-.
.
+
CASO DE USO
TAREA/S
ROLES
1. Activar el portal.
Activar el portal.
AD
2. Navegación en la parte pública
Navegación en la parte pública
3. Validación en el sistema
Validación en el sistema
AN
4. Desconexión del sistema
Desconexión del sistema
AD, PR, AL
5. Cambiar contraseña
Cambiar contraseña
PR, AL, AD
AN, AD, PR,
AL
- Añadir logotipos
6. Configurar presentación
- Añadir imagen de portada del Centro
- Personalizar contenido público
AD
- Personalizar interfaz de usuario
- Publicar historia del centro.
7. Añadir contenido público
- Publicar enseñanzas impartidas.
- Publicar el Proyecto Educativo del
" ?A "
AD
CASO DE USO
TAREA/S
ROLES
Centro
-
Publicar
la
composición
de
los
miembros del Equipo Directivo.
8.
Establecer
parámetros
de Establecer
funcionamiento
parámetros
de
funcionamiento
AD
- Añadir usuario con rol de Equipo
Directivo (Definir usuario maestro)
9. Definir usuarios que pertenecen al - Establecer rol de Equipo Directivo para
Equipo Directivo.
profesores del Centro.
AD
- Quitar rol de Equipo Directivo a
profesores del Centro.
10. Añadir imágenes de las instalaciones Añadir imágenes de las instalaciones del
PR
del Centro
Centro
11. Eliminar imágenes del Centro
Eliminar imágenes del Centro
ED
Añadir grupos temáticos de información
PR
Añadir enlaces de interés de información
PR
12.
Añadir
grupos
temáticos
de
información
13.
Añadir
enlaces
de
interés
información
de
14. Visualizar noticias con documentos Visualizar
noticias
con
documentos
PR
adjuntos de interés para el profesorado
adjuntos de interés para el profesorado
15. Agregar tarea a favoritas
Agregar tarea a favoritas
PR
16. Modificar lista de tareas favoritas
Modificar lista de tareas favoritas
PR
17. Enviar mensajes instantáneos
Enviar mensajes instantáneos
18.
Consultar
buzón
de
instantáneos
19.
Gestionar
mensajes Consultar
buzón
de
PR, AL
mensajes
instantáneos
buzón
de
instantáneos
20. Publicar noticias en el portal
mensajes - Marcar mensajes como leídos
- Borrar mensajes leídos
- Publicar noticia
- Adjuntar archivo a la noticia
PR
PR
AL, PR
- Visualizar lista propia de noticias
21. Gestionar lista de noticias
- Modificar noticia publicada
AL, PR
- Eliminar noticia publicada
22. Modificar datos personales
- Modificar fotografía personal
- Modificar datos personales
" ?? "
PR
CASO DE USO
TAREA/S
ROLES
- Añadir materia.
23. Gestionar materias impartidas
- Eliminar materia
PR
- Publicar contenido para materia
24. Gestionar fichas de alumnos
- Preparar fichas de alumnos
PR
- Añadir ficha de alumno nuevo
25. Definir pruebas a incluir en fichas Definir pruebas a incluir en fichas para
para materias
materias
26. Asignar calificaciones
Asignar calificaciones
27. Realizar anotaciones una ficha de Realizar
anotaciones
PR
PR
una
ficha
de
PR
alumno
alumno
28. Visualizar resumen de materia
Visualizar resumen de materia
PR
29. Visualizar ficha de alumno
Visualizar ficha de alumno
PR
30.
Visualizar
lista
de
usuarios
contraseñas de un grupo de alumnos
y Visualizar
lista
de
usuarios
y
contraseñas de un grupo de alumnos
31. Realizar una publicación para página Realizar una publicación para página de
de Departamento
Departamento
32. Gestionar la lista de miembros de un Gestionar la lista de miembros de un
PR
JD
JD
Departamento
Departamento
33. Registrar profesores en el portal
Registrar profesores en el portal
JD
34. Eliminar profesores del portal
Eliminar profesores del portal
JD
35. Registrar alumnos en el portal
Registrar alumnos en el portal
JD
36. Eliminar alumnos del portal
Eliminar alumnos del portal
JD
37. Modificar contraseña de alumno
Modificar contraseña de alumno
JD
38. Inicializar contenido de la página del Inicializar contenido de la página del
JD
Departamento
Departamento
39. Añadir Departamentos Didácticos
Añadir Departamentos Didácticos
ED
40. Eliminar Departamentos Didácticos
Eliminar Departamentos Didácticos
ED
41. Añadir Jefe de Departamento
Añadir Jefe de Departamento
ED
"8
"
CASO DE USO
TAREA/S
ROLES
42. Eliminar Jefes de Departamento
Eliminar Jefes de Departamento
ED
43. Generar contraseñas de alumnos
Generar contraseñas de alumnos
ED
44. Eliminar información obsoleta en el
portal
- Eliminar mensajes antiguos y leídos
- Eliminar fichas de alumnos del curso
ED
anterior
%
.
+
4
.
3
0
3
1
/
+
+
3
./012,/0
3425*60
%
-27081*7*082/
& .
5
3+
+
4
*5,.7*9812:;*50
*
+
.O
+%
*5,.7*9812<-.7./0
.-2././07*.1./
M
M
#
4
+
+
+
++
./012,/0
3425*60
%
-27081*7*082/
& .
*5,.7*9812:;*50
'
*5,.7*9812<-.7./0
%
0
+
+
.O
"8 8"
+
5 +
+
%
3
3
"
/ 3
3. 4 ,
4
4
.
+
" -
.
"%
.-2././07*.1./
4
.
+
4
/ 3
.
-
+
"%
4
3. 4
"
L
3. 4
-
/ .
.
/ 3
3
3. 4
.
.
4
3. 4
+
1
++
./012,/0
3425*60
%
-27081*7*082/
& .
*5,.7*9812:;*50
'
*5,.7*9812<-.7./0
%
0
+
+
.O
"8
+
"
.
5 +
+
1
%
3
3
"
/ 3
3. 4 ,
4
4
.
+
" -
.
"%
.-2././07*.1./
4
.
+
4
/ 3
.
-
+
"%
4
3. 4
"
L
3. 4
-
/ .
3. 4
.
+
/ 3
3
.
.
4
3. 4
+
.
/+ )
.
/
*.
!+: !+! !+F , !+<
*+,-.
*+,-.
* /
* /
.
+
/
/
+
.
"8 :"
+
*
+,-. # * /
*
+,-.
/
* /
*
+,-. $
-
/
3
.
+
1
5% +
"8 !"
+
!+ +" *
% %
%E(+
)
-
,
-
!+ +8+"
.
+
L
,
3
5 +
.
,
1
L
3
M
+
4
.
1
NOMBRE DE CLASE
ATRIBUTOS
Publicación
ident, titulo, texto, fecha
*.
MÉTODOS
publicar(), modificar(),
eliminar()
InfGeneral
Noticia
privada, prioridad, dirweb,
masinfo
Material
Aviso
Referencia
Enlace
Archivo
Usuario
UsuarioRegistrado
url
tematica
ident, titulo,
tipoContenido, tamano
publicar(), eliminar()
ident
insertar(), registrar(),
password, nombre,
modificar(), eliminar(),
apellidos, email
cambiarRol(r:listaroles)
"8 F"
!+B
NOMBRE DE CLASE
ATRIBUTOS
MÉTODOS
UsuarioAnonimo
Administrador
AlumnoRegistrado
Profesor
cargo, horaTutoria
JefeDepartamento
EquipoDirectivo
TareaFavorita
Mensaje
Departamento
Asignatura
Alumno
Ficha
Anotación
Prueba
!+ + +"
-
'
idTarea, idEnlace
idEmisor,
agregar(), eliminar()
idReceptor, enviar(), leer(), marcar(),
texto, leido, fecha
eliminar()
ident, titulo
anadir()
idAsignatura, titulo
anadir(), eliminar()
idMatricula, password
consultarFicha()
preparar(), eliminar(),
IdFicha
modificar()
idAnotacion
insertar(), eliminar()
insertar(), eliminar(),
idPrueba, titulo
modificar()
5 +
.
0
"8 <"
-
5
>
(
•
+
3
)
0
.
O0
4 , ,
/ 1
•
,
+
/
.
•
1
3
+
%
0
3
+)
3. 4 +
/
•
3
)
3
3
/
1
0
,
3 +
3
.
+
3
1
4+
•
> -
%
. 2
,
+
( !+
•
%
•
%
3
O
3. 4
,
3
5
.O
0
•
+
0
.
M
+
1
+
•
L
3
•
L
+
3. 4 0
.
+
3
•
+
•
%
.
1
.
1>
4
,1
•
=
)
.
3.
2+
0
O
3. 4
+
•
) *.
!+A
O
4
•
) *.
.
+
!+?
O
4
"8 B"
+
3. 4
•
)
*.
!+8
O
3. 4
+
*+,-. (
O
+
*+,-. " %
> <
3. 4 O
C
.
.
•
.
1
.
,
1
1/
,
=
>
3. 4
+
/ .
•
.
+
+ %
0
-
/
0
+
"8 A"
/
0
C
•
/ .
.
3. 4
.
+%
-
0
+
O
•
0
3
4
. +
*+,-.
!+:+" *
% %
%%
)% %&'
3. 4
J&+
%
7
0
4
-
%
4
+%
5
+
,
.
6
)
.
3
.
.
. /
4
"
4
3
3
0
4
,
"8 ?"
. +
0
+
2
4
.
+
!+:+8+"
4+
%
4 , 0
0
3
4+ %
0
2
0
L
.
4
3+
!+8+
L
4
L
2
M
%
+
1 1 1
0
.
4 %
3
+) /
4
0
4
=
. 0
.
,
.
> , 0
Y,
2
.
3
. /
*+,-.
)
3
(
'
,
C
+
5% +
4
.
" 88 "
P
=
Q+
,
>
4
L
.
,
4
1
M
/
2
D)+ ) * .
2
!+88
3 2
+
4
3
4
+>
5 +
)
1
6
=
/
L
!+:+ +" %
1
,0
-
6( @>
3
3
0
4 .
/
6
.
=
+
-
+)
+
2
3 0
1
-
.
/
•
3. 4 ,
4
3
0
.
0
O
3. 4
•
'
5
/
4
+
- 0
3
=
=
0
.
,
4
+
,
0
=>
1
3. 4
0
3
.
3
/
, contenido 0
3
,
Q
,
3. 4
,
+ %
4
" 888 "
0
4 ,.
.
0
2,
.
P 3.
,
4
0
1+
.
=>
4
.
.
=>
,
0
/
+ %
3
.
4
1>
> 0
4
indice
2
, +)
0
,
0
+9
/
9$)
/demo/index_html?p1=Indice/Centro;p2=Indice/Centro/Profesorado
R4
•
=demo>S+
+ $
demo
5
/
,
, 3
portal
,
.
2
5
•
5 .
2
+
%
4
.
2
3. 4 1
.
,
3
. .
+
4.
•
6
+ 9
L
3. 4
6'
,
O
4.
.
3. 4
P 3.
.
Q
=
, 3
icono
13
Skins ,
+% .
i>+
P
0
0
Q0
0
13
i+
%
5
0
. /
(
0
/
+%
M
=
/ +%
M
3
-+ )
>,
3
,
0
=
.
+ #
/
3. 4
•
/
+
0
•
.
>+ )
3
M
O
0
=
0
M
+9
/
=
6
scripts python
,
ZSQL Method
M.
/
visualizar_publicación
. M
+
>+
,
. L
/
" 88 "
/
L
3
+
•
'
M 1
.
.
/
+)
0
+#
*+,-.
3
O
2
.
3. 4
%
3
.
. M
" 88: "
0
+
+
+
.
1
2
•
)
/
.
0
3
0
6
0
L
4
4
+
L
=
/
/
/
.
>+ )
4+
News
) *.
!+8
=
.
>+
!+:+:+"
.
)
+
.
1
3
2 .
6
+#
:+<+:+F+ )
3
•
4
,
•
=1
6
+ .T
>+
/
6
2
L
/
%
+%
4
Manager
.
1
4
=
profesor, jefedpto
2
- +
>
2
.
1
.
.
6
0
alumno,
, equipo.
0
/
- adm
5 +
6
•
+
administrador
.
=
,
.
•
•
C''
1
TT777+
)
4 K
•
3M
G
CookieCumbler
2
demo>
" 88! "
,
OBJETO
PERMISOS
PROPÓSITO
DENEGAR ADQUISICIÓN
CONCEDER A
Objeto que contiene las
/demo/Config
operaciones que permiten View
Manager4
configurar el portal.
Add Documents, Images and
Files.
/demo/Indice/
Departa
equipo, jefedpto
Objeto que contiene los Add Folders
equipo
Departamentos Didáticos y Delete Objects
equipo, jefedpto
su contenido.
Manage Properties
equipo, jefedpto
Objeto que contiene los Add Documents, Images and alumno, profesor
Files
métodos para visualizar
/demo/Indice/Mas
enlaces
agrupados
por Add Folders
alumno, profesor
temáticas, añadir temas y
Manage Properties
añadir enlaces.
Objeto
que
contiene
alumno, profesor
el Add Documents, Images and
método para visualizar las Files
/demo/Indice/
imágenes
Centro/Visita
instalaciones del Centro,
de
equipo
las
añadir imágenes y borrar
Delete Objects
profesor
Add Folders
Authenticated
imágenes.
Objeto que almacena las Manage Properties
/demo/News
Authenticated
noticias publicadas y el Add Documents, Images and
método para visualizarlas.
Files
Delete Objects
Authenticated
Authenticated
Add Folders
Objeto que almacena las Manage Properties
/demo/Personal
páginas personales de los Add Documents, Images and
profesores.
Files
Al
propietario
la
carpeta
contiene la pa´gina
personal.
Delete Objects
/demo/acl_users
Objeto que contiene la lista
de usuarios del portal.
Manage Users
profesor
Objeto que contiene las
/demo/Perfil
operaciones reservadas a View
Authenticated
los usuarios autentificados.
!
%
.
,
.
+
" 88F "
0
4.
de
que
,
OBJETO
/demo/Perfil/
Contra
/demo/Perfil/
Prefer
/demo/Perfil/
Mensaje
/demo/Perfil/
Mensaje/Recibo
PERMISOS
PROPÓSITO
DENEGAR ADQUISICIÓN
CONCEDER A
Objeto con la operación de
cambiar contraseña para View
profesor
los usuarios autentificados.
Objeto con las operaciones
de gestión de la lista de View
profesor
tareas favoritas
Objeto con las operaciones
para gestión de mensajes View
alumno, profesor
instantáneos.
Objeto con las operaciones
para la gestión del buzón View
profesor
de mensajes recibidos.
Objeto con las operaciones
/demo/Perfil/
que pueden realizar los
Profesor
usuarios
con
perfil
View
profesor
View
jefedpto
View
equipo
profesor.
Objeto con las operaciones
/demo/Perfil/Jefe
que pueden realizar los
usuarios con perfil Jefe de
Departamento.
Objeto con las operaciones
/demo/Perfil/
que pueden realizar los
Equipo
usuarios con perfil Equipo
Directivo.
" 88< "
5.- RESULTADOS.
%
,
4 5
4
L
%
4
-
=
4
/
,
F+8+"
4
K'( (
% & ' )
J&+ $%D9
7
0
M
.
7
0
6
3
4
+
M
)
4
.
0
+
'( +
5%
3
5 % >+
,
4 .
0
4
,
L.
0
.
+
,
/
6
13 =PortalGenericoIES-1.0.tar.gz> 0
/
6
4
0
L
,
F+8+8+"
4
0
0
0
,P
.
•
•
•
4
!
<!
L
Q
M
4
•
4
+
M
6
M
+
4
%
4
+&
6
7
,
4 ,
4
.
0
+
M
2
1+
$
+
5
7 &'
( @
:
2.
N +
=.mdb>+
" 88B "
%L
•
!+
&
& 3.
F
3.
0
+
:F
•
,
)
+
4
./0
.
+ %/
Completa
autosetup.exe+
%
13 1
!+ +B+ %
13 setup.exe o
.
7
-
,
0
4 Install
4 =
4+ %
13 >
3
•
4 <+
3
,
•
6
d
.
;
! 3
1
3
5% +
, ZODBCDA+
CookieCumbler 1.1+
.
•
.
+
<+ 0
,
4+
1
•
= d
5% d
+
>
3
.O
4+
,
•
3
=demo6
/
%
.
4 , L
4+
4
autosetup.exe
:
.
5
4
./0
+
setup.exe+
.
=
,
•
•
•
3 .
7
B (
3
&
.
4
4
Microsoft Access Driver
&
&
0
5
7>, . .
-
7+
+
5
-
.
demo+
datos C:\GASPWIES\datos.mdb
" 88A "
3
4
*
+,-.#
. .
.
+
4
./0
3.
•
•
'
9$) 1
5 +
TT
1
A A T
0
2
0
'
4
+
*.
F+
.
M
4
3+
3
*+,-.#
•
+
9$)
1
2
=
TT
4+
1
A A T
<
T
.
6+
administrador
" 88? "
.
3
,
4
- adm+
*+,-.#
•
9
3 4
+
3
3
3
1
2
TT
.
1
M
A A T
*+,-.#
,
1
Home+
3
M
+
L
•
"8
"
4
+
./0
%
+
6
3.
.
1
4
TT
1
4
A A T
demo+
+
3
6
9$) 1
TT
1
A A T
admin
.+
/
Generico IES
4
0
6
2
0
/
1,
+&
6
,
M
3 3
/
6
-
3
"8 8"
1,
.
:
Portal
.
,
demo
+
*
+,-.#
/
0
6
+
- admin
3
demo
+
,
-
,
C:\GASPWIES\datos.mdb
3
. ,
- admin+
4 6
./0 # %
6
,
admin
*+,-.##
T
% +
/
F+8+ +"
4
%
3
+
M
6
4
3
+)
L
M
4+ '
4
+<+
-
3
M
3 9& N") &9N+ )
M
O
6
0
0
M
.
>
( @
>
%L
2.
!+
=.mdb>+
&
& 3.
F
3.
0
+
>
,
+
)
4
./0
13
.
PortalGenericoIES.zip
•
+ )
Personal
%
13
3
,
0
CookieCumbler1.1.tar.gz
3
4
G +
•
0
ZODBCDA-3.1.tgz
6
4
+%
3
. / ,1
+:+L
. /+
1
TT777+
6( @
+ .T
,1
L
3
4 P
+B+
3
L
6
4
3
+8
4
4
Q>+
•
Datos.mdb
0
5% +
0
0
3 L
+:
4
+:+L =
PortalGenericoIES-1.0.tar.gz
README.txt
,1
,
•
•
+8 ,
3
4
3
( @
4+
13 0
3
4
4
4+%
0
13
6
"8
"
,
+
3
,
%
./0
4
6( @
+
13 ZODBCDA-3.1.tgz
2
lib/python/Products
./0
%
4 6
+
4
G
+
8+8
13 CookieCumbler1.1.tar.gz
2
lib/python/products
4 6
13 PortalGenericoIES-1.0.tar.gz
./0
2
lib/python
3
4 6
./0# %L
3,
./0
0
+)
Products
: CookieCumbler, ZODBCDA y PortalGenericoIES+
Products
*+,-.#$
0
+
13 datos.mdb
.
13 +
,
+
.
0
3,
.
.
,0
.
datos.mdb
4
+
"8 :"
#
3
./0$
6
=
,
>+
3.
./0(
3
6
/
1
,
TT
0
PortalGenericoIES
1
9$) 0
A A T
1,
. , .
+#
F+<+
3
./0 "
4 3
4
/
.
F+8+:+" * /
9
/
3 0
L
:
0
demo
L
+
4+
5
3
4
*.
*+,-.#( * /
L
/
L
.
,
% P
3
/
F+A+
.
administrador>
/
4
5% +
4 =,
1
+
Q
4+ )
0 M
0
.
+
"8 !"
/
0
*.
0
2+%
.
.
P
Q+
*+,-.#" $ .
%
*.
P
P
M
Q+
3
F+A
,
=$ > %0
Q
3+ %
=
1
,
1
/
>+
8
%
4
P
Q+
» Home » Mi Perfil » Equipo Directivo » Nuevo Departamento.
"8 F"
0
9
3
0
5
Q
0
P
/
+
» Home » Mi Perfil » Equipo Directivo » Nuevo Jefe de Dpto
0
=
4
3
> 0 , 1,
M .
,0 ,
M .
+'
.
.O
*.
F+8 +
*
+,-.# %
%
P
/+ %
+
Q
P
Q
.
0
=4
/
0
,
.
>+
1
» Home » Mi Perfil » Jefe Departamento » Nuevo Profesor
,
.
» Home » Mi Perfil » Jefe Departamento »
*.
Registrar Profesor
*
+,-.#
,
.
"8 <"
+
F+88+
'
.
0
,
0
%0
3
.
M
+9
3
0
0
3
. ,0
+
F+ +" 9& % %
)( % & ' &
+%+ + )
5%
4
+ %
%
2
'
Q
F+8
TT777+
*+,-.#
5
-
/
0
0
.
4 1
1
+
4
+
1
P
3
4 + ) *.
5 +%
/ +
.
+
.
.
"8 B"
/
5%
+
'
M
L
4
= L
1
TTA +BF+::+:8 A A T
administrador
F+:+"
+
,
4
.
- adm+
&9 ) % 9 9 $ (+
% W (5%)) 8X
4
0
0
3
4+
.
,
0
1
A A T
T,
0
4
.
.
) *.
,0
1
3.
TT
3
0 M
%
1
>
4 + %L
4+'
=
M
4
0 demo
F+8:
5 >+
,
*+,-.#
4 5 +
,
4
"8 A"
+
5% +
%
4
.
0
,
0
. +
*.
4
/
0
-
F+8:
O0
.
0
4
,
.
+
"8 ?"
L
3. 4
6.- CONCLUSIONES Y PROPUESTAS.
<+8+" (& )9 (&% +
%
5%
3.
,
+
4
5
1
%
.
3
0
0
4
)
%
-
4
L
4
-
-
,O
+
0
, 0
1
-
,
+
5% 1
3 1
F
%
L
.
0
,
4
2 L
4
4
.
+
1
0
Q+
.
-
0
5
=1
,
+>
5
.
.
,.
+H
-
0
%
3 0
3
%
+ )
3
1
F
3
- ,
.
3. 4
%
,
O
P
.
,
L
,
3
.2
5
4 0
%
L
+
+
" 8: "
5 +
-
.
4
•
%
.
4
0 M
=
4
,
1
3. 4
=
>
0
-
,
>+
.
•
3
0
+
.
•
M
,
,
4
M
3
•
1
0
2
.
+
'
3
5
0
4
1
•
4
,
4
5%
.
7
7
,
,
4
.
3
+*
0
0
,
+
3
9& N
3
7
6
, 0
)+
4 .
+
O0
0
5
3
7
+
0
,
6
+
%L
4
+%
4
3. 4
/
3
-
,
3
4
0
/
.
!
02
0
3
4
.
3 1
+
4
4
0
4
0
4
0
-
6
,
3
4
.
.
.
" 8:8 "
.
0
,
6
+
<+ +" $( 9% '
+
4
=
.
/
2
1
>
9
•
%
L
.
0
•
.
0
4
0
+%
4
L
4 ,
2
0
3
.
.
+
,
4
3
=
.
1
O
.
+>+
.
•
/%
,M
.
+
%
0
-
4
.
2
•
-
.
4
3 =%
9 3
•
$
2
4
=
4
,
.
/
2
6
2
4
0
4
3
+
3 1
+
.
2
/
*
4
.
0
>
3+
4
•
•
%
>+
0
•
4
0
,
Q+
" 8: "
4
+
0
2
P 1 1
$
8<
!
* +
" 8:: "
7.- REFERENCIAS.
•
W
'%)X
<
1
TT777+
!
+ .T/
•
W@%$ '% &
•
W@ ( %)X8 .
•
W@( Z(
•
W@(( C 8X @
•
W
*X
•
W ()
"5
,
5
3
( :X
W (9' &
. N
C .,
+ .+ " + T
.
5
+
T@
,
1$
1 .
+
T
+
1 (
*
8+
+
'# .
!
0
+ +1
TT
C .,
+
BB
1
TT777+
+
+ .
(
+ + Te
D
1
•
W
CX
1
TT +
+
+1
3
X
+.
,
(3
+
%
* 1+
+
8X
+
!
3
D
+ : + T
,
T
T
W%& ) C :X% . 1 @+
;
!
T'
8+
•
+
:+
W (& ))%&
"5
TT777+
.
.1 + H
+
NN
•
+Y$
G +Y'
E
+A
(
1
M
T
+Y$
+1
C%$( :X*
W
•
$+
X@ G @+
W@$9% Z 8X@
M
T T
X@
•
•
A
"5
,
T 3T
(
:+
" 8:! "
+1
+
'>>'F
+
,
•
W%
3
•
)(&
X%
9 3
W%
3
)(&
O*
W*% )%$ ??X*
+
$
•
W ) :X
•
W ( %6 :X 4
))
8X
$+
3
3
+A
<
+
+
.
W (&6 )%6
•
WC
•
W 'X
+
Z
1
+ 7
C
8
X
+Y
6
+1
3
TT777+
W
(@ (&
T',
X
W
X
1
TT777+ 3
+
) 7 ."
L
•
W))(H
T/ T
+
X)
,
.1 +
*
+
+
8
;
3
(
,
Y
@+
"
T/ T
"9 3
X) ,
+,$
( F
T
X Z 1 &+
W) ''% %$
9 )
+ .
$
+
WZ( C
•
3
<
T
=
.
:+
8
1
"5
=.
+
#+
9 )
:+!!+ +1
+Y@
+ %
TT 3 +
3
!
(F
.+
1
(
TT777+1
< 8<
1
8+
:+
.
6( %XC
W @ X
5
( 8
*
•
•
3
8???+
W
•
/
9 3
•
•
( !
+ +YZ 1 &+ < (
*
•
+
+
X%
3
•
+ +,
3
1
+A
A
" 8:F "
+
. 9 & 7$
3
1
1 .
+
+
•
W)($%
X) M +Y
'+ 1 < (
3
•
W
Z HX
•
W
X
1
•
Z,
TT777+1
W
+9 3
+
9%) 8X
)
. 91
" "
+
+
TT
+ .T
(
+
T ,!.
.
D
T
'>>'
T 1 T
'+
A
GT+
T
;
c3 .
9 3
+
M
8+
•
W& %) %&
•
W(( %X
•
X&
+*
B
B
1
TT777+
+
W
'' & ?<X
(
!+$ "
•
W ()( !X
•
W (5%)))
W $%
+ +,
8X
7
A+
+
D
'+
•
W$(@)%
:X$
+ %
+
D
<<+ 9 )
!+
3
/
8+
$+ + < (
7"C
X
+ %
*
,P
8??A+
(+ + <
!
+Y
$,
3
+
+<
!
+
+
A
9 3
:+
W$( %&*%)
3
?AX$
(f$
W %$#)%' X
1
+
+
(
3 T
<(
& ?AX
W $ %'(
•
(
T T
+
•
3
C
8??<+
!
•
3
+ %
+ T
$ 5"C ))
•
D
TT 3 +
+
)+Y
3
+<
3
, 8??A+
=
T
8
+
8
T 3
" 8:< "
(F 8
%
.
+
•
W )#
X
3
+
(
•
W
(
+
@+
D B
:X
4
B
A
M
%'
:+
•
W'H (:X8
•
W95 X*3 F*
•
W# ) %$
"1
TT, :+ . 1
TT777+ , :+
3
X#
1
+ +
B
"8::! ?T
•
WN) X 5
•
WN )X
TT777+ 7
D
1
*
•
+
*+ +
'
1
3
TT
T* #
+
9
3
+ +1
+
+
3+ T1
1 ( (
TT777+7:+ .T'$TL
4? 16
TT777+7:+ .TN )
W6( %XA
!
+
1 ( ( 4?+16+ 1
5
<
/ + .
TT777+
" 8:B "
+ .
8
3
T3
T "
ANEXO I.- CÓDIGO FUENTE.
%
4 .
,
8+
5% +
' ) =/demo/index_html> 0 3
.
5 +
<html>
<head>
<title><dtml-var ies></title>
<link rel="STYLESHEET" type="text/css" href="content.css">
</head>
<dtml-if "AUTHENTICATED_USER.has_role(['Manager'])">
<frameset framespacing="0" border="0" rows="55,30,*" frameborder="0">
<frame name="cabeza" scrolling="no" noresize src="cabeza.htm">
<frame name="favor" scrolling="no" noresize src="favoritos">
<frameset cols="200,*">
<frame name="indice" src="<dtml-var p1 missing="Indice">" scrolling="auto" noresize
marginheight="5">
<frame name="contenido" src="<dtml-var p2 missing="portada">" scrolling="auto"
noresize marginwidth="5" marginheight="5">
</frameset>
<dtml-elif "visible=='S'">
<frameset framespacing="0" border="0" rows="55,30,*" frameborder="0">
<frame name="cabeza" scrolling="no" noresize src="cabeza.htm">
<frame name="favor" scrolling="no" noresize src="favoritos">
<frameset cols="200,*">
<frame name="indice" src="<dtml-var p1 missing="Indice">" scrolling="auto" noresize
marginheight="5">
<frame name="contenido" src="<dtml-var p2 missing="portada">" scrolling="auto"
noresize marginwidth="5" marginheight="5">
</frameset>
</dtml-if>
<dtml-if "visible=='N'">
<br><br>
<p class="error">
Es necesario realizar el primer paso en la configuración para que la web esté operativa.
Recuerde que debe ser el administrador el que realice dicha configuración.
Para más información consulte ayuda pinchando <a href="Ayuda">aquí</a>
</p>
</dtml-if>
<noframes>
<body>
<p>Esta página usa marcos, pero su explorador no los admite.</p>
</body>
</noframes>
</frameset>
</html>
" 8:A "
+
6
,
=/demo/favoritos> 0
4 .
/
+
,1
3
3
=/demo/getFavor> 0
3
+
0
.
+
<html>
<head>
<title tal:content="template/title">The title</title>
<link rel="STYLESHEET" type="text/css" href="indice.css">
</head>
<body class="favor">
<b>» Mis Tareas Favoritas:</b>&nbsp;
<img tal:condition="python:here.Skins.buena!='Texto'" width="10" height="10"
tal:attributes="src python:'Skins/%s/imapa.gif'%here.Skins.buena">
<a target="_top" tal:attributes="href python:'index_html?p1=Indice&p2=Mapa'">Mapa</a>
<span tal:condition="python:here.getRol('profesor')=='true'">|
<span tal:content="structure container/getFavor">ruta de naavegacion</span>
</span>
</body>
</html>
/demo/getFavor
from Products.PythonScripts.standard import html_quote
links=[]
lugar = context.restrictedTraverse('/%s/Skins' % (context.portal))
iconos = lugar.buena
if iconos!='Texto':
lugar = context.restrictedTraverse('/%s/Personal/%s' %
(context.portal,context.getUsuario()))
if lugar.f5!='':
enlace = context.restrictedTraverse(lugar.p52)
links.insert(0, """<img src="/%s/Skins/%s/%s.gif">""" % \
(context.portal,iconos,'i'+enlace.icono)
+" "
"""<a href="/%s/index_html?p1=%s;p2=%s" target="_top">%s</a>""" % \
(context.portal,html_quote(lugar.p51),html_quote(lugar.p52),
html_quote(lugar.f5)))
if lugar.f4!='':
enlace = context.restrictedTraverse(lugar.p42)
links.insert(0, """<img src="/%s/Skins/%s/%s.gif">""" % \
(context.portal,iconos,'i'+enlace.icono)
+" "
"""<a href="/%s/index_html?p1=%s;p2=%s" target="_top">%s</a>""" % \
(context.portal,html_quote(lugar.p41),html_quote(lugar.p42),
html_quote(lugar.f4)))
if lugar.f3!='':
enlace = context.restrictedTraverse(lugar.p32)
links.insert(0, """<img src="/%s/Skins/%s/%s.gif">""" % \
(context.portal,iconos,'i'+enlace.icono)
+" "
"""<a href="/%s/index_html?p1=%s;p2=%s" target="_top">%s</a>""" % \
(context.portal,html_quote(lugar.p31),html_quote(lugar.p32),
html_quote(lugar.f3)))
if lugar.f2!='':
enlace = context.restrictedTraverse(lugar.p22)
links.insert(0, """<img src="/%s/Skins/%s/%s.gif">""" % \
(context.portal,iconos,'i'+enlace.icono)
+" "
"""<a href="/%s/index_html?p1=%s;p2=%s" target="_top">%s</a>""" % \
(context.portal,html_quote(lugar.p21),html_quote(lugar.p22),
html_quote(lugar.f2)))
if lugar.f1!='':
enlace = context.restrictedTraverse(lugar.p12)
" 8:? "
links.insert(0, """<img src="/%s/Skins/%s/%s.gif">""" % \
(context.portal,iconos,'i'+enlace.icono)
+" "
"""<a href="/%s/index_html?p1=%s;p2=%s" target="_top">%s</a>""" % \
(context.portal,html_quote(lugar.p11),html_quote(lugar.p12),
html_quote(lugar.f1)))
return " | " . join(links)
else:
lugar = context.restrictedTraverse('/%s/Personal/%s' %
(context.portal,context.getUsuario()))
if lugar.f5!='':
links.insert(0, """<a href="/%s/index_html?p1=%s;p2=%s" target="_top">%s</a>""" %
\ (context.portal,html_quote(lugar.p51),html_quote(lugar.p52), html_quote(lugar.f5)))
if lugar.f4!='':
links.insert(0, """<a href="/%s/index_html?p1=%s;p2=%s" target="_top">%s</a>""" %
\
(context.portal,html_quote(lugar.p41),html_quote(lugar.p42),
html_quote(lugar.f4)))
if lugar.f3!='':
links.insert(0, """<a href="/%s/index_html?p1=%s;p2=%s" target="_top">%s</a>""" %
\
(context.portal,html_quote(lugar.p31),html_quote(lugar.p32), tml_quote(lugar.f3)))
if lugar.f2!='':
links.insert(0, """<a href="/%s/index_html?p1=%s;p2=%s" target="_top">%s</a>""" %
\(context.portal,html_quote(lugar.p21),html_quote(lugar.p22), tml_quote(lugar.f2)))
if lugar.f1!='':
links.insert(0, """<a href="/%s/index_html?p1=%s;p2=%s" target="_top">%s</a>""" %
\
(context.portal,html_quote(lugar.p11),html_quote(lugar.p12), html_quote(lugar.f1)))
return " | " . join(links)
:+ +
,1
0
=/demo/accesible> 0
/
.
3. 4 +
# parámetros: here (contenedor) y user (usuario registrado)
request = context.REQUEST
RESPONSE = request.RESPONSE
lista=[]
for folder in here.objectValues('Folder'):
if user.has_permission('View',folder):
lista.insert(5000,folder)
args=(('orden',),)
return sequence.sort(lista, args)
" 8! "
!+
6
,. M
=/demo/Perfil/index_html> 0
3
3. 4
.
+
<html>
<head>
<title tal:content="template/title">The title</title>
<link rel="STYLESHEET" type="text/css" href="indice.css">
</head>
<body>
<table class="normal" cellpadding="5" cellspacing="0" border="0" width="100%">
<tr>
<td colspan="2" class="bienve" align="center">
Bienvenido <b tal:define="global usuario python:here.getUsuario()"
tal:condition="python:usuario != 'Anonymous User'"
tal:content="usuario"> user</b>
<b><span tal:condition="python:usuario== 'Anonymous User'"> Invitado </span>
</b>
</td>
</tr>
<span
tal:condition="python:usuario
!=
'Anonymous
User'"
tal:repeat="item
python:here.nuevoMail(destino=usuario)">
<tr tal:define="texto string:${item/texto}"
tal:condition="python:texto>'0'">
<td class="mail">¡ Hay mensajes nuevos ! </td>
<td><a
href="direccion"
target="_top"
tal:attributes="href
python:here.getDestino('/%s/Perfil/Mensaje'%here.portal,'/%s/Perfil/Mensaje/Recibo'%here.po
rtal)" >
<img border="0" src="imagen/sms.gif" alt="Leer mensajes" height="20" width="20">
</a>
</td>
</tr>
</span>
</table>
<p align="center" class="pequena">
<b>» <span tal:content="python:here.toUpper(here.title)">CONTENIDO</span> «</b>
</p>
<span tal:condition="python:here.Skins.buena=='Texto'">
<table class="normal" cellpadding="5" border="0" width="100%">
<tr valign="top">
<td><li>
<a href="index_html" target="_top"
tal:attributes="href python:here.getDestino('Indice','portada')">
HOME</a></li>
</td>
</tr>
<tr tal:define="subfolders python:here.accesible(here,user)"
tal:repeat="folder subfolders"
tal:condition="subfolders"
valign="top">
<td>
<li> <a href="folder" target="_top"
tal:define="indice folder/indice;contenido folder/contenido"
tal:attributes="href python:here.getDestino(indice,contenido)"
tal:content="folder/title">folder id
</a></li>
</td>
</tr>
<tr>
<td
class="normal"><li><a
target="_top"
href="www"
tal:attributes="href
python:'/%s/login/logout' % (here.portal)">
Desconectar</a></li></td>
</tr>
</table>
</span>
<span tal:condition="python:here.Skins.buena!='Texto'">
<table class="normal" cellpadding="5" cellspacing="0" border="0" width="100%">
" 8!8 "
<tr valign="center">
<td>
<img border="0" src="Skins/Defecto/home" width="10" height="10"
tal:attributes="src python:'Skins/%s/ihome.gif' % here.Skins.buena">
</td>
<td>
<a href="index_html" target="_top" tal:attributes="href
python:here.getDestino('Indice','portada')">
<img border="0" src="Skins/Defecto/home" alt="Home" width="170" height="18"
tal:attributes="src python:'Skins/%s/home.gif' % here.Skins.buena;
onMouseOver python:here.getMouseOver('home_on.gif');
onMouseOut python:here.getMouseOver('home.gif')">
</a>
</td>
</tr>
</table>
<table class="normal" cellpadding="5" cellspacing="0" border="0" width="100%" >
<tr valign="center" tal:define="subfolders python:here.accesible(here,user)"
tal:repeat="folder subfolders"
tal:condition="subfolders">
<td>
<img border="0" src="Skins/Defecto/home" width="10" height="10"
tal:attributes="src python:'Skins/%s/i%s.gif'%(here.Skins.buena,folder.icono)">
</td>
<td>
<a href="folder" target="_top"
tal:define="indice folder/indice;contenido folder/contenido"
tal:attributes="href python:here.getDestino(indice,contenido)">
<img border="0" src="Skins/Defecto/home" alt="Home" width="170" height="18"
tal:attributes="alt folder/title;
src python:'Skins/%s/%s.gif'%(here.Skins.buena,folder.icono);
onMouseOver python:here.getMouseOver(folder.icono+'_on.gif');
onMouseOut python:here.getMouseOver(folder.icono+'.gif')">
</a>
</td>
</tr>
<tr>
<td>
<img border="0" src="Skins/Defecto/idesc" width="10" height="10"
tal:attributes="src python:'Skins/%s/idesc.gif' % here.Skins.buena">
</td>
<td
class="normal"><a
target="_top"
href="www"
tal:attributes="href
python:'/%s/login/logout' % (here.portal)">
<img border="0" src="Skins/Defecto/desc" alt="Desconectar" width="170" height="18"
tal:attributes="src python:'Skins/%s/desc.gif' % here.Skins.buena;
onMouseOver python:here.getMouseOver('desc_on.gif');
onMouseOut python:here.getMouseOver('desc.gif')">
</a></td>
</tr>
</table>
</span>
</body>
</html>
" 8! "
F+
,1
=T
T
>0
3
.
4
3. 4 +
"""
Da una cadena desde el directorio raíz (indice) con hiperenlaces
"""
from Products.PythonScripts.standard import html_quote
links=[]
links.insert(0, "%s" % \
(html_quote(context.title_or_id())))
for parent in context.REQUEST.PARENTS[1:]:
links.insert(0, """<a href="/%s/index_html?p1=%s;p2=%s" target="_top">%s</a>""" %
\ (context.portal,html_quote(parent.indice),html_quote(parent.contenido),
html_quote(parent.title_or_id())))
if parent.getId()==context.portal:
links.insert(0, "Usted está aquí: ")
break
return " » ".join(links)
<+
,1
=/demo/getMisAsig> 0
.
0
.
/
+
request = context.REQUEST
lista=[]
lugar = context.restrictedTraverse('/%s/Personal/%s' % (context.portal,quien))
for asig in lugar.objectValues('Folder'):
lista.insert(0,asig)
return lista
" 8!: "
B+
6
=/demo/Mapa/index_html> 0 3
.
+
,
4 .
4
+
,1
3
+
<html>
<head>
<title tal:content="template/title">The title</title>
<link rel="STYLESHEET" type="text/css" href="content.css">
</head>
<body>
<span class="ruta" tal:content="structure container/darruta">ruta de naavegacion</span>
<h1 tal:content="template/title"></h1>
<table border="0" class="titulotabla" cellpadding="3" width="100%">
<tr valign="top">
<td width="30%" align="center">Contenido del Portal
</td>
<td width="30%" align="center">Páginas Personales
</td>
<td width="40%" align="center"
tal:condition="python:here.getRol('Authenticated')=='true'">
Perfil de Usuario
</td>
</tr>
</table>
<table border="1" class="ruta" cellpadding="3" width="100%">
<tr valign="top">
<td width="30%"><span tal:repeat="item python:here.busca('Indice')">
<span tal:content="structure item">
</span>
</span>
</td>
<td width="30%"><span tal:repeat="item python:here.busca('Personal')">
<span tal:content="structure item">
</span>
</span>
</td>
<td
width="40%"
tal:condition="python:here.getRol('Authenticated')=='true'"><span
tal:repeat="item python:here.busca('Perfil')">
<span tal:content="structure item">
</span>
</span>
</td>
<td
width="40%"
tal:condition="python:here.getRol('administrador')=='true'"><span
tal:repeat="item python:here.busca('Config')">
<span tal:content="structure item">
</span>
</span>
</td>
</tr>
</table>
</body>
</html>
/demo/Mapa/busca
#parámetros: donde (lugar de dónde debe hacerse el mapa)
request = context.REQUEST
from Products.PythonScripts.standard import html_quote
lista=[]
lugar = context.restrictedTraverse('/%s/%s' % (context.portal,donde))
lista.insert(9999, """<img src="/%s/Skins/%s/i%s.gif" width="10" height="10">""" % \
(context.portal,context.Skins.buena,lugar.icono)
+
"""&nbsp;<a href="/%s/index_html?p1=Indice;p2=%s" target="_top">%s</a>""" % \
(context.portal,lugar.contenido,html_quote(lugar.title))+"""<br>""")
for carpeta in lugar.objectValues('Folder'):
if request.AUTHENTICATED_USER.has_permission('View',carpeta):
lista.insert(9999,
"""&nbsp;&nbsp;&nbsp;&nbsp;<img
src="/%s/Skins/%s/i%s.gif"
width="10" height="10">""" % \
(context.portal,context.Skins.buena,carpeta.icono)
+
" 8!! "
"""&nbsp;<a href="/%s/index_html?p1=%s;p2=%s" target="_top">%s</a>""" % \
(context.portal,html_quote(carpeta.indice),html_quote(carpeta.contenido),
html_quote(carpeta.title))+"""<br>""")
nueva=[]
if carpeta.getId()!='Mas' and carpeta.getId()!='Tablon':
nueva=context.buscaRec(carpeta,'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;')
if nueva!=[]:
for item in nueva:
lista.insert(9999,item)
return lista
/demo/Mapa/buscaRec
#parametros: lugar (carpeta actual) y tab (nivel de tabulación)
from Products.PythonScripts.standard import html_quote
request = context.REQUEST
lista=[]
for carpeta in lugar.objectValues('Folder'):
if request.AUTHENTICATED_USER.has_permission('View',carpeta):
lista.insert(9999, """%s<img src="/%s/Skins/%s/i%s.gif" width="10" height="10">""" % \
(tab,context.portal,context.Skins.buena,carpeta.icono)
+
"""&nbsp;<a href="/%s/index_html?p1=%s;p2=%s" target="_top">%s</a>""" % \
(context.portal,html_quote(carpeta.indice),html_quote(carpeta.contenido),
html_quote(carpeta.title))+"""<br>""")
nueva=context.buscaRec(carpeta,tab+'&nbsp;&nbsp;&nbsp;&nbsp;')
if nueva!=[]:
for item in nueva:
lista.insert(9999,item)
return lista
A+
+
,1
=/demo/getTitulares> 0
0
. ,T
4 0
/
+
request = context.REQUEST
lista=[]
for titular in container.Perfil.Noticias.Publicar.News.objectValues('Folder'):
if titular.visible=='S':
# //como no se eliminar
if (donde=='portada'):
if (titular.prioridad=='A'):
if (titular.privada=='N') or
(request.AUTHENTICATED_USER.has_role(['profesor','Manager'])) :
lista.insert(0,titular)
elif (donde=='tablon' and seccion==''):
if (titular.seccion!='Alumnado' or alumno!=''):
if (titular.privada=='N') or
(request.AUTHENTICATED_USER.has_role(['profesor','Manager'])) :
lista.insert(0,titular)
elif (donde=='tablon' and seccion!=''):
if (titular.seccion==seccion):
if (titular.privada=='N') or
(request.AUTHENTICATED_USER.has_role(['profesor','Manager'])) :
lista.insert(0,titular)
elif (donde=='personal'):
if (request.AUTHENTICATED_USER.has_role(['Manager'])):
lista.insert(0,titular)
elif (titular.autor==request.AUTHENTICATED_USER.getId()):
lista.insert(0,titular)
return lista
" 8!F "
?+ +
, 1 =/demo/sendWebMail> 0
4 .
M
32
/
+
D) =/demo/insertMail> 0
,
4
+
#parámetros: texto (el texto del mensaje ) y destino (usuario destino)
from DateTime import DateTime
fecha='%s/%s/%s' % (DateTime().dd(),DateTime().mm(),DateTime().yy())
origen=context.getUsuario()
context.insertMail(texto=texto,destino=destino,fecha=fecha,origen=origen)
return
/demo/insertMail
# Parámetros: texto, destino, fecha y origen
insert into mensajes values (
'<dtml-var texto>','<dtml-var destino>','N','<dtml-var fecha>','<dtml-var origen>')
8 +
6
=/demo/ultimaHora> 0
3
.
+
<html>
<head>
<title>Portada</title>
<base target="_self">
<link rel="STYLESHEET" type="text/css" href="content.css">
</head>
<body ><p>&nbsp;</p>
<div align="center">
<center>
<table class="normal" border="0" cellpadding="0" cellspacing="0">
<tr class="titulotabla">
<td height="30">
<p align="center"><b>NOVEDADES</td>
</tr>
<tr>
<td><br><td>
</tr>
<span tal:repeat="noticia python:here.getTitulares('portada')">
<tr tal:define="global vez repeat/noticia/number"
tal:condition="python:vez<=here.maxPortada">
<td>
<b tal:content="python:'[%s]'% here.getFechaddmmaa(noticia)">11-05-2004
</b>
<a href="kkkk" target="_top" tal:content="noticia/title"
tal:define="url noticia/absolute_url"
tal:attributes="href python:here.getDestino('Indice',url)">titular</a>
</td>
</tr>
<tr ><td align="center"
tal:condition="python:vez<here.maxPortada"><br>----------<br><br></td></tr>
</span>
</table>
</center>
</div>
</body>
</html>
" 8!< "
88+ +
,1
.
=/demo/changePassword> 0
+
#parámetros: user (usuario) y pwd1 (nueva contraseña)
request = context.REQUEST
RESPONSE = request.RESPONSE
lista=[]
if request.AUTHENTICATED_USER.has_role(['Manager']):
lista.insert(0,'Manager')
if request.AUTHENTICATED_USER.has_role(['alumno']):
lista.insert(0,'alumno')
if request.AUTHENTICATED_USER.has_role(['profesor']):
lista.insert(0,'profesor')
if request.AUTHENTICATED_USER.has_role(['equipo']):
lista.insert(0,'equipo')
if request.AUTHENTICATED_USER.has_role(['jefedpto']):
lista.insert(0,'jefedpto')
context.REQUEST.set("domains", [])
context.REQUEST.set("name", user)
context.REQUEST.set("roles", lista)
context.REQUEST.set("password", pwd1)
context.REQUEST.set("confirm", pwd1)
lugar = context.restrictedTraverse('/%s' % context.portal)
context.acl_users.manage_users(submit="Change", REQUEST=context.REQUEST)
return
8 ++
,1
.
=/demo/Config/Minimo/Logos/upLoadImagen> 0
.
4
5 +
#parametros: fichero (el archivo) y tipo (el tipo de logo)
if fichero.filename=='' or tipo=='':
return context.REQUEST.RESPONSE.redirect("respUpLoad?error=si")
# crear el fichero
lugar = context.restrictedTraverse('/%s/imagen' % context.portal)
if tipo=='ca':
for img in lugar.objectValues():
if img.getId()=='logocam':
lugar.manage_delObjects(['logocam'])
id='logocam'
elif tipo=='centro':
for img in lugar.objectValues():
if img.getId()=='logocentro':
lugar.manage_delObjects(['logocentro'])
id='logocentro'
else:
for img in lugar.objectValues():
if img.getId()=='imgportada':
lugar.manage_delObjects(['imgportada'])
id='imgportada'
lugar.manage_addProduct['OFSP'].manage_addImage(id, file=fichero)
return context.REQUEST.RESPONSE.redirect("respUpLoad")
" 8!B "
-
8:+ +
,1
4
=/demo/Perfil/Noticias/Publicar/insNoticia> 0
+
,
+
,1 0
/
=/demo/Perfil/Noticias/upLoadFile>+
#parametros: contenido,titular,mas,dirweb,privada,seccion,prioridad, REQUEST=None
""" Creación de una notica
-1. Comprobar que titular no es vacío
0.- Mirar cual será el identificador de la carpeta
1.- Crear la carpeta
2.- Añadir propiedades
3.- Crear el archivo con el contenido
"""
import random
#-1.
if titular=='':
return context.REQUEST.RESPONSE.redirect("respPublicar?error=1")
# 0.
nuevovalor=0
# lugar=container.News
lugar = context.restrictedTraverse('/%s/News'%context.portal)
nuevovalor=lugar.elementos+1
lugar.manage_changeProperties(elementos=nuevovalor)
aleat=random.randint(1000000,9999999)
id='not_%d_%d' % (nuevovalor,aleat)
#1.
lugar.manage_addProduct['OFSP'].manage_addFolder(id, title=titular)
#2.
if dirweb=='http://':
dirweb=''
nueva=getattr(lugar, id)
nueva.manage_addProperty('masinfo', mas, 'string')
nueva.manage_addProperty('dirweb', dirweb, 'string')
nueva.manage_addProperty('privada', privada, 'string')
nueva.manage_addProperty('prioridad', prioridad, 'string')
nueva.manage_addProperty('seccion', seccion, 'string')
nueva.manage_addProperty('autor', context.getUsuario(), 'string')
nueva.manage_addProperty('contenido', contenido, 'string')
return context.REQUEST.RESPONSE.redirect("respPublicar?noticia=%s" % (id))
/demo/Perfil/Noticias/upLoadFile
#parametros: fichero (el contenido del archivo), noticia(el identificador de la noticia
# al que está adjunto) y titulo (el titular que se visualizará con el archivo)
from Products.PythonScripts.standard import url_quote
if fichero.filename=='' or titulo=='' or
context.tamanoMaximo(context.REQUEST.CONTENT_LENGTH)==1:
return context.REQUEST.RESPONSE.redirect("respUpLoad?error=%s" % (noticia) )
# crear el fichero
lugar=container.News
lugar=getattr(lugar, noticia)
id='adjunto_%d' % len(lugar.objectIds())
# if fichero.content_type=='image/gif' or fichero.content_type=='image/jpeg' or
fichero.content_type=='image/png':
# lugar.manage_addProduct['OFSP'].manage_addImage(id, title=titulo, file=fichero)
# else:
lugar.manage_addProduct['OFSP'].manage_addFile(id, title=titulo, file=fichero)
return context.REQUEST.RESPONSE.redirect("respUpLoad?noticia=%s" % (noticia) )
" 8!A "
13
8!+
6
=/demo/Indice/Tablon/Todas/index_html> 0
O
4
+
<html>
<head>
<title tal:content="template/title">The title</title>
<link rel="STYLESHEET" type="text/css" href="content.css">
</head>
<body>
<span class="ruta" tal:content="structure container/darruta">ruta de
naavegacion</span>
<div align="right">
<table class="addfavor" border="0"
tal:condition="python:here.getRol('profesor')=='true'">
<tr>
<td>»» <a href="www" tal:define="aqui here/absolute_url; donde
python:here.substring(aqui)"
tal:attributes="href python:'/%s/addFavor?nombre=%s&p1=%s&p2=%s' %
(here.portal,here.title,here.indice,donde)">Agregar a mis favoritos </a>««
</td>
</tr>
</table>
</div>
<br>
<table class="pequena" width="100%">
<tr>
<td align="center" width="25%">
<form action="../Secciones/verSeccion" method="POST">
input type="submit" name="B1" value="Elegir Seccion" style="font-family: Arial;
font-size: 8 pt"><br>
<select name="seccion" size="1" style="font-family: Arial; font-size: 9 pt; borderstyle: solid">
<option selected value="Comunidad Educativa">Comunidad Educativa
<option value="Dirección">Dirección
<option value="Jefatura de Estudios">Jefatura de Estudios</option>
<option value="Secretaría">Secretaría</option>
<option value="ESO">ESO</option>
<option value="Bachillerato">Bachillerato</option>
<option value="Formación Profesional">Formación Profesional</option>
<option value="Garantía Social">Garantía Social</option>
<option value="Extraescolares">Extraescolares</option>
<option value="AMPA">AMPA</option>
<option value="Alumnado">Alumnado</option>
</select>
</form>
</td>
<td width="50%" align="center">
<h1> Noticias Publicadas
</h1>
</td>
<td align="center">
<form action="../Buscar" method="POST">
<input type="text" name="cadena" style="font-family: Arial; font-size: 9 pt;
border-style: solid"><br>
<input type="submit" name="B1" value="Buscar" style="font-family: Arial; fontsize: 8 pt">
</form>
</td>
</tr>
</table>
<table class="titulotabla" border="0" cellpadding="5" cellspacing="0" width="100%">
<tr>
" 8!? "
<td align="center" width="15%">Fecha</td>
<td align="center" width="70%">Titular de la Publicación</td>
<td align="center" width="15%">
Archivos</td>
</tr>
</table>
<table class="normal" border="0" cellspacing="0" cellpadding="10" width="100%"
tal:define="noticias python:here.getTitulares('tablon');
start request/start|python:0;
batch python:modules['ZTUtils'].Batch(noticias,size=here.maxNoticias,start=start);
global previous python:batch.previous;global next python:batch.next">
<span tal:repeat="noticia batch">
<tr class="ll"
tal:attributes="class python:test(path('repeat/noticia/even'), 'gris', 'blanco')">
<td align="center" width="15%"><img border="0" src="../imagen/flecha.gif" width="12"
height="12">&nbsp;
<a href="noticia1"
tal:attributes="href noticia/absolute_url"
tal:content="python:here.getFechaddmmaa(noticia)">la fecha</a>
</td>
<td width="70%" tal:content="noticia/title">titulo
</td>
<td align="center">
<i tal:content="python:here.hayAdjuntos(noticia)">Si</i>
</td>
</tr>
</span>
</table>
<br>
<p align="center">
<a tal:condition="previous" tal:attributes="href
string:${request/URL0}?start:int=${previous/first}" href="previous_url">Anterior</a>
<a tal:condition="next" tal:attributes="href
string:${request/URL0}?start:int=${next/first}" href="next_url">Siguiente</a>
</p>
<br>
<li class="mensaje"> Las noticias que pertenecen a la sección de Alumnado se visualizan en
la opción <i>Elegir Sección</i></li>
</body>
</html>
8F+
6
+
=/demo/Perfil/Jefe/Registrar/addProf> 0
-
,
6
+
,1 0
-
+
<html>
<head>
<title tal:content="template/title">The title</title>
<link rel="STYLESHEET" type="text/css" href="content.css">
</head>
<body>
<span tal:condition="python:request.user=='' or request.pwd1==''
request.pwd1!=request.pwd2">
<script>window.open("respAddProf?error=1","contenido");</script>
</span>
or
request.prof==''
or
<span tal:condition="python:not (request.user=='' or request.pwd1=='' or request.prof==''
or request.pwd1!=request.pwd2)">
<table tal:repeat="item python:here.existeUser(usuario=request.user)">
<tr tal:define="global numero string:${item/numero}">
<td
tal:condition="python:numero>'0'"><script>window.open("respAddProf?error=1","contenido");</
script></td>
" 8F "
<td tal:condition="python:numero=='0'">
<span
tal:define="nada
python:here.insProf(user=request.user,
pwd1=request.pwd1,
prof=request.prof,dpto=request.dpto)"></span>
<i tal:define="dd python:here.sendWebMail(texto='Acabas de pasar a formar parte del
portal, esperamos que obtengas todo lo que esperas ...',destino=request.user)"></i>
<br><br>
<p class="ok">
El usuario se ha registrado correctamente.
</p>
</td>
</tr>
</table>
</span>
</body>
</html>
/demo/Perfil/insProf
lugar = context.restrictedTraverse('/%s/Personal' % context.portal)
lugar.manage_addProduct['OFSP'].manage_addFolder(user, title='Página de %s' %user)
nueva=getattr(lugar, user)
nueva.manage_addProperty('elementos', 0, 'long')
nueva.manage_addProperty('f1', '', 'string')
nueva.manage_addProperty('f2', '', 'string')
nueva.manage_addProperty('f3', '', 'string')
nueva.manage_addProperty('f4', '', 'string')
nueva.manage_addProperty('f5', '', 'string')
nueva.manage_addProperty('p11', '', 'string')
nueva.manage_addProperty('p12', '', 'string')
nueva.manage_addProperty('p21', '', 'string')
nueva.manage_addProperty('p22', '', 'string')
nueva.manage_addProperty('p31', '', 'string')
nueva.manage_addProperty('p32', '', 'string')
nueva.manage_addProperty('p41', '', 'string')
nueva.manage_addProperty('p42', '', 'string')
nueva.manage_addProperty('p51', '', 'string')
nueva.manage_addProperty('p52', '', 'string')
nueva.manage_addProperty('contenido', '/%s/Personal/%s' %(context.portal,user), 'string')
context.updateProf(apellidos=prof,user=user,departamento=dpto)
context.REQUEST.set("domains", [])
context.REQUEST.set("name", user)
context.REQUEST.set("roles", ["profesor"])
context.REQUEST.set("password", pwd1)
context.REQUEST.set("confirm", pwd1)
lugar = context.restrictedTraverse('/%s' % context.portal)
context.acl_users.manage_users(submit="Add", REQUEST=context.REQUEST)
" 8F8 "
ANEXO II.- INFORMACIÓN QUE OFRECE GASPWIES.
*
+,-.
*
+,-.
.
3. 4
.
3. 4
" 8F "
L +
.
+
*+,-.
*+,-.
$
4
5 +
0
" 8F: "
+
*
+,-. # '
*+,-.
4
O
+
+
" 8F! "
*
+,-. $
.
*
+,-. (
+
.
+
" 8FF "
*+,-. "
*+,-.
.
%# 4 .
+
.
" 8F< "
+
*
+,-.
*+,-.
%
* 1
+
/
" 8FB "
%
3+
*+,-.
$
O0
" 8FA "
4+
Related documents
Herramientas Computacionales
Herramientas Computacionales
Manual de Instalación
Manual de Instalación