El desenvolupament de Wikipool es pot afrontar amb un enfocament modular.
Això té algunes avantatges:
- desenvolupament tipus layering, cada mòdul o capa sap com es comunica amb les altres però es pot desenvolupar autònomament (facilita col·laboració de diferents programadors)
- re-aprofitament dels mòduls en altres programes (especialment pensant en Casual, però igualment podria ser per coses tipus pppFlickr_toys)
- possibilitat d'afegir o substituir mòduls
D'entrada podem pensar en 4 grans parts del programa:
- pools_hall: sistema multipools que gestiona la presentació d'informació, creació i accés a les diferents pools o canals.
- pool: funcionament de la pròpia pool, comportament dels retalls (snips) en la composició, registre d'informació relativa a aquests en la base de dades
- user: control de sessions d'usuari, registre dades usuari a la base de dades
- user_tools: referent a les eines personals de l'usuari en l'entorn de treball i dels mecanismes necessaris en servidor; sistema de cerca, galeria de resultats, mecanisme d'incorporació de continguts.
A continuació s'esbossen els mòduls de Wikipools agrupats en aquests 4 blocs. Això és un document de treball preliminar, a la pràctica pot ser que hi hagi canvis.
[edita] Pools_hall
Conjunt de mòduls del sistema de gestió de pools o canals de wikipool.
[edita] mostrar pools obertes
- show_pools
- client/server (Ajax/PHP/MySQL)
mòdul que consulta a la base de dades les pools obertes (i les seves característiques) per mostrar-les en portada
- s'ha d'executar en consulta periòdica per si s'esborra o crea una nova pool
[edita] crear/esborrar pool
- pool_live
- server (PHP/MySQL)
mòdul que serveix per:
- crear una una nova pool:
- crea una entrada a la taula pool de la base de dades
- se li han de passar les propietats de la pool
- quan es fa servir? Quan algú decideix crear una pool nova enlloc d'entrar en una d'oberta
- esborrar una pool existent
- elimina una pool i tot el que hi està relacionat
- base de dades:
- elimina l'entrada de la pool a esborrar a la base de dades
- elimina totes les referències pool2content (o pool2box)
- ¿? elimina els continguts vinculats a la pool
[edita] Propietats d'una pool
- pool_properties
- server/client
mòdul que serveix per:
- definir les propietats que tindrà una pool. Per exemple:
- Tema visual i/o color de fons de la composició
- Mida de la composició (si no és relativa)
- Nombre màxim de snips o caixes
- Reciclatge/acumulació de snips: si cada contingut incorporat crea un nou snip o es substitueix el contingut del més vell
- Continguts acceptats: imatges referenciades, càrrega d'arxius gràfics (formats i pes), text, vídeo
- Possibles restriccions d'accés
- Mode d'inici:
- Blank: comença amb una composició buida sense continguts
- Casual: fa una cerca de continguts i els disposa aleatòriament
- Reclycle: reaprofita pool anterior o un determinat estat d'aquesta
simulació interface
[edita] Bloquejar/desbloquejar una pool
- pool_status
- server (PHP/MySQL)
mòdul que serveix per:
- bloquejar una pool
- tanca l'accés a una pool
- es pot escalar: hide (dades enregistrades però no visible), noedit (és visible, es pot consultar i veure historial, no es pot seguir editant)
- s'utilitzaria un camp de la base de dades per aquest propòsit
- Quan es fa servir? Quan es vol deixar una pool tancada o "adormida". Potser passada una estona que ningú hi entra.
- desbloquejar una pool
- torna a permetre que es vegi i/o s'editi
- Quan es fa servir? No està clar que ho fem servir, però està bé que hi sigui, encara que només es faci servir a nivell d'administrador.
- wpool_casual
- server
Casual és un programa independent. Però està previst que la seva nova versió comparteixi alguns mòduls amb aquesta versió de Wikipool.
Wikipool té específicament un mòdul Casual que li serveix per si es vol començar una pool sense començar en blanc (veure #Propietats d'una pool).
Aquest mòdul serveix per:
- Fer una meta-cerca o cerca múltiple (en diferents fonts) a partir d'una expressió entrada per l'usuari creador de la pool (això es fa utilitzant el mòdul multi-cerca
- Escollir aleatòriament entre els resultats obtinguts els continguts dels retalls (snips)
- Disposar aleatòriament (o algoritme "casual") els retalls en la composició inicial
- Quan es fa servir? Quan l'usuari creador de la pool escull el mode d'inici "casual"
[edita] Control d'usuari
- user_mg o user_management
- server (PHP)
mòdul que serveix per:
- gestionar sessions d'usuari (quan accedeix, quan deixa)
- guardar informació d'usuari a la taula users de la bd
- recuperar informació d'usuari de la taula users de la bd
- mostrar nombre usuaris connectats en la interfície d'una pool o bé en les caselles d'informació de pools en portada
reaprofitable: és un mòdul que es pot compartir amb Casual i amb qualsevol altre programa que necessiti gestió d'usuaris
 
Conjunt de mòduls relacionats amb el funcionament d'una pool o canal de Wikipool; principalment amb el funcionament dels retalls (snips) i del seu contingut.
[edita] Entrar pool
- pool_builder
- client (javaScript/Ajax)
aquest mòdul serveix per:
[edita] Registre pool
- pool_stats
- server/client
aquest mòdul hauria de permetre fer un registre de l'evolució de la pool a nivell d'events que s'hi produeixen de manera que després es pogués re-produir una sessió (o un fragment) com una seqüència animada. Cal resoldre tant qüestions de disseny d'interacció com de disseny tècnic. De moment la opció està contemplada en el disseny de la base de dades.
[edita] Gestió retall/contingut
- snip_manager, snip_management o snip_mg
- client/server
és un mòdul referent als retalls (snips) o "caixes" (boxes) i al seu contingut (content)que serveix per:
- moure els retalls: això ja ens ve donat per les funcions de Script.ocul.us i s'incorpora en construir la pool amb el pool_builder, segurament no calen uns scripts de codi específics. Faran falta en tot cas si s'implementa el sistema de bloqueix de snip quan algú l'està movent.
- consultar la posició i actualitzar-la: perquè tots els participants vegin els moviments que han fet els altres [Actualment: funció viewer() de lib/wikipool.js que mitjançant Ajax.PeriodicalUpdater crida /lib/pool_update.php]
- incorporar snips: mecanisme per crear nous snips (vinculat a #User_tools) si la opció està disponible
- canviar contingut snip: mecanisme per substituir el contingut del snip més antic pel nou incorporat (vinculat a #User_tools) si aquesta és la opció escollida
[edita] Registre/Historial retalls
- snip_hist
- client/server
aquest mòdul serveix per:
- Historial: crear un registre de continguts i posicions d'un snip al llarg d'una sessió
- Cada cop que algú canvia de posició un retall (snip) la nova posició es guarda en la taula snip (o box) de la base de dades
- La posició que hi havia en aquesta taula passa a la taula "pos2snip_old" (o "pos2box_old") junt amb un timestamp (seguint proposta db-alt1)
- Cada cop que algú canvia el contingut d'un retall (snip) el nou contingut es guarda en la taula snip (o box) de la base de dades o a la taula "content2snip" (segons l'enfoc que finalment adoptem).
- La referència al contingut antic es passa a la taula "content2snip_old" (o "content2box_old") junt amb un timestamp (seguint proposta db-alt1)
- Mostrar i recuperar historial: de moment aquesta part no està resolta ni a nivell de disseny d'interacció ni de disseny tèncic
- Caldria estudiar com es mostra a l'usuari l'historial, si és per cada retall o és de conjunt de la pool
- Caldria estudiar com es mostra visualment i si és "navegable"
- Caldria estudiar si es pot restaurar un contingut a una "snip", si es pot tornar a una versió anterior de tota la "pool", si es pot crear una nova pool a partir d'un punt de l'historial, si es pot "reproduïr" una sessió en seqüència
- Provisionalment es pot desenvolupar la primera part del mòdul per assegurar el registre i deixar la segona part per quan s'hagi resolt a nivell de disseny

[edita] User_tools
Conjunt de mòduls relacionats amb les eines personals (no compartides, no multiusuari) del participant en l'entorn de treball. Principalment els mecanismes de cerca, la galeria de resultats i els mecanismes d'incorporació de continguts.
[edita] multi-cerca
- mmsearch
- server
mòdul que serveix per:
- cercar imatges a partir d'una petició
- s'ha de pensar per poder utilitzar vàries fonts (peticions search-engine's, API's, ...) i que l'usuari o la configuració de la pool determini quines s'utilitzaran
- s'ha de poder definir el nombre de resultats
- cercar textos ¿?
- similar a les imatges però cal veure si s'utilitzarà, pot ser bo que estigui previst encara que no s'utilitzi perquè és una component de Casual
reaprofitable: és un mòdul compartit amb Casual
- gallery o user_tools_box
- client (javascript/Ajax)
és un mòdul que bàsicament defineix el funcionament d'un element d'interface: la barra d'eines de cerca i galeria per incorporar continguts
- resol com es fa la cerca i com es decideixen els paràmetres que es passen al mòdul multi-cerca
- resol com es mostren els continguts i com es fullegen
- resol com s'incorporen els continguts a la pool
- resol com es mostra informació "estadística" a l'usuari (nombre usuaris connectats i altres dades de la pool)
Es fan servir les biblioteques de codi (libraries):
- Prototype
- Framework basat en JavaScript que utilitza tècniques AJAX
- Llicència MIT [1]; permissiva però compatible amb GPL (pot acompanyar a software GPL)
- Descàrrega
- S'utilitza a Wikipool com a framework per AJAX
- script.aculo.us
- add-on de prototype que afegeix drag&drop, control Ajax i DOM, ...
- Llicència codi: MIT [2]
- Descàrrega
- S'utilitza a Wikipool per al drag&drop
- gettext (per incorporar)
- Library de GNU per la traducció multilingüe de software
- Llicència: GPL? LGPL?
- Veure info sobre gettext i com fer-lo servir a: PLANTER/RSC tec#gettext
- S'utilitzarà per fer el sistema multilingüe
Encara no s'han definit quines API's es faran servir. L'ús de les API's serà principalment en el mòdul de cerca.
Una llista de les possibles API a fer servir: PLANTER/RSC tec#API's.
Disseny de la base de dades per Wikipool 0.1.0.
[edita] taules base de dades
Hi ha 6 taules:
[edita] taula contents
Taula contents: Guarda els continguts que van dins de les "caixes" (en realitat DIVs). Poden ser imatges o text.
| Camps | Tipus | Ordenació | Atributs | Nul | Defecte | Extra | Comentari
|
| id
| int(11) | | | no | | auto_increment | identificador únic
|
| coordenates
| varchar(255) | latin1_swedish_ci | | no | | | coordenades; son el top i el left de cada div respecte la pool. Es guarden tipus 120x400 i s'han de recuperar fent servir explode
|
| data
| mediumtext | utf8_unicode_ci | | No | | | URL del recurs quan són imatges
|
| css
| varchar(255) | latin1_swedish_ci | | No | | | color, tamany, etc.. quan el contingut és text
|
| content_type
| int(11) | | | | | | tipus de contingut (imatge, text, ...), és un número que el relaciona amb la taula "contents_type"
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
[edita] taula contents2pool
Taula contents2pool: Relaciona continguts i pools. Diu a quina pool està cada contingut.
| Camps | Tipus | Ordenació | Atributs | Nul | Defecte | Extra | Comentari
|
| content_id
| int(11) | | | no | | | identificador únic d'un contingut de la taula "contents"
|
| pool_id
| int(11) | | | no | | | identificador únic d'un contingut de la taula "pools"
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
[edita] taula contents_type
Taula contents_type: Guarda informació dels tipus de continguts
| Camps | Tipus | Ordenació | Atributs | Nul | Defecte | Extra | Comentari
|
| id
| int(11) | | | no | auto_increment | | identificador únic de la tipologia de contingut
|
| name
| varchar(20) | utf8_unicode_ci | | no | | | nom de la tipologia
|
| comments
| varchar(100) | utf8_unicode_ci | | No | | | comentari
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
[edita] taula pool
Taula pool: S'hi guarden les "pools" creades amb la seva configuració
| Camps | Tipus | Ordenació | Atributs | Nul | Defecte | Extra | Comentari
|
| id
| int(11) | | | no | auto_increment | | identificador
|
| name
| varchar(255) | latin1_swedish_ci | | no | | | nom de la pool
|
| created_by
| int(11) | | | No | | | autor de la pool
|
| date_creation
| date | | | No | | | data de creació
|
| last_change
| date | | | No | | | darrer canvi EP! concretar
|
| config_pool_kind
| int(11) | | | No | | | amb un número determina el tipus de pool
|
| public
| int(11) | | | No | | | Si és visible o no
|
| size
| varchar(100) | latin1_swedish_ci | | No | | | Mida en píxels (valors absoluts) de l'espai de composició. Del tipus 800x600 que s'haurà de recuperar fent explode
|
|
| | | | | | |
|
|
| | | | | | |
|
[edita] taula stats_events
Taula stats_events: Estadístiques del que passa per poder extreure'n l'historial o reproduïr la sessió.
| Camps | Tipus | Ordenació | Atributs | Nul | Defecte | Extra | Comentari
|
| id
| int(11) | | | no | auto_increment | | identificador únic de l'event
|
| date
| date | | | no | | | pendent escriure info d'aquest camp; què és? perquè es codifica així?
|
| pool_id
| int(11) | | | no | | | pendent escriure info d'aquest camp; què és? perquè es codifica així?
|
| content_id
| int(11) | | | no | | | pendent escriure info d'aquest camp; què és? perquè es codifica així?
|
| event_kind
| int(11) | | | no | | | pendent escriure info d'aquest camp; què és? perquè es codifica així?
|
| event_data
| varchar(255) | latin1_general_cs | | No | | | pendent escriure info d'aquest camp; què és? perquè es codifica així?
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
[edita] taula users
Taula users: Informació sobre els usuaris connectats
| Camps | Tipus | Ordenació | Atributs | Nul | Defecte | Extra | Comentari
|
| id
| int(11) | latin1_general_cs | | no | auto_increment | | identificador únic
|
| username
| varchar(255) | | | no | | | nom usuari
|
| comment
| mediumtext | latin1_general_cs | | No | | | comentari
|
| passw
| varchar(255) | latin1_general_cs | | No | | | contrassenya
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
Aquesta variant de la proposta que estem començant a desenvolupar introdueix un nou nivell entre la pool i content: la box (o snip).
|
Retalls
Enlloc de dir-li box a les "caixes" que tenen el contingut em semblaria maco dir-los snips (retalls) per la referència al collage. --David 11:27, 12 nov 2007 (CET)
|
O sigui: tenim una pool oberta, que és un canal de Wikipool. Hi ha vàries caixes (box) o "peces de retall" (snip) que podem moure per la composició (tècnicament són "div"). Aquestes caixes tenen un contingut (content) que poden ser imatges o text.
Per tant:
- Una pool té vàries box
- Una box va canviant el content
L'estructura és la següent:
Les pool s'identifiquen i registren en una taula específica de la base de dades. També les box i el content.
Hi ha 2 taules més relacionals:
- box2pool: diu a quina pool està cada box
- content2box_current: diu quin contingut (content) té cada box
Hi ha dues taules més que ens serveix com a historial dels continguts de les box:
- content2box_old: diu quin content ha tingut cada box i en quin moment
- pos2box_old: diu quines posicions ha tingut cada box i en quin moment
La distinció entre caixes (box) i contingut (content) crec que és molt coherent i obra vàries possiblitats. Entre elles la de comptar d'una manera fàcil amb un historial. També podria facilitar la possible restauració de continguts (undo).
Pel que fa a l'historial aquesta aproximació podria ser alternativa però també es pot veure com a complementaria de l'enfocament stat events.
[edita] taules base de dades
Només les taules afectades per la proposta:
- contents
- snips
- pool
- taules relacionals:
- taules relacionals d'historial:
- taules sobre usuaris:
A continuació es mostren les taules. També es poden veure com a arxiu SQL a: WzCzW/Disseny tècnic/db-alt1-SQL.
[edita] taula contents
Taula contents: Guarda els continguts que van dins de les "caixes" (box). Poden ser imatges o text.
| Camps | Tipus | Ordenació | Atributs | Nul | Defecte | Extra | Comentari
|
| id
| int(11) | | | no | | auto_increment | identificador únic
|
| coordenates
| varchar(255) | latin1_swedish_ci | | no | | | coordenades; son el top i el left del contingut (quan és imatge) respecte la box. Es guarden tipus 120x400 i s'han de recuperar fent servir explode
|
| size
| varchar(255) | latin1_swedish_ci | | no | | | mida; són el width i el lenght del contingut (quan és imatge) en píxels. Es guarden tipus 120x400 i s'han de recuperar fent servir explode
|
| data
| mediumtext | utf8_unicode_ci | | No | | | URL del recurs quan són imatges
|
| css
| varchar(255) | latin1_swedish_ci | | No | | | color, tamany, etc.. quan el contingut és text
|
| content_type
| int(11) | | | | | | tipus de contingut (imatge, text, ...), és un número que el relaciona amb la taula "contents_type"
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
[edita] taula snips
Taula contents: Són les caixes que contenen el contingut (content)
| Camps | Tipus | Ordenació | Atributs | Nul | Defecte | Extra | Comentari
|
| id
| int(11) | | | no | | auto_increment | identificador únic
|
| coordenates
| varchar(255) | latin1_swedish_ci | | no | | | coordenades; son el top i el left de cada div respecte la pool. Es guarden tipus 120x400 i s'han de recuperar fent servir explode
|
| data
| mediumtext | utf8_unicode_ci | | No | | | URL del recurs quan són imatges
|
| css
| varchar(255) | utf8_unicode_ci | | No | | | color de fons, marge, contorn, angles, ... del div
|
| status
| | | | | | | locked/editable; per si cal bloquejar una caixa mentre algú l'està editant
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
[edita] taula contents2snips
Taula contents2pool: Relaciona boxes i contents. Diu a quin contingut (content) està cada caixa (box).
| Camps | Tipus | Ordenació | Atributs | Nul | Defecte | Extra | Comentari
|
| content_id
| int(11) | | | no | | | identificador únic d'un contingut de la taula "contents"
|
| box_id
| int(11) | | | no | | | identificador únic d'un contingut de la taula "box"
|
| age
| timestamp (14) | | | no null | | | data en que s'ha fet la relació. Això es podria consultar en el mode Reciclatge per saber quina és la snip que té un contingut més vell
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
[edita] taula contents2snips_old
Taula contents2pool: Guarda registre de la relació entre boxes i contents. Diu a quin contingut (content) ha estat cada caixa (box).
| Camps | Tipus | Ordenació | Atributs | Nul | Defecte | Extra | Comentari
|
| content_id
| int(11) | | | no | | | identificador únic d'un contingut de la taula "contents"
|
| box_id
| int(11) | | | no | | | identificador únic d'un contingut de la taula "box"
|
| from
| timestamp (14) | | | no null | | | timestamp des de quan hi ha estat
|
| until
| timestamp (14) | | | no null | | | timestamp quan ha deixat d'estar-hi
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
[edita] taula pos2snips_old
Taula contents2pool: Guarda registre les posicions que ha tingut una caixa (box).
| Camps | Tipus | Ordenació | Atributs | Nul | Defecte | Extra | Comentari
|
| snip_id
| int(11) | | | no | | | identificador únic d'un contingut de la taula "box"
|
| coordenates
| varchar(255) | | | no | | | coordenades; son el top i el left de cada div respecte la pool. Es guarden tipus 120x400 i s'han de recuperar fent servir explode
|
| from
| timestamp (14) | | | no null | | | timestamp des de quan hi ha estat
|
| until
| timestamp (14) | | | no null | | | timestamp quan ha deixat d'estar-hi
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
[edita] taula snips2pool
Taula contents2pool: Relaciona boxes i pools. Diu a quines caixes (box) hi ha a cada canal (pool).
| Camps | Tipus | Ordenació | Atributs | Nul | Defecte | Extra | Comentari
|
| pool_id
| int(11) | | | no | | | identificador únic d'un contingut de la taula "pool"
|
| snip_id
| int(11) | | | no | | | identificador únic d'un contingut de la taula "box"
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
[edita] taula contents_type
Taula contents_type: Guarda informació dels tipus de continguts
| Camps | Tipus | Ordenació | Atributs | Nul | Defecte | Extra | Comentari
|
| id
| int(11) unsigned | | | no | auto_increment | | identificador únic de la tipologia de contingut
|
| name
| varchar(20) | utf8_unicode_ci | | no | | | nom de la tipologia que podria ser: img, imgsrc, txt, video, videosrc...
|
| comments
| varchar(100) | utf8_unicode_ci | | No | | | comentari
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
[edita] taula pool

Taula pool: S'hi guarden les "pools" creades amb la seva configuració
| Camps | Tipus | Ordenació | Atributs | Nul | Defecte | Extra | Comentari
|
| id
| int(11) unsigned | | | no null | auto_increment | | identificador
|
| name
| varchar(255) | utf-8 | | no null | | | nom de la pool
|
| created_by
| int(11) unsigned | | | No null | | | autor de la pool, referencia numèrica en una llista (taula user)
|
| date_creation
| timestamp(14) | | | No null | | | data de creació en format AAAMMDDHHMMSS. Al ser timestamp es crea sola en registrar per primer cop
|
| last_change
| timestamp(14) | | | null | | | darrer canvi en format AAAMMDDHHMMSS. Al ser timestamp s'actualitza sola cada cop que hi accedim''
|
| date_start
| timestamp(14) | | | null | | | data-horari d'inici de la sessió-wikipool en format AAAMMDDHHMMSS.''
|
| date_stop
| timestamp(14) | | | null | | | data-horari de finalització de la sessió-wikipool en format AAAMMDDHHMMSS.''
|
| group_permissions
| varchar(255) | utf-8 | | No null | | | tipus d'usuari i permís separat per espai, tipus d'usuari d'altre tipus d'usuari separat per comes. * edit/view, ruser edit/view. Exemple: * view, ruser edit vol dir que tots els usuaris (*) poden veure i només els registrats (ruser) poden editar. Aquests són els dos tipus d'usuari per defecte (*, ruser) però es podrien crear més grups.
|
| publicview
| bool | | | No null | | | Valor booleà 0/1: 0 és false (pool no és públicament visible en portada) i 1 és true (la pool és visible en portada)
|
| size
| varchar(100) | utf-8 | | No null | | | Mida en píxels (valors absoluts) de l'espai de composició. Del tipus 800x600 que s'haurà de recuperar fent explode
|
[edita] taula users
Taula users: Informació sobre els usuaris connectats
| Camps | Tipus | Ordenació | Atributs | Nul | Defecte | Extra | Comentari
|
| id
| int(11) unsigned | latin1_general_cs | | not null | auto_increment | | identificador únic
|
| username
| varchar(255) | utf8_unicode_ci | | not null | | | nom usuari
|
| comment
| mediumtext | utf8_unicode_ci | | Not null | | | comentari
|
| passw
| varchar(255) | utf8_unicode_ci | | Not null | | | contrassenya
|
| usergroup
| int(11) unsigned | | | NULL | | | grup al que pertany usuari, correspon a id taula Usergroups
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
[edita] taula usergroups
Taula usergroups: Es registren els grups d'usuaris que serveixen per atorgar permissos a la taula pool
| Camps | Tipus | Ordenació | Atributs | Nul | Defecte | Extra | Comentari
|
| group_id
| int(11) unsigned | | | no null | auto_increment | | identificador
|
| groupnave
| varchar(255) | utf-8 | | no null | | | nom del grup
|
| comment
| mediumtext | utf8_unicode_ci | | null | | | per si cal posar un text de comentari que pugui ser utilitzat com a info
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
[edita] taula stats_events
Taula stats_events: Estadístiques del que passa per poder extreure'n l'historial o reproduïr la sessió.
| Camps | Tipus | Ordenació | Atributs | Nul | Defecte | Extra | Comentari
|
| id
| int(11) | | | no | auto_increment | | identificador únic de l'event
|
| date
| date | | | no | | | pendent escriure info d'aquest camp; què és? perquè es codifica així?
|
| pool_id
| int(11) | | | no | | | pendent escriure info d'aquest camp; què és? perquè es codifica així?
|
| content_id
| int(11) | | | no | | | pendent escriure info d'aquest camp; què és? perquè es codifica així?
|
| event_kind
| int(11) | | | no | | | pendent escriure info d'aquest camp; què és? perquè es codifica així?
|
| event_data
| varchar(255) | latin1_general_cs | | No | | | pendent escriure info d'aquest camp; què és? perquè es codifica així?
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
|
| | | | | | |
|
[edita] referències
Referents a tenir en compte en el disseny de la base de dades:
< PLANTER <Disseny interacció < Disseny tècnic < Variant alt-1 base dades
de sistemes i projectes de creació col·lectiva en xarxa.
- m.Lloc on hi ha les plantes nades, on es crien les plantes petites, destinades a ésser trasplantades; les mateixes plantes. (Diccionari IEC).
Disseny tècnic: Base de dades, codi SQL (variant mix-alt-0,5)
Codi SQL de la proposta mix-alt-0,5 de base de dades per Wikipool 0.1.0.
Aquesta proposta és un pas enrera respecte a la proposta proposta alt-1. És un mix d'aquesta i la versió inicial on no es separa continent (retalls o snips) de contingut (content) sinó que els nous camps que tenia snip es posen a la mateixa taula contents.
Degut a això la taula contents2snips_old no pot ser només relacional sinó que ha de guardar informació dels continguts, siguin text, imatge, imatge referenciada, etc... i de les seves propietats. Les altres parts no canvien o canvien poc.
Aquesta versió és compatible amb el codi inicial del desenvolupament de les pools de Wikipool 0.1.0.
-- MySQL
--
-- Host: localhost Database: wikipool
-- ------------------------------------------------------
-- Server version
-- Wikipool database version mixAlt0,5 --- 2007_11_28
-- NOTA ADAPTACIÓ: en principi aquesta base de dades és compatible amb la de 8-10-2007 amb només uns pocs canvis de nom en 3 camps en les taules 'contents' i 'pool'.
-- -------------------------------------------------------
-- Table structure for table `contents`
-- Es refereix tant als 'retalls' com al seu 'contingut' que pot ser text o imatge
-- NOTA ADAPTACIÓ: Respecte a la versió inicial de la bd (8-10-2007) hi ha camps nous però dels camps que ja hi havia només hi ha 2 camps que per claredat han canviat de nom. 'data' ara és 'img_data' i 'css' ara és 'txt_css'.
DROP TABLE IF EXISTS `contents`;
CREATE TABLE `contents` (
`id` int(11) unsigned NOT NULL auto_increment,
`coordenates` varchar(255) NOT NULL COMMENT 'coordenades; son el top i el left de cada div respecte la pool. Es guarden tipus 120x400 i s han de recuperar fent servir explode',
`content_coordenates` varchar(255) NOT NULL COMMENT 'coordenades; son el top i el left del contingut (quan és imatge) respecte la div. Es guarden tipus 120x400 i s han de recuperar fent servir explode. Per defecte son (0,0)',
`content_type` int(11) unsigned NOT NULL,
`txt_css` varchar(255) NOT NULL COMMENT 'color, tamany, etc.. quan el contingut és text',
`img_data` mediumtext character set utf8 collate utf8_unicode_ci NOT NULL COMMENT 'URL del recurs (src) quan són imatges referenciades',
`img_size` varchar(255) NOT NULL COMMENT 'mida. són el width i el lenght del contingut (quan és imatge) en píxels. Es guarden tipus 120x400 i s han de recuperar fent servir explode',
`snip_css` varchar(255) NOT NULL COMMENT 'color de fons. marge. contorn. angles. ... del div per defecte és transparent',
`status` bool NOT NULL COMMENT 'locked-editable. per si cal bloquejar una caixa mentre algú l està editant',
`age` timestamp (14) NOT NULL COMMENT 'última actualització de contingut per aquest retall. Això es podria consultar en el mode Reciclatge per saber quina és la snip que té un contingut més vell',
KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
--
-- Table structure for table `contents2pool`
-- Historial
DROP TABLE IF EXISTS `contents2pool`;
CREATE TABLE `contents2pool` (
`content_id` int(11) NOT NULL,
`pool_id` int(11) NOT NULL,
KEY `pool_id` (`pool_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Table structure for table `contents2snips_old`
-- Historial
DROP TABLE IF EXISTS `contents2snips_old`;
CREATE TABLE `contents2snips_old` (
`content_id` int(11) unsigned NOT NULL COMMENT 'ens referim al contenidor però fem ref a la taula contents',
`content_type` int(11) unsigned NOT NULL,
`txt_css` varchar(255) NOT NULL COMMENT 'color, tamany, etc.. quan el contingut és text',
`img_data` mediumtext character set utf8 collate utf8_unicode_ci NOT NULL COMMENT 'URL del recurs (src) quan són imatges referenciades',
`img_size` varchar(255) NOT NULL COMMENT 'mida. són el width i el lenght del contingut (quan és imatge) en píxels. Es guarden tipus 120x400 i s han de recuperar fent servir explode',
`content_coordenates` varchar(255) NOT NULL COMMENT 'coordenades; son el top i el left del contingut (quan és imatge) respecte la div. Es guarden tipus 120x400 i s han de recuperar fent servir explode. Per defecte son (0,0)',
`from` timestamp (14) NOT NULL,
`until` timestamp (14) NOT NULL,
KEY `content_id` (`content_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Table structure for table `pos2snips_old`
-- Historial
DROP TABLE IF EXISTS `pos2snips_old`;
CREATE TABLE `pos2snips_old` (
`content_id` int(11) unsigned NOT NULL COMMENT 'ens referim al contenidor però fem ref a la taula contents',
`coordenates` varchar(255) NOT NULL,
`from` timestamp (14) NOT NULL,
`until` timestamp (14) NOT NULL,
KEY `content_id` (`content_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Table structure for table `snips2pool`
--
DROP TABLE IF EXISTS `snips2pool`;
CREATE TABLE `snips2pool` (
`content_id` int(11) unsigned NOT NULL,
`pool_id` int(11) unsigned NOT NULL,
KEY `pool_id` (`pool_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Table structure for table `contents_type`
--
DROP TABLE IF EXISTS `contents_type`;
CREATE TABLE `contents_type` (
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(20) collate utf8_unicode_ci NOT NULL,
`comments` varchar(100) collate utf8_unicode_ci NOT NULL,
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Table structure for table `pool`
--
-- NOTA ADAPTACIÓ: Respecte a la versió inicial de la bd (8-10-2007) hi ha molts camps nous. Però les novetats afecten poc la funcionalitat. Per adaptar-se només cal canviar el nom del camp 'public' que ara és 'publicview' i tenir en compte que el camp 'config_pool_kind' (que no es feia servir) ja no existeix. Les funcions previstes pel 'config_pool_kind' s han repartit en diferents camps.
DROP TABLE IF EXISTS `pool`;
CREATE TABLE `pool` (
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`created_by` int(11) unsigned NOT NULL,
`last_change` timestamp (14) NOT NULL,
`date_creation` timestamp (14) NOT NULL,
`date_start` timestamp (14) NOT NULL COMMENT 'data-hora inici sessió, per defecte seria la mateixa que la data de creació però pot ser diferent si el que es vol és fer una convocatòria de sessió',
`date_stop` timestamp (14) NOT NULL COMMENT 'data-hora de tancament de la pool per si es vol fer una sessió que duri un temps determinat i es tanqui automaticament',
`group_permissions` varchar(255) NOT NULL COMMENT 'permissos per veure o editar segons tipus de usuari',
`publicview` bool NOT NULL COMMENT 'si la sessió de wikipool serà o no visible en portada',
`status` bool NOT NULL COMMENT 'si la sessio esta oberta/editable (1) o tancada (0). En realitat ho podem saber per date_stop i també es pot regular per group_permisions pero aquest es un camp boolea facil i rapid de consultar, encara que sigui redundant',
`size` varchar(100) NOT NULL COMMENT 'mida de la pool en píxels',
`css` text NOT NULL,
`maxsnips` int(4) NOT NULL COMMENT 'nombre maxim de retalls, negatiu es que no hi ha límit',
`snipsmode` bool NOT NULL COMMENT 'Pot ser Mode reciclatge (0) i Mode Acumulació (1). Reciclatge:cada contingut incorporat substitueix el contingut més vell. Acumulació: Cada contingut incorporat crea un nou retall (snip)',
`text` bool Not null COMMENT 'Valor booleà que controla si es pot incorporar-editar text (1) o no (0)',
`imgsrc` bool Not null COMMENT 'Valor booleà que controla si es poden incorporar imatges per referència profunda (1) o no (0)',
`upload` bool not null COMMENT 'Valor booleà que controla si es poden carregar fitxers (1) o no (0)',
`uploadfiles` varchar(100) COMMENT 'En cas que upload sigui igual a 1 aquest camp serveix per definir quins formats de fitxer es poden pujar. Els formats es separen per comes i s han d extreure per explode. Exemple: png, jpeg, jpg, svg, gif',
`uploadmaxsize` int(4) unsigned COMMENT 'En cas que upload sigui igual a 1 aquest camp serveix per definir el pes màxim de memòria que poden tenir els fitxers pujats. En principi ho posem en Kb, per això deixem un enter de 4 decimals',
`startmode` varchar(100) COMMENT 'Només es fa servir el primer cop que s obra. Pot ser BLANK, CASUAL o RECYCLED segons si volem que comenci sense continguts, amb una tria aleatoria de continguts a partir de una paraula o a partir d un determinat punt del historial de una altra Pool. Si escollim CASUAL va combinat amb el camp Casual_search. Es guarda en BD per les pools que es creen però no s activen al moment. També com a metadada de la pool',
`casual_search` varchar(255) COMMENT 'Expressió introduida per el usuari en cas de haver escollit CASUAL com a Startmode',
KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
--
-- Table structure for table `stats_events`
--
DROP TABLE IF EXISTS `stats_events`;
CREATE TABLE `stats_events` (
`id` int(11) NOT NULL auto_increment,
`date` date NOT NULL,
`pool_id` int(11) NOT NULL,
`content_id` int(11) NOT NULL,
`content_type` int(11) NOT NULL,
`event_kind` int(11) NOT NULL COMMENT 'com ara: moviment, resize, etc...',
`event_data` varchar(255) collate latin1_general_cs NOT NULL,
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Table structure for table `users`
--
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` int(11) unsigned NOT NULL auto_increment,
`username` varchar(255) collate utf8_unicode_ci NOT NULL,
`comment` mediumtext collate utf8_unicode_ci NOT NULL,
`passw` varchar(255) collate utf8_unicode_ci NOT NULL,
`usergroup` int(11) unsigned NULL COMMENT 'grup al que pertany usuari, correspon a id taula Usergroups',
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
LOCK TABLES `users` WRITE;
/*!40000 ALTER TABLE `users` DISABLE KEYS */;
INSERT INTO `users` (username,usergroup,comment) VALUES ('anonymous',1,'anonymous, unregistred user');
/*!40000 ALTER TABLE `users` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `usergroups`
--
DROP TABLE IF EXISTS `usergroups`;
CREATE TABLE `usergroups` (
`group_id` int(11) unsigned NOT NULL auto_increment,
`groupname` varchar(255) collate utf8_unicode_ci NOT NULL,
`comment` mediumtext collate utf8_unicode_ci NULL,
KEY `group_id` (`group_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- Dumping data for table `usergroups`
-- Default groups
LOCK TABLES `usergroups` WRITE;
/*!40000 ALTER TABLE `usergroups` DISABLE KEYS */;
INSERT INTO `usergroups` (groupname, comment) VALUES ('*','any user'),('ruser','registred user'), ('admin','administrator');
/*!40000 ALTER TABLE `usergroups` ENABLE KEYS */;
UNLOCK TABLES;
No hi ha contingut, cal definir el paràmetre ps5
|
|