08 giugno 2007 alle 22:22:28 Buona sera, dopo esser riuscito a far si che gli utenti con "role Img" potessero uploadare immagini, mi sono però accorto (creandomi un account ad hoc) che utenti con tale ruolo possono benissimo cancellare tutte le immagini presenti sul portale. Ovviamente parlo di eliminazione accidentale, ma è pur sempre un rischio che non vorrei correre visto che ho più di 200 immagini personali. Per questo vorrei chiedervi se esiste/conoscete un modo per far si che ogni utente possa eliminare solo le foto inserite da egli stesso, oppure -se troppo complicato- solo tutte le foto eccetto quelle pubblcatr dall'amministratore. A mio parere sarebbe annche una buoa idea per la versione 2.1. Attendo vostre risposte. Grazie.
--------------- Ci sono 10 tipi di persone al mondo: quelli che conoscono il linguaggio binario e quelli che non lo conoscono
The-BiT Esperto
344 Discussioni
09 giugno 2007 alle 11:02:10 Modificato il 09 giugno 2007 alle 19:28:36up!
--------------- Ci sono 10 tipi di persone al mondo: quelli che conoscono il linguaggio binario e quelli che non lo conoscono
The-BiT Esperto
344 Discussioni
09 giugno 2007 alle 19:29:48 up
--------------- Ci sono 10 tipi di persone al mondo: quelli che conoscono il linguaggio binario e quelli che non lo conoscono
09 giugno 2007 alle 22:01:18 Sarebbe semplice se, nella tabella IMAGES vi fosse anche il campo autore, in quanto basterebbe discriminare con una stringa del tipo: If sPseudo = oRs("iAuthor") OR IsAuthorizedBin(ROLE_ADMIN) THEN ........> codice asp per la cancellazione Else CreateTable "Author", "", GetTranslation("LANG_MUST_AUTHOR_PSEUDO"), "" End If Quindi l'unica soluzione è, riscrivere le pagine IMAGES-INC.ASP e ADMIN_IMAGES-INC.ASP, inserendo dove serve la richiesta dell'autore, modificare il db main - tabella images aggiungendo il campo iAuthor, in modo da poter eseguire l'IF e la funzione.
--------------- A lavare la testa ai somari, ci si rimette l'acqua e il sapone!
10 giugno 2007 alle 03:00:04 Io ti ringrazio, Dj, per la cotinua disponibilità, ma devo ammettere che non ho le idee ben chiare.
l'unica soluzione è, riscrivere le pagine IMAGES-INC.ASP e ADMIN_IMAGES-INC.ASP
nel senso che dvorebbero essere riscritte di sana pianta? Perchè se è così...non saprei da dve iniziare. Modificare il db credo di riuscirci, però - ecco- vorrei avere delle informazioni più precise su come procedere, sempre se ritieni tutto ciò fattibile. Grazie, A presto.
--------------- Ci sono 10 tipi di persone al mondo: quelli che conoscono il linguaggio binario e quelli che non lo conoscono
piosky_to2003 Esperto
2291 Discussioni
10 giugno 2007 alle 11:32:45 Modificato il 10 giugno 2007 alle 11:36:19no non devi riscriverle di sana pianta , ma modificare alcune procedure aggiungendo solo il campo aggiuntivo
file:admin_images-inc.asp sicuramente devi aggiungere il campo iauthor alle la procedura prendedo cme esempio uno dei campi presenti in ogni procedura (come stitle)
Sub EditImage(iID) Function ModifyImage(iID, sTitle, sDate, sDescription, sSourceSmall, sSourceNormal, iHits, iCategory, iVersion, bValid) Function AddImage(sTitle, sDate, sDescription, sSourceSmall, sSourceNormal, iHits, iCategory, iVersion, bValid)
p.s.
Originariamente inviato daThe-BiT: Ovviamente parlo di eliminazione accidentale, ma è pur sempre un rischio che non vorrei correre visto che ho più di 200 immagini personali.
il rischio si evita non tenendo le immagini solo su Web ma anche in locale facendosi backup regolari del portale
--------------- Silvio Andrighetti Formaggini (Piosky)
10 giugno 2007 alle 12:28:10 Allora, vediamo di capirci chiaro. Nel file admin_images-inc.asp, ho modificato la riga come segue:
line 601 Function ModifyImage(iID, sTitle, sDate, sDescription, sSourceSmall, sSourceNormal, iHits, iCategory, iVersion, bValid, iAuthor)
Successivamente, ho agigunto un nuovo record nel db (mysql), nel campo images, così:
Nome iID; Tipo: int(10); Null:no Nome........................ Nome:iAuthor; Tipo: ???; Null:???;
E adesso, come dovrei procedere?
--------------- Ci sono 10 tipi di persone al mondo: quelli che conoscono il linguaggio binario e quelli che non lo conoscono
piosky_to2003 Esperto
2291 Discussioni
10 giugno 2007 alle 14:31:37 Modificato il 10 giugno 2007 alle 15:02:17devi aggiungere il campo nuovo nella dichiarazione della funzione, quaado occore dichiarare la nuova variabile ma anche all'interno del codice duplicare tutte le istruzione che contengono iTitle ( o stitle in alcuni casi)
esempio sempre nel modifyimage trovi Function ModifyImage(iID, sTitle, sDate, sDescription, sSourceSmall, sSourceNormal, iHits, iCategory, iVersion, bValid) ... ... ... rSQL = "UPDATE images SET iTitle='" & SQLEncrypt(sTitle) & "', iDate='" & sDate & "',
insomma all'interno di tutte procedure cercati title e seguendo il codice fai la stessa cosa sostituendo i/sTitle con i/sAuthor
--------------- Silvio Andrighetti Formaggini (Piosky)
10 giugno 2007 alle 18:39:21 Il campo per MySql deve avere le seguenti caratteristiche:
NOME: iAuthor TIPO: varchar(50) default NULL.
Le modifiche da effettuare nel file admin_imahes-inc.asp sono molteplici, te le riassumo:
Sub EditImage(iID) riga 277 inserire dopo sTitle, sAuthor dopo la riga 287 inserire sAuthor = oRs("iAuthor") dopo la riga 367 inserire Response.Write " <tr class=""tableline2"">" & vbCRLF Response.Write " <td>" & GetTranslation("LANG_AUTHOR") & "</td>" & vbCRLF Response.Write " <td><input name=""iAuthor"" value=""" & Server.HTMLEncode(sAuthor) & """ maxlength=""50"" size=""50"" class=""cell""></td>" & vbCRLF Response.Write " </tr>" & vbCRLF Ricordarsi di modificare tutte le occorrenze tablelineX nei tag <TR...> per il cambio di colore delle righe. SubConfirmDeleteImage(iID) dopo la riga 506 inserire Response.Write " <tr class=""tableline2"">" & vbCRLF Response.Write " <td>" & GetTranslation("LANG_AUTHOR") & "</td>" & vbCRLF Response.Write " <td>" & Server.HTMLEncode(oRs("iAuthor")) & "</td>" & vbCRLF Response.Write " </tr>" & vbCRLF vale lo stesso discorso di prima il tag <TR... va modificato. Function AddImage(sTitle, sAuthor.....) aggiungere sAuthor nella dichiarazione delle variabili. aggiungere nella query sql: rSQL = "INSERT INTO images(iTitle, iAuthor....)VALUES('" & SQLEncrypt(sTitle) & "', '" & SQLEncrypt(sAuthor) & "',....) Function ModifyImage(sTitle, sAuthor...) rSQL = "UPDATE images SET iTitle='" & SQLEncrypt(sTitle) & "', iAuthor='" & SQLEncrypt(sAuthor) & "',..... Sub DoAdminImages() alla riga 721 aggiungere If AddImage(Request.Form("iTitle"), Request.Form("iAuthor").... alla riga 738 aggiungere If ModifyImage(Request.Form("iID"), Request.Form("iTitle"), Request.Form("iAuthor"),.... fatte queste modifiche puoi poi procedere ad inserire il codice che ti ho suggerito nel post precedente.
--------------- A lavare la testa ai somari, ci si rimette l'acqua e il sapone!
10 giugno 2007 alle 19:43:58 Ho modificato la pagina admin_images-inc.as come hai detto. Ho aggiunto il campo iAuthor al db. Sono rimasto perplesso su due punti:
Ricordarsi di modificare tutte le occorrenze tablelineX nei tag <TR...> per il cambio di colore delle righe.
Cos'è che devo modificare? Per modifiche al colore intendi quelle al css?
E poi:
fatte queste modifiche puoi poi procedere ad inserire il codice che ti ho suggerito nel post precedent
Il codice che dovrei inserire è
If sPseudo = oRs("iAuthor") OR IsAuthorizedBin(ROLE_ADMIN) THEN ........> codice asp per la cancellazione Else CreateTable "Author", "", GetTranslation("LANG_MUST_AUTHOR_PSEUDO"), "" End If
Non ho ben capito diveo inserire questo codice. Presumo nella pagina images-inc.asp. O sbaglio? Ti ringrazio per l'aiuto che m'hai prestato sin ad ora.
--------------- Ci sono 10 tipi di persone al mondo: quelli che conoscono il linguaggio binario e quelli che non lo conoscono