Está en la página 1de 33

Proceso para instalación de Plone:

• Acceso a la siguiente dirección web: HTTP://PLONE.ORG

• Dar clic en la pestana de descargas

• Para Descarga de programa de la página plone debes de Dar un clic en la


opción de de descarga plone
• Da clic en la opción de descargar plone

• Selecciona para que sistema operativo será instalado.

• Da clic en la opción de guardar para evitar descarga repetitiva en cada uso.

• Indica en que parte o unidad de la computadora será alojado.


• Regresaras a la página anterior volverás a dar clic sobre el sistema
operativo en el cual se instalara y ahora clic en ejecutar.

• Será instalado en la unidad al dar boble click sobre el icono de plone


.

• Aparecerá la siguiente pestana:


Y seleccione el icono de siguiente.
• Seleccione la opción de aceptar términos y clic en siguiente.
• Se notifica el espacio de almacenamiento y clic en
siguiente.

• Ingresar el nombre de usuario y contraseña para administrar el


programa.

• Aparecerá la pantalla de instalación da clic en el icono de instalación


• Aparecerá la ultima pantalla de instalación da clic en la opción de finalizar

Unidad 2 Proyecto Colaborativo de CMS Usando Plone


Instalación
1-Correr el instalador como cualquier programa
2-asignar un contraseña por ejemplo 1234
3-para tener la situación mas fácil, abran la terminal y el text edit (es similar a notepad) en
este ultimo configuraran el archivo buildout.cfg
4-una vez terminada la instalación de plone y las carpetas creadas, hay a 1 archivo y 1
carpeta a la que le deben de dar permisos de escritura la carpeta mencionada la encuentran
en la siguiente ruta:
dan click derecho a esa carpeta, se van a "obtener información" y en la parte de abajo
ponen en "permisos¨ y después aplican la misma para el buildout.cfg para que puedan
modificar la parte de la dirección ip que el CMS tendrá y de la cual podrán llamarlo.
5-En la carpeta de zeocluster ya que estén en los permisos y propietario denle doble click
después en detalles en propietario le dan click en el candado para que lo abran y cambian
"sistema¨ por el numero de mac en la que esten en mi caso es "Apple08”
se aseguran que este en leer y escribir y realizan esto mismo con el "buildout.cfg quitar el
candadito y aplicar lo de lectura y escritura.
Después de esto abren con el text edit el buildout.cfg en el que van a cambiar el ip por el
de su computadora ,esto lo sacan desde terminal con el comando "ifconfig" sacan el numero
que diga en "inet" en mi caso es 10.0.2.60, esto se lo darán al buildout.cfg
En la parte de Ports cambian el zeo-adress que por default viene en 127.0.1:8080 por el ip
que les de la terminal en INET en el paso anterior cierran el archivo y listo.
Ahora solo falta iniciar los servicios de el plone para esto requerimos lo siguiente:
sudo /Applications/Plone/zeocluster/bin/plonectl start
lo anterior lo aplicamos en la terminal ,damos unos 1 minuto o 2 a que termine, una vez
hecho esto el sistema plone esta listo para trabajar
vayan al navegador y pongan su direccion ip 10.0.2.60:8080
(reemplazan su dirección ip) para la administración del plone ponen 10.0.2.60:8080/
manage
con el username admin, password; su clave
listo.
espero que esta guía les sirva , les debo las pantallas
Gracias
De la torre Ruiz Leonardo Daniel
05210007

____________________________________________________________________________
Tambien ocupa crear una base de datos.............
Luego les digo como hacerlo
Garcia Luna Jorge Manuel
05210015

13

Aparecerá un formulario para ingresar el nombre del objeto: Titulo,


Descripción y finalmente la utilidad de búsqueda de archivo, el cual esta
ubicado en algún directorio de su máquina.
▪ Titulo - El título de los elementos de contenido, incluyendo carpetas,
imágenes, páginas, etc, puede ser cualquiera, sin embargo
recomendamos que sean cortos. El título pasa a formar parte de la
dirección web de cada objeto que se crea en Plone, también conocida
como URL (lo que escribe en un navegador para ir a una ubicación
específica en un sitio web) .Las direcciones web tienen restricciones
de caracteres, por ejemplo, espacios en blanco no están permitidos ni
letras en mayúscula. Plone se encarga de mantenerlo normalizado.
▪ Descripción – es una buena idea poner la descripción de un objeto
–ya que la misma aparecerá en los resultados de las búsquedas en el
portal- si lo desea puede dejarlo en blanco.
▪ Archivo – Puede ser cualquier formato de archivo un .zip, .xls, .doc,
.pdf. Si se trata de un archivo de texto es sumamente recomendable
que el mismo se convierta –previo a la carga - a formato PDF. Las
ventajas son muchas: menor tamaño, libre de virus y lo sustantivo
es que el utilitario para leerlo NO requiere de software con licencias
restrictivas ni dede 1.5 Mb es aceptable, considere dividir el documento
en distintos apartados de modo de agilizar la descarga de los mismos.
Otro punto muy importante para considerar, es que si estamos
trabajando con documento con imágenes estas aumentan
enormemente el tamaño de los archivo, si desea mejorar éstos
aspectos lea la página “la maldita imagen en mi texto”. La figura a
continuación indica como fueron completados los datos
versiones específicas. También tenga en cuenta el tamaño, un archivo

Una vez cargado se visualizará lo siguiente

ésta es la vista del objeto recientemente cargado

16

si en la vista anterior seleccionamos archivos (área 2),

Observaremos todos lo archivos que subamos al portal (para éste caso 17


solo tenemos uno).

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Alumna: Veronica Carrera Gutierrez


No. Control: 05210004

Creación de usuarios en Plone


Por defecto Plone permite añadir usuarios a personas que aun no se han registrado en
el sistema de Plone esto en algunos caso no es muy bueno.

Primero tiene que acceder al sitio Plone como administrador o un usuario con estos
privilegios. Luego debe dirigirse al panel de control de Plone y seleccionar
Administración de Usuarios y Grupos. Este le mostrara todos los usuarios aparte del
administrador que existe.

En este caso no hay más usuarios que el administrador de Plone.

Luego seleccionamos la opción de añadir nuevo usuario. Esto nos lleva a un formulario
donde debemos digitar los datos del usuario. Los campos que aparecen con un punto
rojo son los datos que debemos ingresar obligatoriamente los demás son opcionales.

Nombre del usuario: es el nombre con el cual usted se identificara.


E-mail: es la cuanta de correo electrónico donde lo podrán contactar.
Contraseña: es el pass Word que tendrá para identificarse e ingresar al sistema.

Este se tendrá que digitar de nuevo en campo Confirmar contraseña. En algunos


casos no se le permitirá dar inicialmente la clave al usuario sino que se le generara
automáticamente y se le enviara por correo electrónico a la cuenta de correo que
especifico en el campo anterior. Eso depende de la configuración del Portal.
Al final damos clic en el botón registrar. Si el registro fue exitoso, podremos ver al usuario
en la sección Visión Global de Usuarios.

MODIFICACION DE USUARIOS:
Las preferencias de los usuarios pueden ser modificadas bien por el mismo usuario
entrando a la sección mis preferencias o por el administrador seleccionado en usuario
en la sección de Vista global de Grupos y Usuarios. En el caso del administrador.

Luego se selecciona el usuario a modificar. Este le muestra un formulario muy parecido


al que le es mostrado al usuario. El campo nombre se usuario no puede ser modificado
por lo que no aparece en este formulario, pero si aparecen otros datos que no aparecían
el formulario de adición de usuarios como lo son:
Editor de Contenido: es el editor con el cual el usuario editara sus documentos, el
número de editores que se pueden seleccionar depende de los productos instalados en
Plone.

Por ejemplo hay un producto que se llama External Editor que permite edición externa
de páginas pero hay que instalarlo como un producto más de Plone.
Listado en búsquedas: Determina si su nombre de usuario se incluye en las búsquedas
de miembros realizadas en este sitio. (Extraído del mismo formulario).

Permitir la Edición de Nombres Cortos: Este es el que permite que usted le asigne
a su ítem un nombre corto sino esta marcado plone genera uno y se lo asigna
automáticamente.
Foto: permite al usuario añadir una imagen que será vista por los demás usuarios
cuando quieran ver la descripción del usuario.
Luego de insertar los datos que se modificaron debemos dar clic en el botón guardar y
los nuevos atributos del usuario quedaran salvados.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Resffa Elizabeth Fierro Garcia
no. 05210013

CREACION DE NUEVOS GRUPOS


Por defecto cuando ingresamos a la sección Visión Global de Grupos aparece
seleccionada la solapa de usuarios, para Visión Global de Grupos para añadir
un grupo debemos seguir los siguientes pasos:

Seleccionar la solapa de grupos en la sección Visión Global de Grupos, esta


nos mostrará un listado de los grupos existentes, en este momento en el
sistema Plone. En este caso no hay ningún grupo en el sistema. Damos clic
en el botón Añadir grupo.
Este nos trae un formulario el cual debemos diligenciar para crear el grupo.
como se dijo antes, -los campos con un punto rojo son obligación
diligenciarlos- por lo que solo explicare los campos requeridos:
Nombre: Es el nombre con el cual se identificara el grupo
Si el grupo fue añadido satisfactoriamente, en la sección de Visión General
de Grupos ya podremos ver el grupo añadido. En ese momento vemos en la
derecha del nombre del grupo los diferentes roles que se le pueden dar al
grupo, se puede selecciona mas de uno a conveniencia del grupo y los roles
serán dados a
los usuarios que conformen ese grupo. Por lo tanto creo que ya queda
explicado el proceso de como adicionar roles a un grupo.
Luego damos clic en el botón aplicar cambios y listo ya tenemos el grupo
creado.
MODIFICAR GRUPOS

La modificación del grupo se hace igual que la del usuario.

Adición de Carpetas en PLONE


Añadiendo carpetas Plone a un sitio web es la forma básica de control de la organización de
los contenidos.
Usted tiene, sin duda, creado carpetas (directorios) en el disco duro del equipo.
Ordenadores personales utilizan una jerarquía de carpetas para estructurar y organizar los
programas y archivos en el disco duro.En Plone carpetas se utilizan esencialmente la misma
manera, salvo que se crea en un sitio web Plone, para organizar el contenido en Plone
incorporada en el sistema de almacenamiento.
Carpetas se agregan haciendo clic en Agregar nueva ... menú desplegable. Seleccione la
carpeta en el menú:
Ahora debe ver la pantalla de Agregar carpeta:

Rellene el título, que se requiere, tal como indica el cuadro rojo. La descripción es
opcional, siempre puedes volver al panel de edición si es necesario añadir una descripción
de la carpeta. Descripciones son útiles cuando un visitante utiliza la herramienta de
búsqueda incluido en Plone - los resultados se mostrarán con el título y descripción del
tema.
Usted también notará pestañas en la parte superior:
• Default , Por defecto, para entrar en el título y descripción campos,
• Categorization, Categorización, para especificar las categorías que se aplican a la
carpeta (puede conocer estas como palabras clave),
• Dates , Fechas, para establecer el período de tiempo cuando la carpeta debe estar
disponible para ver en el sitio Web,
• Ownership , Propiedad, para especificar el creador y / o colaboradores para el
elemento de contenido,
• Settings, Ajustes, por permitir que los comentarios sobre el tema y si se muestra en
el menú de navegación por el sitio web.
Estas pestañas son estándar, por lo que verás al hacer clic en otros tipos de contenido.
Vamos a cubrir estas pestañas en otra sección de este manual del usuario.
Asegúrese de hacer clic en Guardar en la parte inferior de la página cuando haya
terminado.
Esto completa el proceso de creación de carpeta.

CREAR UN EVENTO EN EL CALENDARIO DEL SITIO


1. El primer paso es entrar a la pagina del administrador :

2. Tenemos una serie de menús en pestañas, el que nos interesa es el que esta en la
parte superior de la pagina, esta en color azul justo al lado de el logo de plone.

3. Damos click en la pestaña Events :

4. Nos deberá de aparecer esta pantalla en nuestro explorador:


5. En la zona verde tenemos otro submenú, buscamos el que diga Add New..
6. Damos click en event.

7. Nos aparecerá una pagina la cual contendrá las siguientes secciones:


8. Primero hay que darle un nombre al evento, en este caso lo llamaremos “AVISO”,
de la misma manera debe tener una breve descripción o nombre mas largo en este
caso ponemos “Aviso Importante” y en el lugar del evento , ponemos la dirección
web del sitio en donde se llevara a cabo el evento :

9. El ejemplo que estamos realizando es el de un aviso sobre el mantenimiento de la


pagina, por lo que aquí depende del sitio, puede tardar varias horas o tal vez días
por lo que se establecerá un horario:

10. También se hace la descripción detallada o un mensaje explicando el evento.

11. Después nos aparecen otras secciones:


12. Si quieres la opción de que los usuarios comenten tus eventos , nos vamos al menú
superior de color blanco , y damos click en la sesión Settings:

13. Después seleccionamos el primer checkbox que dice : Allow Comments y damos
click en Save:
14. Regresamos al evento en el mismo menú pero en la pestaña de Default y nos
desplazamos hasta la parte inferior de la pagina y damos click en Save :

15. Y listo nuestro evento aparece en el calendario y si acercamos el cursor nos muestra
la hora del evento o damos clic en el dia del evento y nos muestra esta pantalla.

"EJEMPLO DE COMO PONER FONDO A PLONE".

Agregando una imágen de fondo y fijando el ancho del diseño. Agrega el siguiente CSS y
recarga el sitio:
/* fondo + estilo de logos */
body {
background: url(bg_light.gif);
width: 840px;
margin: auto;
}

#visual-portal-wrapper {
margin: 20px;
background-color: white;
padding: 0 20px 20px 20px;
}

#portal-logo {
display: block;
margin-bottom: 2em;
}

Un detalle que merece prestar atención es la línea margin: auto. Este es el modo por el cual
se centran elementos en CSS y mucha gente no lo sabe — generalmente esperan usar algo
como float: center o similar.
Una vez guardado, el sitio debería verse de este modo:
Es increible lo que hace al diseño agregar una simple imágen de fondo.

Como cambiar la figura superior del menu al dar clic sobre algun
tema del menu

Hola en este Tema

Como cambiar la figura superior del menu al dar clic sobre algun tema del
menu cuando le des clic sobre cada tab cambie la image superior, porque los
tabs tienen información diferente,
Para poder cambiar correctamente el portal-logo en una carpeta y, por
tanto, sea diferente que en root, hay que modificar los css... (aplicable al
diseño completo de la página en esa carpeta)

Primero de todo: en la carpeta Custom (portal_skins->custom) añade un


nuevo objeto Image y sube la imagen que quieras como logo (cabecera).

Ya tienes el main_template en la carpeta a modificar... ahora abre el


template haciendo click sobre él.

Busca el código siguiente:


<a metal:use-macro="here/global_logo/macros/portal_logo">
The portal logo, linked to the portal root
</a>
cambia portal_logo por portal_logo2, guarda los cambios y ve a
/portal_skins/portal_templates, píncha en global_logo y luego dale a
customize (esto te permite editarlo). Verá este codigo:

<h1 id="portal-logo" metal:define-macro="portal_logo">


<a href="/"
tal:attributes="href navigation_root_url"
tal:define="portal_title portal_properties/title;"
tal:content="string:$portal_title"
accesskey="1">
Plone
</a>
</h1>

copialo justo debajo de </h1> y cambias el id="portal-logo2" metal:define-


macro="portal_logo2">

Quedará algo así:

<h1 id="portal-logo" metal:define-macro="portal_logo">


<a href="/"
tal:attributes="href navigation_root_url"
tal:define="portal_title portal_properties/title;"
tal:content="string:$portal_title"
accesskey="1">
Plone
</a>
</h1>
<h1 id="portal-logo2" metal:define-macro="portal_logo2">
<a href="/"
tal:attributes="href navigation_root_url"
tal:define="portal_title portal_properties/title;"
tal:content="string:$portal_title"
accesskey="1">
Plone
</a>
</h1>

guarda los cambios. ¿tienes en la carpeta custom un archivo que se llama


ploneCustom.css? si lo tienes editalo, si no ve a plone_skins->plone_styles
abrelo y customizalo. Entonces agrega este código:

#portal-logo2 {
background: url("tulogoaqui.extension") no-repeat;
border: 0;
margin: 0 auto 0em auto;
padding: 0;
}

guardalo y ya tienes modificado el logo en la carpeta .

AÑADIR UNA NOTICIA AL PLONE

Plone cuenta con un sistema para publicar noticias.


Empleo el menú de artículo añadir para una carpeta para añadir una noticia seleccionas
news ítem para crear los que tu quieras publicar.
Usted verá el panel de noticia de revisión: para crear el titulo descripcion de la noticia color
de letra etc.

En este punto se muestra para subir la foto de la noticia.


Los campos estándar para el título, la descripción, y el artículo (s) relacionado están en el
panel, con un redactor visual el área para el texto de cuerpo y la imagen y campos de título
de imagen. Usted puede ser tan creativo como usted quiere en el texto de cuerpo el área, y
usted puede usar la imagen de encarte (cargar la imagen) la función para añadir tanta
ilustración como necesario. Las imágenes que usted carga para la noticia serán añadidas a
la carpeta en la cual usted añade la noticia.

La Imagen y el Título de Imagen juegan en campo, apropiado, son para añadir una imagen
para ser usado como un representante gráfico para la noticia, para fijar en listados de
noticia.
Como con acontecimientos que resaltan en el calendario: Las noticias no aparecerán en su
mayoría noticias de sitio web catalogando hasta que ellos sean publicadosAñadir un Sitemap
de Google

AÑADIR UN SITEMAP DE GOOGLE

Crea un Page Template (Content-Type:text/xml) en tu carpeta custom llamado sitemap.xml


o google-sitemaps.xml (la extension .xml es requerida por google) y pegue el siguiente
código dentro:

<?xml version="1.0" encoding="UTF-8"?>


<urlset xmlns="http://www.google.com/schemas/sitemap/0.84"
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
tal:define="results python:container.portal_catalog(
portal_type = ['News Item','Document', 'Topic'],
review_state=['published'],
sort_on='modified' ,sort_order='reverse');
dummy python:request.RESPONSE.setHeader('Content-Type', 'text/xml');
dummy2 python:request.RESPONSE.setHeader('charset', 'UTF-8');"
tal:condition="results"
tal:on-error="nothing" >
<url tal:repeat="result results" tal:on-error="nothing">
<loc tal:content="result/getURL">http://www.yoursite.com/</loc>
<lastmod tal:content="python:
DateTime(result.modified).HTML4()">2005-01-01</lastmod>
</url>
</urlset>

Esta Page Template lista todo el contenido publicado de los tipos Noticia,Documento y
Carpetas Inteligente. Añade todos los tipos de contenido o estados si quieres que estén
listados en el sitemap.

Si estas usando EasyRating puede que desee añadir una etiqueta priority:

<priority tal:condition="result/amount_of_ratings | nothing"


tal:content="python:result.average_rating/5">0.8</priority>
Se asume que las puntuaciones están en un rango de 0 y 5 (valores por defecto). Si defines
otros valores hay que cambiar el tal:content.

Puedes especificar la ubicación del Sitemap con el archivo robots.txt. Para ello, sólo tienes
que añadir la siguiente línea:

Sitemap: <sitemap_location>

El <sitemap_location> debe ser la URL completa de la ubicación del Sitemap, por ejemplo:
http://www.example.com/google-sitemaps.xml. Esta directiva es independiente de la línea
"user-agent", por lo que no importa donde coloque su archivo.

Usted puede añadir su sitemap para Google Sitemaps en http://www.google.com/


webmasters/sitemap

COMO CAMBIAR EL ICONO(FAVICON) ASOCIADO TU SITIO PLONE

Un favicon es una imagen que los desarrolladores web incluyen en el sitio y aparece en la
barra de direcciones, favoritos y bookmarks (en la mayoría de navegadores).

La imagen en mención, normalmente es el logo o ícono distintivo de la empresa, institución


o persona para quien el sitio ha sido desarrollado. Sirve para promocionar su imagen, su
marca y crear sitios más personalizados.

Crea una imagen de 16x16.


Convertir la imagen a un fichero .ico (Puedes usar la herramienta online:
http://tools.dynamicdrive.com/fav )
Por último, añade un "File" en tu carpeta '{site_root}/portal_skins/custom/'.
Que hacer para que en el calendario aparezcan sólo los eventos de
una carpeta

Este How-to explica como hacer para tener el portlet del calendario en varias carpetas y en
cada una de ellas sólo aparecerán marcados los eventos contenidos en la carpeta.

Ir al sistema de ficheros y en el archivo CalendarTool.py del directorio Products/


CMFCalendar buscar las funciones getEventsForCalendar y catalog_getevents, sustituir el
código por lo siguiente:

security.declarePublic('getEventsForCalendar')
def getEventsForCalendar(self, month='1', year='2002', path=None):
""" recreates a sequence of weeks, by days each day is a mapping.
{'day': #, 'url': None}
"""
year=int(year)
month=int(month)
# daysByWeek is a list of days inside a list of weeks, like so:
# [[0, 1, 2, 3, 4, 5, 6],
# [7, 8, 9, 10, 11, 12, 13],
# [14, 15, 16, 17, 18, 19, 20],
# [21, 22, 23, 24, 25, 26, 27],
# [28, 29, 30, 31, 0, 0, 0]]
daysByWeek=calendar.monthcalendar(year, month)
weeks=[]

if path:
events=self.catalog_getevents(year, month, path)
if not path:
events=self.catalog_getevents(year, month)

for week in daysByWeek:


days=[]
for day in week:
if events.has_key(day):
days.append(events[day])
else:
days.append({'day': day, 'event': 0, 'eventslist':[]})

weeks.append(days)

return weeks

security.declarePublic('catalog_getevents')
def catalog_getevents(self, year, month, path=None):
""" given a year and month return a list of days that have events """
year=int(year)
month=int(month)
last_day=calendar.monthrange(year, month)[1]
first_date=self.getBeginAndEndTimes(1, month, year)[0]
last_date=self.getBeginAndEndTimes(last_day, month, year)[1]
if path:
query = self.portal_catalog(
portal_type=self.getCalendarTypes(),
review_state=self.getCalendarStates(),
path = path,
start={'query': last_date, 'range': 'max'},
end={'query': first_date, 'range': 'min'},
sort_on='start' )
if not path:
query = self.portal_catalog(
portal_type=self.getCalendarTypes(),
review_state=self.getCalendarStates(),
start={'query': last_date, 'range': 'max'},
end={'query': first_date, 'range': 'min'},
sort_on='start' )

# compile a list of the days that have events


eventDays={}
for daynumber in range(1, 32): # 1 to 31
eventDays[daynumber] = {'eventslist':[], 'event':0, 'day':daynumber}
includedevents = []
for result in query:
if result.getRID() in includedevents:
break
else:
includedevents.append(result.getRID())
event={}
# we need to deal with events that end next month
if result.end.month() != month:
# doesn't work for events that last ~12 months
# fix it if it's a problem, otherwise ignore
eventEndDay = last_day
event['end'] = None
else:
eventEndDay = result.end.day()
event['end'] = result.end.Time()
# and events that started last month
if result.start.month() != month: # same as above re: 12 month thing
eventStartDay = 1
event['start'] = None
else:
eventStartDay = result.start.day()
event['start'] = result.start.Time()

event['title'] = result.Title or result.getId

if eventStartDay != eventEndDay:
allEventDays = range(eventStartDay, eventEndDay+1)
eventDays[eventStartDay]['eventslist'].append( {'end': None,
'start': result.start.Time(), 'title': event['title']} )
eventDays[eventStartDay]['event'] = 1

for eventday in allEventDays[1:-1]:


eventDays[eventday]['eventslist'].append( {'end': None,
'start': None, 'title': event['title']} )
eventDays[eventday]['event'] = 1

if result.end == result.end.earliestTime():
last_day_data = eventDays[allEventDays[-2]]
last_days_event = last_day_data['eventslist'][-1]
last_days_event['end'] = (result.end-1).latestTime().Time()
else:
eventDays[eventEndDay]['eventslist'].append( {'end':
result.end.Time(), 'start': None, 'title': event['title']} )
eventDays[eventEndDay]['event'] = 1
else:
eventDays[eventStartDay]['eventslist'].append(event)
eventDays[eventStartDay]['event'] = 1
# This list is not uniqued and isn't sorted
# uniquing and sorting only wastes time
# and in this example we don't need to because
# later we are going to do an 'if 2 in eventDays'
# so the order is not important.
# example: [23, 28, 29, 30, 31, 23]
return eventDays

A continuación, sustituir el código del portlet_calendar por el siguiente:

<html xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
i18n:domain="plone">

<body>

<div metal:define-macro="portlet"
tal:omit-tag=""
tal:define="DateTime python:modules['DateTime'].DateTime;
current python:DateTime();
current_day current/day;
yearmonth here/getYearAndMonthToDisplay;
nextYearMax python: current+365;
prevYearMin python: current-365;
year python:yearmonth[0];
month python:yearmonth[1];
prevMonthTime python:here.getPreviousMonth(month, year);
nextMonthTime python:here.getNextMonth(month, year);
path python:'/'.join(context.getPhysicalPath());
weeks python:here.portal_calendar.getEventsForCalendar(month, year, path);
anchor_url request/anchor_url | here_url;
query_string python:request.get('orig_query', None);
query_string python: (query_string is None and request.get('QUERY_STRING',
None)) or query_string;
url_quote python:modules['Products.PythonScripts.standard'].url_quote;
anchor_method request/anchor_method | template/getId;
translation_service nocall:here/translation_service;
day_msgid nocall:translation_service/day_msgid;
weekday_english nocall:translation_service/weekday_english;
utranslate nocall:here/utranslate;
toLocalizedTime nocall:here/toLocalizedTime;
getEventString nocall:here/getEventString;">
<!-- The calendar, rendered as a table -->

<table class="ploneCalendar" id="thePloneCalendar" summary="Calendar"


i18n:attributes="summary summary_calendar;">
<thead>
<tr>
<th id="calendar-previous">
<a href="#" rel="nofollow"
title="Previous month"
tal:attributes="href python:'%s/
%s?%s&amp;month:int=%d&amp;year:int=%d&amp;orig_query=%s' % (anchor_url,
anchor_method, query_string,
prevMonthTime.month(),prevMonthTime.year(),url_quote(query_string))"
tal:condition="python: yearmonth > (prevYearMin.year(),
prevYearMin.month())"
i18n:attributes="title title_previous_month;">&laquo;</a>
</th>
<th colspan="5">
<span i18n:translate="" tal:omit-tag="">
<span i18n:name="monthname"
tal:define="month_english
python:translation_service.month_english(month);"
tal:attributes="id string:calendar-month-$month_english"
tal:content="python:
utranslate(translation_service.month_msgid(month), default=month_english)"
tal:omit-tag=""
id="calendar-month-month">monthname</span>
<span i18n:name="year"
tal:content="string:$year"
tal:attributes="id string:calendar-year-$year;"
tal:omit-tag=""
id="calendar-year">year</span>
</span>
</th>
<th id="calendar-next">
<a href="#" rel="nofollow"
title="Next month"
tal:attributes="href python:'%s/
%s?%s&amp;month:int=%d&amp;year:int=%d&amp;orig_query=%s' % (anchor_url,
anchor_method, query_string,
nextMonthTime.month(),nextMonthTime.year(),url_quote(query_string))"
tal:condition="python: yearmonth &lt; (nextYearMax.year(),
nextYearMax.month())"
i18n:attributes="title title_next_month;">&raquo;</a>
</th>
</tr>
<tr tal:define="weekdaynumbers here/portal_calendar/getDayNumbers"
class="weekdays">
<tal:data tal:repeat="daynumber weekdaynumbers">
<td tal:define="weekday_english
python:weekday_english(daynumber,format='a');"
tal:content="python: utranslate(day_msgid(daynumber, format='s'),
default=weekday_english)">Su</td>
</tal:data>
</tr>
</thead>

<tal:comment replace="nothing"><!--
Sorry for the obtuse formatting below (the stray end-of-tag markers), but until
tal:block doesn't render an entire line of blank space when used, this is the only way.
--></tal:comment>
<tbody>
<tr tal:repeat="week weeks"
><tal:block repeat="day week"
><tal:block define="int_daynumber python: int(day['day']);
day_event day/event;
is_today python: current_day==int_daynumber and
current.month()==month and current.year()==year">
<td class="event" tal:condition="day_event"
tal:attributes="class python:is_today and 'todayevent' or 'event'"
><tal:data tal:define="cur_date
python:DateTime(year,month,int_daynumber);
begin python:url_quote((cur_date.latestTime()).ISO());
end python:url_quote(cur_date.earliestTime().ISO());"
tal:omit-tag=""
><a href=""
tal:attributes="href string:${portal_url}/
search?review_state=published&amp;start.query:record:list:date=${begin}&amp;start.range:record=max
title
python:'\n'.join([toLocalizedTime(cur_date)]+[getEventString(e) for e in
day['eventslist']]);"
tal:content="python:int_daynumber or default">
31
</a
></tal:data>
</td
><tal:notdayevent tal:condition="not: day_event"
><td tal:attributes="class python:is_today and 'todaynoevent' or None"
tal:content="python:int_daynumber or default"></td
></tal:notdayevent
></tal:block
></tal:block>
</tr>
</tbody>
</table>

</div>

</body>

</html>

De esta forma podremos tener dos carpetas con eventos cada una de ellas y que en cada
calendario de cada carpeta sólo muestre los eventos contenidos en la propia carpeta.

Conclusión acerca del uso de plone en clase

Primero hay que bajar un instalador de Plone para Mac. Ya que son las que
usamos en esta clase. (El cual una persona bajo este instalador y lo compartió
por medio de una memoria extraíble para evitar saturar la red por tratar de
bajarlos todos al mismo tiempo. Lo cual es recomendable bajar la versión
para desarrollo que incluye plantillas, herramientas y para comenzar rápido,
se es recomendable para las personas que no somos expertas trabajando en
plone ya que es un buen ejemplo para empezar a trabajar.

Al tiempo de instalar Plone podemos configurarlo para instalarlo en un


servidor pero como solo queremos saber como trabaja, y aprender sobre el,
solo lo instalaremos como localhost para empezar a usarlo. De este modo
empezaremos a trabajar y viendo los avances desde nuestra computadora,
sin temor de llegar a equivocarnos.

Así podemos pasar un buen rato probando el entorno viendo para que sirve
una y otra cosa, mirando las carpeta que se crearon tiempo de instalarlo y
los cambios que se le pueden hacer. Podemos ver que el código se le puede
modificar sabiendo un poco como crear los CSS.

Como elegimos instalar los templates de ejemplos un diseñador Web ya


definió templates HTML básicos junto con diseños en imágenes estáticas
que trae ya por default, pero como nosotros que remos crear nuestra propia
pagina y a nuestro estilo entonces podemos instalarle los componentes que
necesitemos así como modificarles los que no nos guste.

Lo recomendable es consultar un tutorial para aprender la configuración


del mismo plone. En cuanto a las carpetas e imágenes que manejamos,
si nosotros empezamos a navegar un poco dentro de la carpeta plone nos
llevara a un directorio llamado templates donde almacenan el template HTML,
páginas de estilos e imágenes del diseñador Web. También almacenan un
archivo vació llamado overrides.css, donde pueden redefinir aspectos de su
propio CSS y tener nuestra pagina personalizada a nuestro estilo.
En este directorio podemos instalar nuevas plantillas que se acomoden a
nuestras necesidades pero por defecto, como elegimos instalar ejemplos ya
hay templates instaladas las cuales podemos cambiar el logo y los colores
del árbol de navegación, pestañas, etc. Tomando esto como ejemplo, hacen
rápidamente una estructura aproximada donde los títulos, cuerpo, contenido
y elementos de navegación de las páginas y podemos emplearlas y
modificarlas a tal manera que ya no parezcan como realizadas por un
diseñador de plone sino una pagina diseñada por nosotros mismos.
Como conclusión, el usar plone como uno de los primeros CMS fue algo muy
divertido ya que podemos realizar una pagina Web bien estructurada en un
muy bajo tiempo la cual contiene todo los necesario para no tener que perder
mucho tiempo programando y diseñando y haciendo desde cero componentes
que al final de cuentas no funcionan bien o no son usadas al final .