Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
____________________________________________________________________________
Tambien ocupa crear una base de datos.............
Luego les digo como hacerlo
Garcia Luna Jorge Manuel
05210015
13
16
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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.
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.
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.
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
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.
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.
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.
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
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)
#portal-logo2 {
background: url("tulogoaqui.extension") no-repeat;
border: 0;
margin: 0 auto 0em auto;
padding: 0;
}
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
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:
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.
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).
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.
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)
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' )
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
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
<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 -->
<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&start.query:record:list:date=${begin}&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.
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.
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.