mirror of
https://github.com/rabbibotton/clog.git
synced 2026-01-03 07:42:32 -08:00
Add clog-web-dbi
This commit is contained in:
parent
f776df4862
commit
5de7cad249
8 changed files with 376 additions and 74 deletions
|
|
@ -7,6 +7,8 @@ When to use page vs panel
|
|||
Plug-in panels for use on other sites
|
||||
Demo between different models - stateless, webpage, windows
|
||||
|
||||
- Expand clog-db-admin to use other available dbi database types
|
||||
|
||||
- Multi control select and alignments in Builder
|
||||
|
||||
- Right click menus CLOG-GUI
|
||||
|
|
|
|||
|
|
@ -279,8 +279,12 @@ High Order Extensions to CLOG
|
|||
- Compositor containers
|
||||
- Menus
|
||||
- Alerts
|
||||
- Forms
|
||||
- Instant Web Sites - clog-web-site
|
||||
- Forms - clog-web-forms
|
||||
- Web Sites - clog-web-site
|
||||
|
||||
- clog-web-themes - basic themes for clog based websites
|
||||
|
||||
- clog-web-dbi - components for database driven websites
|
||||
|
||||
- clog-panels - Quick application layouts
|
||||
|
||||
|
|
|
|||
1
clog.asd
1
clog.asd
|
|
@ -38,6 +38,7 @@
|
|||
(:file "clog-auth")
|
||||
(:file "clog-gui")
|
||||
(:file "clog-web")
|
||||
(:file "clog-web-dbi")
|
||||
(:file "clog-web-themes")
|
||||
(:file "clog-helpers")))
|
||||
|
||||
|
|
|
|||
|
|
@ -51,16 +51,19 @@
|
|||
<li><a href="#CLOG:@CLOG-FORM%20MGL-PAX:SECTION" title="CLOG Form Objects">14 CLOG Form Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-CANVAS%20MGL-PAX:SECTION" title="CLOG Canvas Objects">15 CLOG Canvas Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-MULTIMEDIA%20MGL-PAX:SECTION" title="CLOG Multimedia Objects">16 CLOG Multimedia Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-GUI%20MGL-PAX:SECTION" title="CLOG GUI Objects">17 CLOG GUI Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-WEB%20MGL-PAX:SECTION" title="CLOG Web Objects">18 CLOG Web Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-BODY%20MGL-PAX:SECTION" title="CLOG Body Objects">19 CLOG Body Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-WINDOW%20MGL-PAX:SECTION" title="CLOG Window Objects">20 CLOG Window Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-DOCUMENT%20MGL-PAX:SECTION" title="CLOG Document Objects">21 CLOG Document Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-LOCATION%20MGL-PAX:SECTION" title="CLOG Location Objects">22 CLOG Location Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-NAVIGATOR%20MGL-PAX:SECTION" title="CLOG Navigator Objects">23 CLOG Navigator Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-JQUERY%20MGL-PAX:SECTION" title="CLOG jQuery Objects">24 CLOG jQuery Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-HELPERS%20MGL-PAX:SECTION" title="CLOG Helper Functions">25 CLOG Helper Functions</a></li>
|
||||
<li><a href="#CLOG:@CLOG-INTERNALS%20MGL-PAX:SECTION" title="CLOG Framework internals and extensions">26 CLOG Framework internals and extensions</a></li>
|
||||
<li><a href="#CLOG:@CLOG-AUTH%20MGL-PAX:SECTION" title="CLOG Auth Objects">17 CLOG Auth Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-GUI%20MGL-PAX:SECTION" title="CLOG GUI Objects">18 CLOG GUI Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-WEB%20MGL-PAX:SECTION" title="CLOG Web Objects">19 CLOG Web Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-WEB-DBI%20MGL-PAX:SECTION" title="CLOG Web DBI - dbi based website">20 CLOG Web DBI - dbi based website</a></li>
|
||||
<li><a href="#CLOG:@CLOG-WEB-THEMES%20MGL-PAX:SECTION" title="CLOG Web Site Themes">21 CLOG Web Site Themes</a></li>
|
||||
<li><a href="#CLOG:@CLOG-BODY%20MGL-PAX:SECTION" title="CLOG Body Objects">22 CLOG Body Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-WINDOW%20MGL-PAX:SECTION" title="CLOG Window Objects">23 CLOG Window Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-DOCUMENT%20MGL-PAX:SECTION" title="CLOG Document Objects">24 CLOG Document Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-LOCATION%20MGL-PAX:SECTION" title="CLOG Location Objects">25 CLOG Location Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-NAVIGATOR%20MGL-PAX:SECTION" title="CLOG Navigator Objects">26 CLOG Navigator Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-JQUERY%20MGL-PAX:SECTION" title="CLOG jQuery Objects">27 CLOG jQuery Objects</a></li>
|
||||
<li><a href="#CLOG:@CLOG-HELPERS%20MGL-PAX:SECTION" title="CLOG Helper Functions">28 CLOG Helper Functions</a></li>
|
||||
<li><a href="#CLOG:@CLOG-INTERNALS%20MGL-PAX:SECTION" title="CLOG Framework internals and extensions">29 CLOG Framework internals and extensions</a></li>
|
||||
</ul>
|
||||
|
||||
<h6>[in package CLOG]</h6>
|
||||
|
|
@ -4049,7 +4052,8 @@ by doubling) unless is the single character '?'.</p></li>
|
|||
|
||||
<p>Create a new CLOG-Database element, for use in
|
||||
CLOG-Builder. If not using builder use to connect:
|
||||
(dbi:connect (database-connection clog-obj) ...)</p></li>
|
||||
(dbi:connect (database-connection clog-obj) ...) or if a
|
||||
connection exists assign it to the database-connecton.</p></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-3ADATABASE-CONNECTION-20GENERIC-FUNCTION-29"></a>
|
||||
|
|
@ -5673,7 +5677,7 @@ https://developer.mozilla.org/en-US/docs/Web/CSS/font</p></li>
|
|||
<p><a id="x-28CLOG-3A-40CLOG-MULTIMEDIA-20MGL-PAX-3ASECTION-29"></a>
|
||||
<a id="CLOG:@CLOG-MULTIMEDIA%20MGL-PAX:SECTION"></a></p>
|
||||
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-CANVAS%20MGL-PAX:SECTION" title="CLOG Canvas Objects">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-GUI%20MGL-PAX:SECTION" title="CLOG GUI Objects">→</a> <a href="#CLOG:@CLOG-MULTIMEDIA%20MGL-PAX:SECTION" title="CLOG Multimedia Objects">↺</a></span></span></p>
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-CANVAS%20MGL-PAX:SECTION" title="CLOG Canvas Objects">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-AUTH%20MGL-PAX:SECTION" title="CLOG Auth Objects">→</a> <a href="#CLOG:@CLOG-MULTIMEDIA%20MGL-PAX:SECTION" title="CLOG Multimedia Objects">↺</a></span></span></p>
|
||||
|
||||
<h2><a href="#CLOG:@CLOG-MULTIMEDIA%20MGL-PAX:SECTION">16 CLOG Multimedia Objects</a></h2>
|
||||
|
||||
|
|
@ -6116,12 +6120,53 @@ is nil unbind the event.</p></li>
|
|||
<p>Create a CLOG video control</p></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-3A-40CLOG-AUTH-20MGL-PAX-3ASECTION-29"></a>
|
||||
<a id="CLOG:@CLOG-AUTH%20MGL-PAX:SECTION"></a></p>
|
||||
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-MULTIMEDIA%20MGL-PAX:SECTION" title="CLOG Multimedia Objects">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-GUI%20MGL-PAX:SECTION" title="CLOG GUI Objects">→</a> <a href="#CLOG:@CLOG-AUTH%20MGL-PAX:SECTION" title="CLOG Auth Objects">↺</a></span></span></p>
|
||||
|
||||
<h2><a href="#CLOG:@CLOG-AUTH%20MGL-PAX:SECTION">17 CLOG Auth Objects</a></h2>
|
||||
|
||||
<h6>[in package CLOG-AUTH]</h6>
|
||||
|
||||
<p>CLOG-AUTH - authorization abstraction for CLOG</p>
|
||||
|
||||
<p><a id="x-28CLOG-AUTH-3AGET-AUTHENTICATION-TOKEN-20FUNCTION-29"></a>
|
||||
<a id="CLOG-AUTH:GET-AUTHENTICATION-TOKEN%20FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[function]</span> <span class="reference-object"><a href="#CLOG-AUTH:GET-AUTHENTICATION-TOKEN%20FUNCTION" >GET-AUTHENTICATION-TOKEN</a></span></span> <span class="locative-args">BODY &KEY AUTH-PATH</span></span></p>
|
||||
|
||||
<p>Retrieve the stored authentication token</p></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-AUTH-3ASTORE-AUTHENTICATION-TOKEN-20FUNCTION-29"></a>
|
||||
<a id="CLOG-AUTH:STORE-AUTHENTICATION-TOKEN%20FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><span class=reference-bullet><span class=reference><span class="locative-type">[function]</span> <span class="reference-object"><a href="#CLOG-AUTH:STORE-AUTHENTICATION-TOKEN%20FUNCTION" >STORE-AUTHENTICATION-TOKEN</a></span></span> <span class="locative-args">BODY TOKEN</span></span></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-AUTH-3AREMOVE-AUTHENTICATION-TOKEN-20FUNCTION-29"></a>
|
||||
<a id="CLOG-AUTH:REMOVE-AUTHENTICATION-TOKEN%20FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><span class=reference-bullet><span class=reference><span class="locative-type">[function]</span> <span class="reference-object"><a href="#CLOG-AUTH:REMOVE-AUTHENTICATION-TOKEN%20FUNCTION" >REMOVE-AUTHENTICATION-TOKEN</a></span></span> <span class="locative-args">BODY</span></span></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-AUTH-3ASET-ON-AUTHENTICATION-CHANGE-20FUNCTION-29"></a>
|
||||
<a id="CLOG-AUTH:SET-ON-AUTHENTICATION-CHANGE%20FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><span class=reference-bullet><span class=reference><span class="locative-type">[function]</span> <span class="reference-object"><a href="#CLOG-AUTH:SET-ON-AUTHENTICATION-CHANGE%20FUNCTION" >SET-ON-AUTHENTICATION-CHANGE</a></span></span> <span class="locative-args">OBJ HANDLER</span></span></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-3A-40CLOG-GUI-20MGL-PAX-3ASECTION-29"></a>
|
||||
<a id="CLOG:@CLOG-GUI%20MGL-PAX:SECTION"></a></p>
|
||||
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-MULTIMEDIA%20MGL-PAX:SECTION" title="CLOG Multimedia Objects">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-WEB%20MGL-PAX:SECTION" title="CLOG Web Objects">→</a> <a href="#CLOG:@CLOG-GUI%20MGL-PAX:SECTION" title="CLOG GUI Objects">↺</a></span></span></p>
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-AUTH%20MGL-PAX:SECTION" title="CLOG Auth Objects">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-WEB%20MGL-PAX:SECTION" title="CLOG Web Objects">→</a> <a href="#CLOG:@CLOG-GUI%20MGL-PAX:SECTION" title="CLOG GUI Objects">↺</a></span></span></p>
|
||||
|
||||
<h2><a href="#CLOG:@CLOG-GUI%20MGL-PAX:SECTION">17 CLOG GUI Objects</a></h2>
|
||||
<h2><a href="#CLOG:@CLOG-GUI%20MGL-PAX:SECTION">18 CLOG GUI Objects</a></h2>
|
||||
|
||||
<h6>[in package CLOG-GUI]</h6>
|
||||
|
||||
|
|
@ -6622,9 +6667,9 @@ machine, upon close <code>ON-FILE-NAME</code> called with filename or nil if fai
|
|||
<p><a id="x-28CLOG-3A-40CLOG-WEB-20MGL-PAX-3ASECTION-29"></a>
|
||||
<a id="CLOG:@CLOG-WEB%20MGL-PAX:SECTION"></a></p>
|
||||
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-GUI%20MGL-PAX:SECTION" title="CLOG GUI Objects">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-BODY%20MGL-PAX:SECTION" title="CLOG Body Objects">→</a> <a href="#CLOG:@CLOG-WEB%20MGL-PAX:SECTION" title="CLOG Web Objects">↺</a></span></span></p>
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-GUI%20MGL-PAX:SECTION" title="CLOG GUI Objects">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-WEB-DBI%20MGL-PAX:SECTION" title="CLOG Web DBI - dbi based website">→</a> <a href="#CLOG:@CLOG-WEB%20MGL-PAX:SECTION" title="CLOG Web Objects">↺</a></span></span></p>
|
||||
|
||||
<h2><a href="#CLOG:@CLOG-WEB%20MGL-PAX:SECTION">18 CLOG Web Objects</a></h2>
|
||||
<h2><a href="#CLOG:@CLOG-WEB%20MGL-PAX:SECTION">19 CLOG Web Objects</a></h2>
|
||||
|
||||
<h6>[in package CLOG-WEB]</h6>
|
||||
|
||||
|
|
@ -7182,7 +7227,7 @@ is placed in DOM at top of <code>OBJ</code> instead of bottom of <code>OBJ</code
|
|||
<a id="CLOG-WEB:CLOG-WEB-FORM%20FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[function]</span> <span class="reference-object"><a href="#CLOG-WEB:CLOG-WEB-FORM%20FUNCTION" >CLOG-WEB-FORM</a></span></span> <span class="locative-args">OBJ CONTENT FIELDS ON-INPUT &KEY (MODAL <code>NIL</code>) (OK-TEXT "OK") (CANCEL-TEXT "Cancel") (HTML-ID <code>NIL</code>)</span></span></p>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[function]</span> <span class="reference-object"><a href="#CLOG-WEB:CLOG-WEB-FORM%20FUNCTION" >CLOG-WEB-FORM</a></span></span> <span class="locative-args">OBJ CONTENT FIELDS ON-INPUT &KEY (MODAL <code>NIL</code>) (OK-TEXT "OK") (CANCEL-TEXT "Cancel") (CLASS <code>NIL</code>) (HTML-ID <code>NIL</code>)</span></span></p>
|
||||
|
||||
<p>Create a form with <code>CONTENT</code> followed by <code>FIELDS</code>.
|
||||
<code>FIELDS</code> is a list of lists each list has:</p>
|
||||
|
|
@ -7208,6 +7253,15 @@ is placed in DOM at top of <code>OBJ</code> instead of bottom of <code>OBJ</code
|
|||
if confirmed or nil if canceled. <code>CANCEL-TEXT</code> is only displayed if modal is t</p></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-WEB-3AFORM-RESULT-20FUNCTION-29"></a>
|
||||
<a id="CLOG-WEB:FORM-RESULT%20FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[function]</span> <span class="reference-object"><a href="#CLOG-WEB:FORM-RESULT%20FUNCTION" >FORM-RESULT</a></span></span> <span class="locative-args">RESULT KEY</span></span></p>
|
||||
|
||||
<p>Return the value for <code>KEY</code> from <code>RESULT</code></p></li>
|
||||
</ul>
|
||||
|
||||
<p><code>CLOG-WEB</code> - Websites</p>
|
||||
|
||||
<p><a id="x-28CLOG-WEB-3ACLOG-WEB-SITE-20CLASS-29"></a>
|
||||
|
|
@ -7235,24 +7289,32 @@ element.</p></li>
|
|||
<ul>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[function]</span> <span class="reference-object"><a href="#CLOG-WEB:CLOG-WEB-META%20FUNCTION" >CLOG-WEB-META</a></span></span> <span class="locative-args">DESCRIPTION</span></span></p>
|
||||
|
||||
<p>Returns a boot-function for use with <a href="#CLOG:INITIALIZE%20FUNCTION" title="CLOG:INITIALIZE FUNCTION"><code>CLOG:INITIALIZE</code></a> to add meta and body
|
||||
information for search engines with <code>DESCRIPTION</code>.</p></li>
|
||||
<p>Returns a boot-function for use with <a href="#CLOG:INITIALIZE%20FUNCTION" title="CLOG:INITIALIZE FUNCTION"><code>CLOG:INITIALIZE</code></a> to add meta
|
||||
and no-script body information for search engines with <code>DESCRIPTION</code>.</p></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-WEB-3ADEFAULT-THEME-20FUNCTION-29"></a>
|
||||
<a id="CLOG-WEB:DEFAULT-THEME%20FUNCTION"></a></p>
|
||||
<p><a id="x-28CLOG-WEB-3ACREATE-WEB-SITE-20GENERIC-FUNCTION-29"></a>
|
||||
<a id="CLOG-WEB:CREATE-WEB-SITE%20GENERIC-FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[function]</span> <span class="reference-object"><a href="#CLOG-WEB:DEFAULT-THEME%20FUNCTION" >DEFAULT-THEME</a></span></span> <span class="locative-args">BODY WEBSITE PAGE PROPERTIES</span></span></p>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[generic-function]</span> <span class="reference-object"><a href="#CLOG-WEB:CREATE-WEB-SITE%20GENERIC-FUNCTION" >CREATE-WEB-SITE</a></span></span> <span class="locative-args">CLOG-OBJ &KEY THEME SETTINGS URL TITLE FOOTER LOGO PROFILE</span></span></p>
|
||||
|
||||
<p>The default theme for clog-web-site.
|
||||
Settings available:
|
||||
:menu-class - w3 color class for menu bar
|
||||
Page properties:
|
||||
:menu - (("Menu Name" (("Menu Item" "link"))))
|
||||
:content</p></li>
|
||||
<p>Attach a clog-web-site to a <code>CLOG-OBJ</code> generally a
|
||||
clog-body.</p></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-WEB-3ACREATE-WEB-PAGE-20GENERIC-FUNCTION-29"></a>
|
||||
<a id="CLOG-WEB:CREATE-WEB-PAGE%20GENERIC-FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[generic-function]</span> <span class="reference-object"><a href="#CLOG-WEB:CREATE-WEB-PAGE%20GENERIC-FUNCTION" >CREATE-WEB-PAGE</a></span></span> <span class="locative-args">CLOG-OBJ PAGE PROPERTIES</span></span></p>
|
||||
|
||||
<p>Use the clog-web-site <a href="#CLOG-WEB:THEME%20GENERIC-FUNCTION" title="CLOG-WEB:THEME GENERIC-FUNCTION"><code>THEME</code></a> to create <code>PAGE</code> with
|
||||
<code>CLOG-OBJ</code> as parent</p></li>
|
||||
</ul>
|
||||
|
||||
<p><a href="#CLOG-WEB:CLOG-WEB-SITE%20CLASS" title="CLOG-WEB:CLOG-WEB-SITE CLASS"><code>CLOG-WEB-SITE</code></a> - Accessors</p>
|
||||
|
||||
<p><a id="x-28CLOG-WEB-3ATHEME-20GENERIC-FUNCTION-29"></a>
|
||||
<a id="CLOG-WEB:THEME%20GENERIC-FUNCTION"></a></p>
|
||||
|
||||
|
|
@ -7267,6 +7329,13 @@ Page properties:
|
|||
<li><span class=reference-bullet><span class=reference><span class="locative-type">[generic-function]</span> <span class="reference-object"><a href="#CLOG-WEB:SETTINGS%20GENERIC-FUNCTION" >SETTINGS</a></span></span> <span class="locative-args">OBJECT</span></span></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-WEB-3APROFILE-20GENERIC-FUNCTION-29"></a>
|
||||
<a id="CLOG-WEB:PROFILE%20GENERIC-FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><span class=reference-bullet><span class=reference><span class="locative-type">[generic-function]</span> <span class="reference-object"><a href="#CLOG-WEB:PROFILE%20GENERIC-FUNCTION" >PROFILE</a></span></span> <span class="locative-args">OBJECT</span></span></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-3AURL-20GENERIC-FUNCTION-29"></a>
|
||||
<a id="CLOG:URL%20GENERIC-FUNCTION"></a></p>
|
||||
|
||||
|
|
@ -7299,26 +7368,6 @@ Page properties:
|
|||
<li><span class=reference-bullet><span class=reference><span class="locative-type">[generic-function]</span> <span class="reference-object"><a href="#CLOG-WEB:LOGO%20GENERIC-FUNCTION" >LOGO</a></span></span> <span class="locative-args">OBJECT</span></span></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-WEB-3ACREATE-WEB-SITE-20GENERIC-FUNCTION-29"></a>
|
||||
<a id="CLOG-WEB:CREATE-WEB-SITE%20GENERIC-FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[generic-function]</span> <span class="reference-object"><a href="#CLOG-WEB:CREATE-WEB-SITE%20GENERIC-FUNCTION" >CREATE-WEB-SITE</a></span></span> <span class="locative-args">CLOG-OBJ &KEY THEME SETTINGS URL TITLE FOOTER LOGO</span></span></p>
|
||||
|
||||
<p>Attach a clog-web-site to a <code>CLOG-OBJ</code> generally a
|
||||
clog-body.</p></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-WEB-3ACREATE-WEB-PAGE-20GENERIC-FUNCTION-29"></a>
|
||||
<a id="CLOG-WEB:CREATE-WEB-PAGE%20GENERIC-FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[generic-function]</span> <span class="reference-object"><a href="#CLOG-WEB:CREATE-WEB-PAGE%20GENERIC-FUNCTION" >CREATE-WEB-PAGE</a></span></span> <span class="locative-args">CLOG-OBJ PAGE PROPERTIES</span></span></p>
|
||||
|
||||
<p>Use the clog-web-site <a href="#CLOG-WEB:THEME%20GENERIC-FUNCTION" title="CLOG-WEB:THEME GENERIC-FUNCTION"><code>THEME</code></a> to create <code>PAGE</code> with
|
||||
<code>CLOG-OBJ</code> as parent</p></li>
|
||||
</ul>
|
||||
|
||||
<p><code>CLOG-WEB</code> - Utilities</p>
|
||||
|
||||
<p><a id="x-28CLOG-WEB-3ABASE-URL-P-20FUNCTION-29"></a>
|
||||
|
|
@ -7348,12 +7397,98 @@ clog-body.</p></li>
|
|||
<p>Split path by / adjusting for base-url</p></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-3A-40CLOG-WEB-DBI-20MGL-PAX-3ASECTION-29"></a>
|
||||
<a id="CLOG:@CLOG-WEB-DBI%20MGL-PAX:SECTION"></a></p>
|
||||
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-WEB%20MGL-PAX:SECTION" title="CLOG Web Objects">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-WEB-THEMES%20MGL-PAX:SECTION" title="CLOG Web Site Themes">→</a> <a href="#CLOG:@CLOG-WEB-DBI%20MGL-PAX:SECTION" title="CLOG Web DBI - dbi based website">↺</a></span></span></p>
|
||||
|
||||
<h2><a href="#CLOG:@CLOG-WEB-DBI%20MGL-PAX:SECTION">20 CLOG Web DBI - dbi based website</a></h2>
|
||||
|
||||
<h6>[in package CLOG-WEB-DBI]</h6>
|
||||
|
||||
<p>Authentication</p>
|
||||
|
||||
<p><a id="x-28CLOG-WEB-DBI-3ALOGIN-20FUNCTION-29"></a>
|
||||
<a id="CLOG-WEB-DBI:LOGIN%20FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[function]</span> <span class="reference-object"><a href="#CLOG-WEB-DBI:LOGIN%20FUNCTION" >LOGIN</a></span></span> <span class="locative-args">OBJ SQL-CONNECTION USERNAME PASSWORD</span></span></p>
|
||||
|
||||
<p>Login and set current authentication token, it does not remove token
|
||||
if one is present and login fails.</p></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-WEB-DBI-3ALOGOUT-20FUNCTION-29"></a>
|
||||
<a id="CLOG-WEB-DBI:LOGOUT%20FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[function]</span> <span class="reference-object"><a href="#CLOG-WEB-DBI:LOGOUT%20FUNCTION" >LOGOUT</a></span></span> <span class="locative-args">OBJ</span></span></p>
|
||||
|
||||
<p>Logout and remove current authenitcation token</p></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-WEB-DBI-3AGET-PROFILE-20FUNCTION-29"></a>
|
||||
<a id="CLOG-WEB-DBI:GET-PROFILE%20FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[function]</span> <span class="reference-object"><a href="#CLOG-WEB-DBI:GET-PROFILE%20FUNCTION" >GET-PROFILE</a></span></span> <span class="locative-args">OBJ SQL-CONNECTION</span></span></p>
|
||||
|
||||
<p>Retrieve profile based on current authentication token. If there is
|
||||
no token or fails to match as user returns nil</p></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-WEB-DBI-3ASIGN-UP-20FUNCTION-29"></a>
|
||||
<a id="CLOG-WEB-DBI:SIGN-UP%20FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><span class=reference-bullet><span class=reference><span class="locative-type">[function]</span> <span class="reference-object"><a href="#CLOG-WEB-DBI:SIGN-UP%20FUNCTION" >SIGN-UP</a></span></span> <span class="locative-args">OBJ SQL-CONNECTION &KEY (TITLE "Sign Up") (NEXT-STEP "/login")</span></span></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-WEB-DBI-3AMAKE-TOKEN-20FUNCTION-29"></a>
|
||||
<a id="CLOG-WEB-DBI:MAKE-TOKEN%20FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><span class=reference-bullet><span class=reference><span class="locative-type">[function]</span> <span class="reference-object"><a href="#CLOG-WEB-DBI:MAKE-TOKEN%20FUNCTION" >MAKE-TOKEN</a></span></span></span></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-WEB-DBI-3ACREATE-BASE-TABLES-20FUNCTION-29"></a>
|
||||
<a id="CLOG-WEB-DBI:CREATE-BASE-TABLES%20FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><span class=reference-bullet><span class=reference><span class="locative-type">[function]</span> <span class="reference-object"><a href="#CLOG-WEB-DBI:CREATE-BASE-TABLES%20FUNCTION" >CREATE-BASE-TABLES</a></span></span> <span class="locative-args">SQL-CONNECTION</span></span></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-3A-40CLOG-WEB-THEMES-20MGL-PAX-3ASECTION-29"></a>
|
||||
<a id="CLOG:@CLOG-WEB-THEMES%20MGL-PAX:SECTION"></a></p>
|
||||
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-WEB-DBI%20MGL-PAX:SECTION" title="CLOG Web DBI - dbi based website">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-BODY%20MGL-PAX:SECTION" title="CLOG Body Objects">→</a> <a href="#CLOG:@CLOG-WEB-THEMES%20MGL-PAX:SECTION" title="CLOG Web Site Themes">↺</a></span></span></p>
|
||||
|
||||
<h2><a href="#CLOG:@CLOG-WEB-THEMES%20MGL-PAX:SECTION">21 CLOG Web Site Themes</a></h2>
|
||||
|
||||
<h6>[in package CLOG-WEB]</h6>
|
||||
|
||||
<p>Built in themes</p>
|
||||
|
||||
<p><a id="x-28CLOG-WEB-3ADEFAULT-THEME-20FUNCTION-29"></a>
|
||||
<a id="CLOG-WEB:DEFAULT-THEME%20FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[function]</span> <span class="reference-object"><a href="#CLOG-WEB:DEFAULT-THEME%20FUNCTION" >DEFAULT-THEME</a></span></span> <span class="locative-args">BODY WEBSITE PAGE PROPERTIES</span></span></p>
|
||||
|
||||
<p>The default theme for clog-web-site.
|
||||
Settings available:
|
||||
:menu-class - w3 color class for menu bar
|
||||
Page properties:
|
||||
:menu - (("Menu Name" (("Menu Item" "link"))))
|
||||
:content</p></li>
|
||||
</ul>
|
||||
|
||||
<p><a id="x-28CLOG-3A-40CLOG-BODY-20MGL-PAX-3ASECTION-29"></a>
|
||||
<a id="CLOG:@CLOG-BODY%20MGL-PAX:SECTION"></a></p>
|
||||
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-WEB%20MGL-PAX:SECTION" title="CLOG Web Objects">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-WINDOW%20MGL-PAX:SECTION" title="CLOG Window Objects">→</a> <a href="#CLOG:@CLOG-BODY%20MGL-PAX:SECTION" title="CLOG Body Objects">↺</a></span></span></p>
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-WEB-THEMES%20MGL-PAX:SECTION" title="CLOG Web Site Themes">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-WINDOW%20MGL-PAX:SECTION" title="CLOG Window Objects">→</a> <a href="#CLOG:@CLOG-BODY%20MGL-PAX:SECTION" title="CLOG Body Objects">↺</a></span></span></p>
|
||||
|
||||
<h2><a href="#CLOG:@CLOG-BODY%20MGL-PAX:SECTION">19 CLOG Body Objects</a></h2>
|
||||
<h2><a href="#CLOG:@CLOG-BODY%20MGL-PAX:SECTION">22 CLOG Body Objects</a></h2>
|
||||
|
||||
<p>CLOG-Body - CLOG Body Objects</p>
|
||||
|
||||
|
|
@ -7429,7 +7564,7 @@ with <code>HTML</code>.</p></li>
|
|||
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-BODY%20MGL-PAX:SECTION" title="CLOG Body Objects">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-DOCUMENT%20MGL-PAX:SECTION" title="CLOG Document Objects">→</a> <a href="#CLOG:@CLOG-WINDOW%20MGL-PAX:SECTION" title="CLOG Window Objects">↺</a></span></span></p>
|
||||
|
||||
<h2><a href="#CLOG:@CLOG-WINDOW%20MGL-PAX:SECTION">20 CLOG Window Objects</a></h2>
|
||||
<h2><a href="#CLOG:@CLOG-WINDOW%20MGL-PAX:SECTION">23 CLOG Window Objects</a></h2>
|
||||
|
||||
<p>CLOG-Window - CLOG Window Objects</p>
|
||||
|
||||
|
|
@ -7834,7 +7969,7 @@ on-storage event is fired for changes to :local storage keys.</p></li>
|
|||
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-WINDOW%20MGL-PAX:SECTION" title="CLOG Window Objects">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-LOCATION%20MGL-PAX:SECTION" title="CLOG Location Objects">→</a> <a href="#CLOG:@CLOG-DOCUMENT%20MGL-PAX:SECTION" title="CLOG Document Objects">↺</a></span></span></p>
|
||||
|
||||
<h2><a href="#CLOG:@CLOG-DOCUMENT%20MGL-PAX:SECTION">21 CLOG Document Objects</a></h2>
|
||||
<h2><a href="#CLOG:@CLOG-DOCUMENT%20MGL-PAX:SECTION">24 CLOG Document Objects</a></h2>
|
||||
|
||||
<p>CLOG-Document - CLOG Document Objects</p>
|
||||
|
||||
|
|
@ -8006,7 +8141,7 @@ If <code>ON-FULL-SCREEN-CHANGE-HANDLER</code> is nil unbind the event.</p></li>
|
|||
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-DOCUMENT%20MGL-PAX:SECTION" title="CLOG Document Objects">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-NAVIGATOR%20MGL-PAX:SECTION" title="CLOG Navigator Objects">→</a> <a href="#CLOG:@CLOG-LOCATION%20MGL-PAX:SECTION" title="CLOG Location Objects">↺</a></span></span></p>
|
||||
|
||||
<h2><a href="#CLOG:@CLOG-LOCATION%20MGL-PAX:SECTION">22 CLOG Location Objects</a></h2>
|
||||
<h2><a href="#CLOG:@CLOG-LOCATION%20MGL-PAX:SECTION">25 CLOG Location Objects</a></h2>
|
||||
|
||||
<p>Clog-Location - CLOG Location Objects</p>
|
||||
|
||||
|
|
@ -8117,7 +8252,7 @@ If <code>ON-FULL-SCREEN-CHANGE-HANDLER</code> is nil unbind the event.</p></li>
|
|||
<a id="CLOG:URL-REPLACE%20GENERIC-FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[generic-function]</span> <span class="reference-object"><a href="#CLOG:URL-REPLACE%20GENERIC-FUNCTION" >URL-REPLACE</a></span></span> <span class="locative-args">CLOG-WINDOW REPLACE-URL</span></span></p>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[generic-function]</span> <span class="reference-object"><a href="#CLOG:URL-REPLACE%20GENERIC-FUNCTION" >URL-REPLACE</a></span></span> <span class="locative-args">CLOG-LOCATION REPLACE-URL</span></span></p>
|
||||
|
||||
<p>Replace browser url, ie a redirection and current <a href="#CLOG:URL%20GENERIC-FUNCTION" title="CLOG:URL GENERIC-FUNCTION"><code>URL</code></a> not
|
||||
saved in session history and back button will not return to it.</p></li>
|
||||
|
|
@ -8127,7 +8262,7 @@ saved in session history and back button will not return to it.</p></li>
|
|||
<a id="CLOG:URL-ASSIGN%20GENERIC-FUNCTION"></a></p>
|
||||
|
||||
<ul>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[generic-function]</span> <span class="reference-object"><a href="#CLOG:URL-ASSIGN%20GENERIC-FUNCTION" >URL-ASSIGN</a></span></span> <span class="locative-args">CLOG-WINDOW ASSIGN-URL</span></span></p>
|
||||
<li><p><span class=reference-bullet><span class=reference><span class="locative-type">[generic-function]</span> <span class="reference-object"><a href="#CLOG:URL-ASSIGN%20GENERIC-FUNCTION" >URL-ASSIGN</a></span></span> <span class="locative-args">CLOG-LOCATION ASSIGN-URL</span></span></p>
|
||||
|
||||
<p>Assign browser url.</p></li>
|
||||
</ul>
|
||||
|
|
@ -8137,7 +8272,7 @@ saved in session history and back button will not return to it.</p></li>
|
|||
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-LOCATION%20MGL-PAX:SECTION" title="CLOG Location Objects">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-JQUERY%20MGL-PAX:SECTION" title="CLOG jQuery Objects">→</a> <a href="#CLOG:@CLOG-NAVIGATOR%20MGL-PAX:SECTION" title="CLOG Navigator Objects">↺</a></span></span></p>
|
||||
|
||||
<h2><a href="#CLOG:@CLOG-NAVIGATOR%20MGL-PAX:SECTION">23 CLOG Navigator Objects</a></h2>
|
||||
<h2><a href="#CLOG:@CLOG-NAVIGATOR%20MGL-PAX:SECTION">26 CLOG Navigator Objects</a></h2>
|
||||
|
||||
<p>CLOG-Navigator - CLOG Navigator Objects</p>
|
||||
|
||||
|
|
@ -8193,7 +8328,7 @@ saved in session history and back button will not return to it.</p></li>
|
|||
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-NAVIGATOR%20MGL-PAX:SECTION" title="CLOG Navigator Objects">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-HELPERS%20MGL-PAX:SECTION" title="CLOG Helper Functions">→</a> <a href="#CLOG:@CLOG-JQUERY%20MGL-PAX:SECTION" title="CLOG jQuery Objects">↺</a></span></span></p>
|
||||
|
||||
<h2><a href="#CLOG:@CLOG-JQUERY%20MGL-PAX:SECTION">24 CLOG jQuery Objects</a></h2>
|
||||
<h2><a href="#CLOG:@CLOG-JQUERY%20MGL-PAX:SECTION">27 CLOG jQuery Objects</a></h2>
|
||||
|
||||
<p>CLOG-jQuery - Base class for CLOG jQuery Objects</p>
|
||||
|
||||
|
|
@ -8260,7 +8395,7 @@ result or <code>DEFAULT-ANSWER</code> on time out.</p></li>
|
|||
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-JQUERY%20MGL-PAX:SECTION" title="CLOG jQuery Objects">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-INTERNALS%20MGL-PAX:SECTION" title="CLOG Framework internals and extensions">→</a> <a href="#CLOG:@CLOG-HELPERS%20MGL-PAX:SECTION" title="CLOG Helper Functions">↺</a></span></span></p>
|
||||
|
||||
<h2><a href="#CLOG:@CLOG-HELPERS%20MGL-PAX:SECTION">25 CLOG Helper Functions</a></h2>
|
||||
<h2><a href="#CLOG:@CLOG-HELPERS%20MGL-PAX:SECTION">28 CLOG Helper Functions</a></h2>
|
||||
|
||||
<p>Tutorial and demo helpers</p>
|
||||
|
||||
|
|
@ -8379,7 +8514,7 @@ set (logging to browser console), </p></li>
|
|||
|
||||
<p><span class="outer-navigation"><span class="navigation"> <a href="#CLOG:@CLOG-HELPERS%20MGL-PAX:SECTION" title="CLOG Helper Functions">←</a> <a href="#CLOG:@CLOG-MANUAL%20MGL-PAX:SECTION" title="The CLOG manual">↑</a> <a href="#CLOG:@CLOG-INTERNALS%20MGL-PAX:SECTION" title="CLOG Framework internals and extensions">↺</a></span></span></p>
|
||||
|
||||
<h2><a href="#CLOG:@CLOG-INTERNALS%20MGL-PAX:SECTION">26 CLOG Framework internals and extensions</a></h2>
|
||||
<h2><a href="#CLOG:@CLOG-INTERNALS%20MGL-PAX:SECTION">29 CLOG Framework internals and extensions</a></h2>
|
||||
|
||||
<p><em>* Introduction to Internals *</em></p>
|
||||
|
||||
|
|
|
|||
142
source/clog-web-dbi.lisp
Normal file
142
source/clog-web-dbi.lisp
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; CLOG - The Common Lisp Omnificent GUI ;;;;
|
||||
;;;; (c) 2020-2022 David Botton ;;;;
|
||||
;;;; License BSD 3 Clause ;;;;
|
||||
;;;; ;;;;
|
||||
;;;; clog-web-dbi.lisp ;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; Database components for use with clog-web-website
|
||||
|
||||
(mgl-pax:define-package :clog-web-dbi
|
||||
(:documentation "CLOG-WEB-DBI - dbi based website helpers")
|
||||
(:use #:cl #:parse-float #:clog #:clog-web #:clog-auth #:mgl-pax))
|
||||
|
||||
(cl:in-package :clog-web-dbi)
|
||||
|
||||
(defsection @clog-web-dbi (:title "CLOG Web DBI - dbi based website")
|
||||
"Authentication"
|
||||
(login function)
|
||||
(logout function)
|
||||
(get-profile function)
|
||||
(sign-up function)
|
||||
(make-token function)
|
||||
(create-base-tables function))
|
||||
|
||||
;;;;;;;;;;;;;;;;;
|
||||
;; get-profile ;;
|
||||
;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defun get-profile (obj sql-connection)
|
||||
"Retrieve profile based on current authentication token. If there is
|
||||
no token or fails to match as user returns nil"
|
||||
(let ((token (clog-auth:get-authentication-token obj)))
|
||||
(when token
|
||||
(let ((contents (dbi:fetch-all
|
||||
(dbi:execute
|
||||
(dbi:prepare
|
||||
sql-connection
|
||||
"select * from users where token=?")
|
||||
(list token)))))
|
||||
(when contents
|
||||
(car contents))))))
|
||||
|
||||
;;;;;;;;;;;
|
||||
;; login ;;
|
||||
;;;;;;;;;;;
|
||||
|
||||
(defun login (obj sql-connection username password)
|
||||
"Login and set current authentication token, it does not remove token
|
||||
if one is present and login fails."
|
||||
(let ((contents (dbi:fetch-all
|
||||
(dbi:execute
|
||||
(dbi:prepare
|
||||
sql-connection
|
||||
"select token from users where username=? and password=?")
|
||||
(list username password)))))
|
||||
(when contents
|
||||
(store-authentication-token obj (getf (car contents) :|token|)))))
|
||||
|
||||
;;;;;;;;;;;;
|
||||
;; logout ;;
|
||||
;;;;;;;;;;;;
|
||||
|
||||
(defun logout (obj)
|
||||
"Logout and remove current authenitcation token"
|
||||
(remove-authentication-token obj))
|
||||
|
||||
;;;;;;;;;;;;;
|
||||
;; sign-up ;;
|
||||
;;;;;;;;;;;;;
|
||||
|
||||
(defun sign-up (obj sql-connection &key (title "Sign Up")
|
||||
(next-step "/login"))
|
||||
(clog-web-form
|
||||
obj title
|
||||
`(("Username" "username")
|
||||
("Password" "password" :password)
|
||||
("Retype Password" "repass" :password))
|
||||
(lambda (result)
|
||||
(cond ((not
|
||||
(equal (form-result result "password")
|
||||
(form-result result "repass")))
|
||||
(clog-web-alert obj "Mismatch"
|
||||
"The passwords do match."
|
||||
:time-out 3
|
||||
:place-top t))
|
||||
((< (length (form-result result "password")) 4)
|
||||
(clog-web-alert obj "Missize"
|
||||
"The passwords must at least 4 characters."
|
||||
:time-out 3
|
||||
:place-top t))
|
||||
((< (length (form-result result "username")) 4)
|
||||
(clog-web-alert obj "Missize"
|
||||
"The username must be at least 4 characters."
|
||||
:time-out 3
|
||||
:place-top t))
|
||||
(t
|
||||
(let ((contents (dbi:fetch-all
|
||||
(dbi:execute
|
||||
(dbi:prepare
|
||||
sql-connection
|
||||
"select username from users where username=?")
|
||||
(list (form-result result "username"))))))
|
||||
(cond (contents
|
||||
(clog-web-alert obj "Exists"
|
||||
"The username is not available."
|
||||
:time-out 3
|
||||
:place-top t))
|
||||
(t
|
||||
(dbi:do-sql
|
||||
sql-connection
|
||||
(sql-insert*
|
||||
"users"
|
||||
`(:username ,(form-result result "username")
|
||||
:password ,(form-result result "password")
|
||||
:token ,(make-token))))
|
||||
(url-replace (location obj) next-step)))))))))
|
||||
|
||||
;;;;;;;;;;;;;;;;
|
||||
;; make-token ;;
|
||||
;;;;;;;;;;;;;;;;
|
||||
|
||||
(defun make-token ()
|
||||
(get-universal-time))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; create-base-table ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defun create-base-tables (sql-connection)
|
||||
(dbi:do-sql
|
||||
sql-connection
|
||||
"create table config (key varchar, value varchar)")
|
||||
(dbi:do-sql
|
||||
sql-connection
|
||||
"create table users (username varchar, password varchar, token varchar)")
|
||||
(dbi:do-sql
|
||||
sql-connection
|
||||
(sql-insert* "users" `(:username "admin"
|
||||
:password "admin"
|
||||
:token ,(make-token)))))
|
||||
|
||||
|
|
@ -70,7 +70,8 @@ Page properties:
|
|||
(l2 (create-label p2 :content "Password"))
|
||||
(pass (create-form-element p2 :password :name "password" :class "w3-input"))
|
||||
(p3 (create-p form)))
|
||||
(declare (ignore l1 l2))
|
||||
|
||||
(declare (ignore l1 l2 p3))
|
||||
(setf (maximum-width outter) (unit :px 500))
|
||||
(setf (requiredp user) t)
|
||||
(setf (requiredp pass) t)
|
||||
|
|
@ -78,7 +79,9 @@ Page properties:
|
|||
:class (format nil "~A ~A" "w3-button"
|
||||
(getf (settings website)
|
||||
:menu-class)))
|
||||
(set-on-submit form (getf properties :on-submit))))
|
||||
(set-on-submit form (getf properties :on-submit))
|
||||
(when (getf properties :sign-up)
|
||||
(create-a form :class "w3-right" :content "sign up" :link (getf properties :sign-up)))))
|
||||
(create-br body)
|
||||
(create-br body)
|
||||
(create-div body :content (format nil "~A" (footer website))))
|
||||
|
|
|
|||
|
|
@ -93,19 +93,23 @@
|
|||
"CLOG-WEB - Interactions"
|
||||
(clog-web-alert function)
|
||||
(clog-web-form function)
|
||||
(form-result function)
|
||||
|
||||
"CLOG-WEB - Websites"
|
||||
(clog-web-site class)
|
||||
(clog-web-routes-from-menu function)
|
||||
(clog-web-meta function)
|
||||
(create-web-site generic-function)
|
||||
(create-web-page generic-function)
|
||||
|
||||
"CLOG-WEB-SITE - Accessors"
|
||||
(theme generic-function)
|
||||
(settings generic-function)
|
||||
(profile generic-function)
|
||||
(url generic-function)
|
||||
(title generic-function)
|
||||
(footer generic-function)
|
||||
(logo generic-function)
|
||||
(create-web-site generic-function)
|
||||
(create-web-page generic-function)
|
||||
|
||||
"CLOG-WEB - Utilities"
|
||||
(base-url-p function)
|
||||
|
|
@ -862,9 +866,14 @@ is placed in DOM at top of OBJ instead of bottom of OBJ."
|
|||
(sleep time-out)
|
||||
(destroy panel))))
|
||||
|
||||
(defun form-result (result key)
|
||||
"Return the value for KEY from RESULT"
|
||||
(second (assoc key result :test #'equal)))
|
||||
|
||||
(defun clog-web-form (obj content fields on-input &key (modal nil)
|
||||
(ok-text "OK")
|
||||
(cancel-text "Cancel")
|
||||
(class nil)
|
||||
(html-id nil))
|
||||
"Create a form with CONTENT followed by FIELDS.
|
||||
FIELDS is a list of lists each list has:
|
||||
|
|
@ -1015,6 +1024,8 @@ if confirmed or nil if canceled. CANCEL-TEXT is only displayed if modal is t"
|
|||
(defclass clog-web-site ()
|
||||
((theme :initarg :theme
|
||||
:accessor theme)
|
||||
(profile :initarg :profile
|
||||
:accessor profile)
|
||||
(settings :initarg :settings
|
||||
:reader settings)
|
||||
(url :initarg :url
|
||||
|
|
@ -1032,12 +1043,13 @@ if confirmed or nil if canceled. CANCEL-TEXT is only displayed if modal is t"
|
|||
;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defun clog-web-meta (description)
|
||||
"Returns a boot-function for use with CLOG:INITIALIZE to add meta and body
|
||||
information for search engines with DESCRIPTION."
|
||||
"Returns a boot-function for use with CLOG:INITIALIZE to add meta
|
||||
and no-script body information for search engines with DESCRIPTION."
|
||||
(lambda (path content)
|
||||
(declare (ignore path))
|
||||
(funcall (cl-template:compile-template content)
|
||||
(list :meta (format nil "<meta name='description' content='~A'>" description)
|
||||
(list :meta (format nil "<meta name='description' content='~A'>"
|
||||
description)
|
||||
:body description))))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
|
@ -1067,14 +1079,16 @@ clog-body."))
|
|||
|
||||
(defmethod create-web-site ((obj clog-obj) &key
|
||||
settings
|
||||
(profile nil)
|
||||
(theme 'default-theme)
|
||||
(url "/")
|
||||
(title "")
|
||||
(footer "")
|
||||
(logo ""))
|
||||
(let ((website (make-instance 'clog-web-site
|
||||
:theme theme
|
||||
:settings settings
|
||||
:profile profile
|
||||
:theme theme
|
||||
:url url
|
||||
:title title
|
||||
:footer footer
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ embedded in a native template application.)"
|
|||
(@clog-auth section)
|
||||
(@clog-gui section)
|
||||
(@clog-web section)
|
||||
(@clog-web-dbi section)
|
||||
(@clog-web-themes section)
|
||||
(@clog-body section)
|
||||
(@clog-window section)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue