* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

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

Inserisci il nome utente, la password e la durata della sessione.

71 Visitatori, 1 Utente
 

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

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2870
  • Karma: +20/-4
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: 2382
  • Karma: +10/-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: 2870
  • Karma: +20/-4
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: 3249
  • Karma: +12/-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: 2382
  • Karma: +10/-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: 2382
  • Karma: +10/-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: 2870
  • Karma: +20/-4
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: 2382
  • Karma: +10/-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: 2382
  • Karma: +10/-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: 2870
  • Karma: +20/-4
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: 2870
  • Karma: +20/-4
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

Utenti
  • Utenti in totale: 785
  • Latest: gmax
Stats
  • Post in totale: 18769
  • Topic in totale: 2232
  • Online Today: 80
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 1
Guests: 71
Total: 72

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.