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> <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) + """ <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, """ <img src="/%s/Skins/%s/i%s.gif" width="10" height="10">""" % \ (context.portal,context.Skins.buena,carpeta.icono) + " 8!! " """ <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,' ') 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) + """ <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+' ') 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> </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"> <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+