* * * *
36 Visitatori, 0 Utenti

Autore Topic: progetto web forum lazaruspascal.it  (Letto 98012 volte)

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2150
  • Karma: +8/-1
progetto web forum lazaruspascal.it
« il: Gennaio 16, 2013, 04:30:38 pm »
Edit (10/03/2013):
Visto che il thread s'è allungato, sotto consiglio di xinyiman metto i riferimenti per provare i sorgenti.


Sorgenti
svn checkout http://svn.code.sf.net/p/lazarusiug/liug/trunk/pspage_module

oppure:

svn checkout https://svn.code.sf.net/p/lazarusiug/liug/trunk/pspage_module


segue post originario ->
____________________________________________________________

3D aperto, ricomincio da qua:

usti, scusa.
<body>
<p:button caption="ciao" id="btn1" onclick="btn1click();"/>
</body>


queste si potrebbero implementare infatti come unit da compilare staticamente o in una DLL in modo da scrivere:
Codice: [Seleziona]
... html...

<%
   interface
   uses uSystemMacro;
%>

... html...

<%
   uSystemMacro.RenderButton('btn1', 'ciao', ['onclick="btn1click()']);
%>


e non solo, la DLL è compilata e magari fa parte del pacchetto, però possiamo anche dare modo di usare DLL fatte con lo script in modo che l'utente finale (che è un programmatore) possa farne di sue:

Codice: [Seleziona]
... html...

<%
   interface
   uses uSystemMacro,         // linkato staticamente nel modulo apache finale
        uSpecialMacroInDll external '.../uSpecialMacroInDll.so';       // dll a caricamento dinamico
   {$I uMyCustomMacro.pas } // qua ci sono le macro da usare tramite interprete
   
%>

... html...

<%
   uSystemMacro.RenderButton('btn1', 'ciao', ['onclick="btn1click()']);

   uSpecialMacroInDll.RenderButton('btn1', 'ciao', ['onclick="btn1click()']);

   RenderButton('btn1', 'ciao', ['onclick="btn1click()']);     // questa è in uMyCustomMacro.pas

   uSystemMacro.RenderForm('form1', 'uForm1.lfm');
%>


« Ultima modifica: Marzo 10, 2013, 10:56:23 am da nomorelogic »
Imagination is more important than knowledge (A.Einstein)

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2005
  • Karma: +5/-0
Re:progetto web forum lazaruspascal.it
« Risposta #1 il: Gennaio 16, 2013, 05:08:10 pm »
Mamma mia, stai incasinando la grammatica non poco ;)
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2150
  • Karma: +8/-1
Re:progetto web forum lazaruspascal.it
« Risposta #2 il: Gennaio 16, 2013, 05:47:27 pm »
dici?
beh sono possibilità mica bisogna per forza utilizzarle tutte insieme :)
e poi mi pare che sia ancora sintassi standard(issima) pascal
Imagination is more important than knowledge (A.Einstein)

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 2707
  • Karma: +9/-0
Re:progetto web forum lazaruspascal.it
« Risposta #3 il: Gennaio 16, 2013, 08:18:07 pm »
Topic messo in evidenza
Ieri è passato, domani è futuro, oggi è un dono...

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2005
  • Karma: +5/-0
Re:progetto web forum lazaruspascal.it
« Risposta #4 il: Gennaio 16, 2013, 09:21:08 pm »
Io direi di tenere la gammatica easy.
quindi <% %> pascal "base".
Mettere nei tag quelli specifici, magari senza inventare nulla di nuovo e prendere dal mondo Java e vedere cosa c'è.
Questo avrebbe un vantaggio che potrebbe rivelarsi vincente per quanto rigurda l'usabilità (nel senso che viene usato). Molti programmatori jsp potrebbero vedere la cosa "famigliare" e provare ad usarlo ;)
No? Se poi la cosa è anche più veloce e rapida delle JSP e meno esosa di risorse ...
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2005
  • Karma: +5/-0
Re:progetto web forum lazaruspascal.it
« Risposta #5 il: Gennaio 16, 2013, 09:22:16 pm »
Magari fare una cosa ancora più semplice per la versione beta ... solo i tag, niente codice custom ;)
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2150
  • Karma: +8/-1
Re:progetto web forum lazaruspascal.it
« Risposta #6 il: Gennaio 17, 2013, 12:16:59 am »
tenere una grammatica facile infatti può essere vincente per far avvicinare gente.
però limitarsi a fare quello che fanno altri linguaggi senza le peculiarità del pascal mi sembra uno spreco :)
direi che si può iniziare con la versione facile (non solo per la beta ma per le cose di uso più comune) riservandosi però di usare delle caratteristiche più avanzate (usando grammatiche particolari).

ad esempio certe "uses" necessarie potrebbero essere inserite automaticamente da un pre-compilatore. del resto se l'interprete ne ha bisogno...
Imagination is more important than knowledge (A.Einstein)

aesis

  • Newbie
  • *
  • Post: 23
  • Karma: +0/-0
Re:progetto web forum lazaruspascal.it
« Risposta #7 il: Gennaio 17, 2013, 09:22:43 am »
Sono d'accordo di usare una sintassi semplice..quello che vogliamo è avere un sistema snello, leggibile PASCAL like dove qualsiasi persona può facilmente metterlo in pratica fin da subito. Un'altra cosa comunque da tenere in mente è lo sviluppo di futuri PLUGIN quindi secondo noi avere fin da subito una struttura facilmente integrabile.

La buttiamo lì

creare una pagina tipo prodotti.html.pas

<h1>Prodotti</h1>
 
<table>
  <tr>
    <th>Codice</th>
    <th>Descrizione</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>
 
<%-begin For i := 0 to prodotti.count do %>
  <tr>
    <td><% prodotti.codice%></td>
    <td><% prodotti.descrizione%></td>
    <td><% link_to 'Visualizza', RenderForm('visualizza.html.pas prodotti.codice') %></td>
    <td><% link_to 'Modifica',    RenderForm('modifica.html.pas   prodotti.codice') %></td>
    <td><% link_to 'Cancella',   RenderForm('conferma.html.pas  prodotti.codice') %></td>
  </tr>
<%-end; %>
</table>
 
<br />
 
<%-begin link_to 'Inserisci Prodotto', RenderForm('nuovo.html.pas')%><%-end;%>


Chiaramente dopo bisognerebbe gestire il routing delle pagina.
Poi potremmo avere un css comune per lo stile ed un template tipo

application.html.pas

<html>
... QUI FOGLIO DI STILE SIA PER DESKTOP/MOBILE/ETC
    USO ANCHE DI JS PER PARTICOLARI FUNZIONI TIPO JQUERY ED ALTRI LINGUAGGI
 <body>
      <%-begin renderapp() -end%>   <--- QUA VANNO POI INGLOBATE LE PAGINE tipo prodotti.html.pas
 </body>
</html>

Speriamo di esserci spiegati bene...non ci "insultate"  ;D  ;D  :D

Marco e Samuele





Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2005
  • Karma: +5/-0
Re:progetto web forum lazaruspascal.it
« Risposta #8 il: Gennaio 17, 2013, 09:52:49 am »
Io provoco ;) Per stimolare la discussione :D

 
Codice: [Seleziona]
<!-- variabile precaricata dal controller di pagina, dichiarata in modo che possa essere puntata dal motore di rendering -->
<p:object name="prodotti" />

<h1>Prodotti</h1>
<table>
  <tr>
    <th>Codice</th>
    <th>Descrizione</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>
 
<psp:foreach var="prodotto" collection="${prodotti}" status="statusVar">
  <tr>
    <td><psp:out text="${prodotto.codice}"  /></td>
    <td><psp:out text="${prodotti.descrizione}" /></td>
    <td><psp:action id="actionVisualizza" method="visualizzaProdotto" param="${statusVar.index}" /></td>
    <td><psp:action id="actionModifica" method="modificaProdotto"  param="${statusVar.index}" /></td>
    <td><psp:action id="actionProdotto" method="cancellaProdotto"  param="${statusVar.index}" /></td>
  </tr>
</psp:foreach>
</table>
 
<br />
<psp:page>
  <psp:nclude resource="fogliodistileselezionato.css" type="stylesheet" />
  <!-- in alternativa -->
  <psp:nclude resourceAlias="alias-al-foglio-selezionato" />
  <psp:body>
      <psp:include page="prodotto.psp" />
  </psp:body>
</psp:page>
E jQuery è incluso in modo implicito, e dinamico alla pagina.

Codice: [Seleziona]

type
  TProdottoController = class(TPascalServerPageController)
  published
    procedure visualizzaProdotto(const parameter : TMethodControllerParameter);
    procedure modificaProdotto(const parameter : TMethodControllerParameter);
    procedure cancellaProdotto(const parameter : TMethodControllerParameter);
  end;


Butto lì. Il controller è caricato dentro un dynamic library (in modo che sia agganciabile al volo ed estendibile il framework).

Stilgar
« Ultima modifica: Gennaio 17, 2013, 09:54:44 am da Stilgar »
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

aesis

  • Newbie
  • *
  • Post: 23
  • Karma: +0/-0
Re:progetto web forum lazaruspascal.it
« Risposta #9 il: Gennaio 17, 2013, 10:28:23 am »
C'è da dire interessante....anche se separerei (spero di non aver capito male)..in un'altra pagina...

<psp:page>
  <psp:nclude resource="fogliodistileselezionato.css" type="stylesheet" />
  <!-- in alternativa -->
  <psp:nclude resourceAlias="alias-al-foglio-selezionato" />
  <psp:body>
      <psp:include page="prodotto.psp" />
  </psp:body>
</psp:page>

Ti faccio una domanda...poi come integriamo tutto con APACHE per esempio?

Siamo molto felici che da un post si è aperta questa discussione e spero quanto prima di iniziare a buttare giù qualche pezzo di codice...(apriremo un google code o github...che dite?) anche se ancora è prematuro..

Marco e Samuele.

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2005
  • Karma: +5/-0
Re:progetto web forum lazaruspascal.it
« Risposta #10 il: Gennaio 17, 2013, 10:32:38 am »
Diciamo che FreePascal ha già alcune cose per il Web, quindi non sarebbe da reinventare tutto da zero.
Ed in effetti erano 2 le pagine ;)

Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

aesis

  • Newbie
  • *
  • Post: 23
  • Karma: +0/-0
Re:progetto web forum lazaruspascal.it
« Risposta #11 il: Gennaio 17, 2013, 10:41:22 am »
Diciamo che FreePascal ha già alcune cose per il Web, quindi non sarebbe da reinventare tutto da zero.
Ed in effetti erano 2 le pagine ;)

Stilgar

Giusto! L'unica cosa che vorrei evitare è di utilizzare ExtJS per ragioni di licenza...no?....per le pagine stamattina è difficile svegliarsi!  ::)
Marco e Samuele.

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2150
  • Karma: +8/-1
Re:progetto web forum lazaruspascal.it
« Risposta #12 il: Gennaio 17, 2013, 10:54:06 am »
@Stilgar
per la beta (wow è già la seconda volta che compare il termine "beta" :D) il preprocessore ci servirà quasi sicuramente ma preferirei limitarmi all'approccio sintattico proposto da asis (grammatica da rivedere ma l'idea la vedo più praticabile, almeno all'inizio).

L'idea di riunire le funzionalità di jsp e php non sono affatto male ma se rimaniamo su sintassi tipo:
Codice: [Seleziona]
    <td><% Writeln(prodotto.codice) %></td>
    <td><% Writeln(prodotto.descrizione %></td>
    <td><% psp.Action('actionVisualizza', 'visualizzaProdotto.html.pas', ['param1=valore1', 'param3=valore2', 'param3=valore3']) %> </td>

Questo perchè, non bimentichiamolo, dobbiamo usare almeno all'inizio un interprete pascal esistente...
Che poi il ns preprocessore possa tradurre:
psp:action id="actionVisualizza" method="visualizzaProdotto" param="${statusVar.index}"
in
<% psp.Action('actionVisualizza', 'visualizzaProdotto.html.pas', ['param1=valore1', 'param3=valore2', 'param3=valore3']) %>
Si può anche fare ma il motore finale è sempre l'interprete e quindi per la beta (e siamo a 3) ragioniamo con sintassi pascal-like e senza dover obbligare nessuno a scrivere classi.


Quindi, secondo me la cosa si va configurando così:
  • edit del file: sorgente.html.pas
  • preprocessore che genera: sorgente.pas
  • interprete che compila in: sorgente.psp
  • modulo apache che, a parità di sorgente.html.pas (non ci devono essere modifiche dall'ultima compilazione),esegue: sorgente.psp

sembra complicato ma otteniamo molti vantaggi:
  • il tempo macchina del preprocessore+pseudocompilazione è spostato a prima del runtime o al massimo alla prima esecuzione delll'html.pas
  • il file .pas generato dal ns preprocessore può essere farcito di tutte quelle necessità sintattiche che possiamo eliminare nell'html che rimane semplice


Edit:
si potrebbe configurare il modulo apache per lavorare in due modi:
  • preprocessore + pseudocompilazione forzata: passi da eseguire sempre e comunque così lo sviluppatore non si accorge di nulla
  • esecuzione solo .psp: per la pubblicazione del progetto una volta che lo sviluppo ha raggiunto una versione stabile
« Ultima modifica: Gennaio 17, 2013, 10:59:33 am da nomorelogic »
Imagination is more important than knowledge (A.Einstein)

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2150
  • Karma: +8/-1
Re:progetto web forum lazaruspascal.it
« Risposta #13 il: Gennaio 17, 2013, 10:55:40 am »
Diciamo che FreePascal ha già alcune cose per il Web, quindi non sarebbe da reinventare tutto da zero.
Ed in effetti erano 2 le pagine ;)

Stilgar

Giusto! L'unica cosa che vorrei evitare è di utilizzare ExtJS per ragioni di licenza...no?....per le pagine stamattina è difficile svegliarsi!  ::)
Marco e Samuele.

però chi vuole usare ExtJs dovrà essere libero di poterlo fare :)
ma a questo penseremo in un secondo momento
Imagination is more important than knowledge (A.Einstein)

aesis

  • Newbie
  • *
  • Post: 23
  • Karma: +0/-0
Re:progetto web forum lazaruspascal.it
« Risposta #14 il: Gennaio 17, 2013, 11:35:32 am »
Citazione
però chi vuole usare ExtJs dovrà essere libero di poterlo fare :)
ma a questo penseremo in un secondo momento

Ovviamente SI sono d'accordo; scusate è vero ce ne occuperemo poi in fase di rendering di una form vera e propria
ma già impostando funzioni semplici copriamo il 90% di esigenze..secondo noi... (scusate non ci picchiate ma l'arma vincente di
Rails è proprio quella di avere pagine semplici non complesse...espandibili e customizzabili..vedi twitter scritto in ROR)

Marco e Samuele.

 

Recenti

How To

Trascinare un file nel programma da xinyiman
DB concetti fondamentali e ZeosLib da xinyiman
Recuperare codice HTML da pagina web da xinyiman
Mandare mail con Lazarus da xinyiman
Stabilire il sistema operativo da xinyiman
Esempio lista in pascal da xinyiman
File INI da xinyiman
Codice di attivazione da xinyiman
Realizzare programmi multilingua da xinyiman
Lavorare con le directory da xinyiman
Utilizzare Unità esterne da Loryea
TTreeView da xinyiman
TTreeview e Menu da xinyiman
Generare controlli RUN-TIME da xinyiman
LazReport, PDF ed immagini da xinyiman
Intercettare tasti premuti da xinyiman
Ampliare Lazarus da xinyiman
Lazarus e la crittografia da xinyiman
System Tray con Lazarus da xinyiman
UIB: Unified Interbase da Microges2000
Il file: questo sconosciuto da Microges2000
Conferma di chiusura di un applicazione da xinyiman
Liste e puntatori da Microges2000
Overload di funzioni da Microges2000
Funzioni a parametri variabili da Microges2000
Proprietà da Microges2000
Conversione numerica da Microges2000
TImage su Form e Panel da Maverich
Indy gestiore server FTP lato Client da Maverich
PopUpMenu sotto Pulsante (TSpeedButton) da Maverich
Direttiva $macro da Microges2000
Toolbar da xinyiman
Evidenziare voci TreeView da Maverich
Visualizzare un file Html esterno da Maverich
StatusBar - aggirare l'errore variabile duplicata da Maverich
Da DataSource a Excel da xinyiman
Le permutazioni da xinyiman
Brute force da xinyiman
Indy 10 - Invio email con allegati da Maverich
La gestione degli errori in Lazarus da xinyiman
Pascal Script da xinyiman
Linux + Zeos + Firebird da xinyiman
Dataset virtuale da xinyiman
Overload di operatori da Microges2000
Lavorare con file in formato JSON con Lazarus da nomorelogic
Zeos ... dietro le quinte (prima parte) da Stilgar
Disporre le finestre in un blocco unico (come Delphi) da Maverich
Aspetto retrò (Cmd Line) da xinyiman
Come interfacciare periferica twain da Narciso
Ubuntu - aggiornare free pascal e lazarus da xinyiman
fpcup: installazioni parallele di lazarus e fpc da nomorelogic
Free Pascal e Lazarus sul Raspberry Pi da nomorelogic
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal. da nomorelogic
Creare un server multithread da xinyiman
guida all'installazione di fpc trunk da subversion in linux gentoo da nomorelogic
Indice da nomorelogic
DB concetti fondamentali e connessioni standard da xinyiman
Advanced Record Syntax da nomorelogic
DB concetti fondamentali e DBGrid da xinyiman
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText da xinyiman
Advanced Record Syntax: un esempio pratico da nomorelogic
Superclasse form base per programmi gestionali (e non) da nomorelogic
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox da nomorelogic
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form da nomorelogic
Superclasse form base per programmi gestionali (e non) #4 - wait animation da nomorelogic
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog da nomorelogic
Installare lazarus su mac osx sierra da xinyiman
immagine docker per lavorare con lazarus e free pascal da nomorelogic
TDD o Test-Driven Development da xinyiman
Utenti
Stats
  • Post in totale: 12789
  • Topic in totale: 1592
  • Online Today: 197
  • Online Ever: 520
  • (Novembre 04, 2018, 12:00:31 pm)
Utenti Online
Users: 0
Guests: 36
Total: 36

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.