designed songs page

This commit is contained in:
2025-07-31 21:53:10 +02:00
parent 334a117794
commit 1b13f676ca
26 changed files with 124 additions and 120 deletions

22
.gitignore vendored Normal file
View File

@@ -0,0 +1,22 @@
*.egg
*.egg-info
*.pyc
*$py.class
*~
*.sqlite
.coverage
coverage.xml
build/
dist/
.tox/
nosetests.xml
env*/
tmp/
Data.fs*
*.sublime-project
*.sublime-workspace
.*.sw?
.sw?
.DS_Store
coverage
test

Binary file not shown.

BIN
tcs_site/.DS_Store vendored

Binary file not shown.

Binary file not shown.

View File

@@ -7,6 +7,7 @@
*/ */
@import "../css/simplebar.css"; @import "../css/simplebar.css";
@import "../css/icons/tabler-icons/tabler-icons.css"; @import "../css/icons/tabler-icons/tabler-icons.css";
:root, :root,
[data-bs-theme=light] { [data-bs-theme=light] {
--bs-blue: #0d6efd; --bs-blue: #0d6efd;
@@ -98,8 +99,8 @@
--bs-tertiary-bg: #f6f8fa; --bs-tertiary-bg: #f6f8fa;
--bs-tertiary-bg-rgb: 246, 248, 250; --bs-tertiary-bg-rgb: 246, 248, 250;
--bs-heading-color: #3a4752; --bs-heading-color: #3a4752;
--bs-link-color: #0d6efd; --bs-link-color: #205c90;
--bs-link-color-rgb: 41, 82, 255; --bs-link-color-rgb: 32, 92, 144;
--bs-link-decoration: underline; --bs-link-decoration: underline;
--bs-link-hover-color: #2142cc; --bs-link-hover-color: #2142cc;
--bs-link-hover-color-rgb: 33, 66, 204; --bs-link-hover-color-rgb: 33, 66, 204;
@@ -2362,7 +2363,7 @@ progress {
} }
.table-sm > :not(caption) > * > * { .table-sm > :not(caption) > * > * {
padding: 14px 10px; padding: 8px 10px;
} }
.table-bordered > :not(caption) > * { .table-bordered > :not(caption) > * {

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

@@ -220,56 +220,3 @@ blockquote {
margin-bottom:0; margin-bottom:0;
} }
div.dailydharma h2{
-moz-osx-font-smoothing:grayscale;
-webkit-font-smoothing:antialiased;
text-rendering:optimizeLegibility;
font:1.5em/1 gill-sans-condensed,Roboto Condensed,sans-serif;
text-transform:uppercase;
}
div.dailydharma{
margin-top:4em;
margin-bottom:3em;
padding-right:1.3em;
padding-left:1.3em;
border:2px solid #ef582c;
clear:both;text-align:center
}
div.dailydharma h2{
padding:.325em 1.3em .2em;
background-color:#ef582c;
color:#fff;
display:inline-block;
letter-spacing:.1em;
margin:-1.3em auto;
}
.icon{
background-position:center;
-moz-background-size:contain;
background-size:contain;
height:2.5rem;
width:2.5rem
}
.icon-quote{
margin:1.3em auto .65em;
background-image:url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20enable-background%3D%22new%200%200%2038%2031%22%20height%3D%2231%22%20viewBox%3D%220%200%2038%2031%22%20width%3D%2238%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22m36.39%200c-7.16%203.86-13.71%2011.34-13.71%2019.78%200%207.84%204.37%2011.22%208.37%2011.22%204.85%200%207.64-3.26%206.79-8.68-4.97-.72-8.01-3.86-8.01-7.96%200-4.71%203.03-8.69%208.13-12.18zm-22.68%200c-7.16%203.86-13.71%2011.34-13.71%2019.78%200%207.84%204.37%2011.22%208.37%2011.22%204.85%200%207.64-3.26%206.79-8.68-4.97-.72-8.01-3.86-8.01-7.96%200-4.71%203.03-8.69%208.13-12.18z%22%20fill%3D%22%23111%22/%3E%3C/svg%3E");
background-repeat:no-repeat
}
.daily-quote{
line-height:1.33;
color:#666566;
font-family:"Source Serif Pro", serif;
font-size:32px;
text-align:center;
-webkit-transition:.15s;
-o-transition:.15s;
-moz-transition:.15s;transition:.15s;
}
.daily-quote-author{
color:#999;
font-style:normal;
font-family:Roboto Condensed,sans-serif;
text-align:center;
padding:1em;
}

View File

@@ -20,7 +20,7 @@
<strong>{{ entry.author }}</strong> - Publié le <strong>{{ entry.create_date }}</strong><br> <strong>{{ entry.author }}</strong> - Publié le <strong>{{ entry.create_date }}</strong><br>
</p> </p>
<hr/> <hr/>
<p>{{ body_html | safe }}</p> {{ body_html | safe }}
<hr/> <hr/>
{% if entry.source_link != '' %} {% if entry.source_link != '' %}
@@ -37,6 +37,7 @@
<p> <p>
{% if request.authenticated_userid %} {% if request.authenticated_userid %}
Topic - Tag : <strong>{{ entry.topic_id }}</strong> - <strong>{{ entry.tag }}</strong><br> Topic - Tag : <strong>{{ entry.topic_id }}</strong> - <strong>{{ entry.tag }}</strong><br>
Type : <strong>{{ entry.content_type }}</strong><br>
Language : <strong>{{ entry.language }}</strong><br> Language : <strong>{{ entry.language }}</strong><br>
Statut : <strong>{{ entry.status }}</strong><br> Statut : <strong>{{ entry.status }}</strong><br>
{% endif %} {% endif %}

View File

@@ -12,6 +12,18 @@
<input class="form-control" name="title" type="text" value="{{entry.title}}" required> <input class="form-control" name="title" type="text" value="{{entry.title}}" required>
</div> </div>
<div class="mb-3">
<label class="form-label required-field" for="content_type">Content type</label>
<select class="form-control" id="content_type" name="content_type" value="{{ entry.content_type}}">
<option value="text/html"
{% if entry.content_type == "text/html" %} selected {% endif %}>text/html</option>
<option value="text/x-rst"
{% if entry.content_type == "text/x-rst" %} selected {% endif %}>text/x-rst</option>
<option value="text/markdown"
{% if entry.content_type == "text/markdown" %} selected {% endif %}>text/markdown</option>
</select>
</div>
<div class="mb-3"> <div class="mb-3">
<label class="form-label required-field" for="body">Corps du texte</label> <label class="form-label required-field" for="body">Corps du texte</label>
<textarea class="form-control monospace-font" id="body" name="body" required rows="20" cols="35"> <textarea class="form-control monospace-font" id="body" name="body" required rows="20" cols="35">
@@ -19,6 +31,18 @@
</textarea> </textarea>
</div> </div>
<div class="mb-3">
<label class="form-label required-field" for="language">Langue</label>
<select class="form-control" id="language" name="language" value="{{ entry.language}}">
<option value="en"
{% if entry.language == "en" %} selected {% endif %}>english</option>
<option value="fr"
{% if entry.language == "fr" %} selected {% endif %}>français</option>
<option value="vi"
{% if entry.language == "vi" %} selected {% endif %}>vietnamien</option>
</select>
</div>
<div class="mb-3"> <div class="mb-3">
<label class="form-label required-field" for="tag">Tag</label> <label class="form-label required-field" for="tag">Tag</label>
<select class="form-control" id="tag" name="tag" value="{{ entry.tag }}"> <select class="form-control" id="tag" name="tag" value="{{ entry.tag }}">

View File

@@ -9,19 +9,16 @@
</div> </div>
<div class="row"> <div class="row">
<!-- Container (ACTIVITES Section) --> <!-- Container (BIO Section) -->
<div class="col-lg-4"> <div class="col-lg-4">
<div class="card overflow-hidden hover-img"> <div class="card overflow-hidden hover-img">
<div class="position-relative"> <div class="position-relative">
<img src="{{request.static_url('tcs_site:static/img/home/home_bio.jpg')}}" class="card-img-top"> <img src="{{request.static_url('tcs_site:static/img/home/home_bio.jpg')}}" class="card-img-top">
</div> </div>
<!-- Activites - colonne 1 --> <!-- COL 1 Biography -->
<div class="card-body text-center p-3"> <div class="card-body text-center p-3">
<h4>2e dimanche du mois</h4> <h4>Tiểu sử</h4>
{% if request.authenticated_userid %}
<p class="text-left fs-2"> <a href="{{ request.route_url('blog', id=32, slug='slug') }}">[Modifier ce bloc]</a></p>
{% endif %}
</div> </div>
</div> </div>
</div> </div>
@@ -30,12 +27,9 @@
<div class="position-relative"> <div class="position-relative">
<img src="{{request.static_url('tcs_site:static/img/home/home_songs.jpg')}}" class="card-img-top border border-dark" alt="matdash-img"> <img src="{{request.static_url('tcs_site:static/img/home/home_songs.jpg')}}" class="card-img-top border border-dark" alt="matdash-img">
</div> </div>
<!-- Activites - colonne 2 --> <!-- COL 2 Music -->
<div class="card-body text-center p-3"> <div class="card-body text-center p-3">
<h4>4e dimanche du mois</h4> <h4><a href="/blog/934/bai-hat">Bài hát</a></h4>
{% if request.authenticated_userid %}
<p class="text-left fs-2"> <a href="{{ request.route_url('blog', id=40, slug='slug') }}">[Modifier ce bloc]</a></p>
{% endif %}
</div> </div>
</div> </div>
</div> </div>
@@ -44,12 +38,9 @@
<div class="position-relative"> <div class="position-relative">
<img src="{{request.static_url('tcs_site:static/img/home/home_art.jpg')}}" class="card-img-top" alt="matdash-img"> <img src="{{request.static_url('tcs_site:static/img/home/home_art.jpg')}}" class="card-img-top" alt="matdash-img">
</div> </div>
<!-- Activites - colonne 3 --> <!-- COL 3 ART -->
<div class="card-body text-center p-3"> <div class="card-body text-center p-3">
<h4>4e dimanche du mois</h4> <h4>Tranh vẽ</h4>
{% if request.authenticated_userid %}
<p class="text-left fs-2"> <a href="{{ request.route_url('blog', id=207, slug='slug') }}">[Modifier ce bloc]</a></p>
{% endif %}
</div> </div>
</div> </div>
@@ -68,10 +59,6 @@
<div class="card-body text-center p-3"> <div class="card-body text-center p-3">
<h4>4e dimanche du mois</h4> <h4>4e dimanche du mois</h4>
{% if request.authenticated_userid %}
<p class="text-left fs-2"> <a href="{{ request.route_url('blog', id=207, slug='slug') }}">[Modifier ce bloc]</a></p>
{% endif %}
</div> </div>
</div> </div>
</div> </div>
@@ -83,9 +70,6 @@
<!-- Activites - colonne 3 --> <!-- Activites - colonne 3 -->
<div class="card-body text-center p-3"> <div class="card-body text-center p-3">
<h4>4e dimanche du mois</h4> <h4>4e dimanche du mois</h4>
{% if request.authenticated_userid %}
<p class="text-left fs-2"> <a href="{{ request.route_url('blog', id=207, slug='slug') }}">[Modifier ce bloc]</a></p>
{% endif %}
</div> </div>
</div> </div>

View File

@@ -4,8 +4,8 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Association de méditation Sunyata Paris, Hội Thiền Tánh Không Paris"> <meta name="description" content="Site de référence sur Trinh Cong Son. Actualité, biographie, chansons, paroles.">
<meta name="keywords" content="méditation paris sunyata formation pratique zen Thien Tanh Khong Paris France"> <meta name="keywords" content=" Amis Friends Trinh Cong Son songs albums art biography">
<meta name="author" content="Cao Thien Phuoc"> <meta name="author" content="Cao Thien Phuoc">
<title>{{page_title}}</title> <title>{{page_title}}</title>
<link rel="shortcut icon" href="{{request.static_url('tcs_site:static/zazen.png')}}"> <link rel="shortcut icon" href="{{request.static_url('tcs_site:static/zazen.png')}}">
@@ -76,6 +76,16 @@
<span class="hide-menu">Articles</span> <span class="hide-menu">Articles</span>
</a> </a>
</li> </li>
<li class="sidebar-item">
<a class="sidebar-link" href="{{ request.route_url('topic', topic='enseignement') }}" aria-expanded="false">
<span class="hide-menu">About</span>
</a>
</li>
<li class="sidebar-item">
<a class="sidebar-link" href="{{ request.route_url('topic', topic='english') }}" aria-expanded="false">
<span class="hide-menu">Topic</span>
</a>
</li>
<li class="nav-small-cap"> <li class="nav-small-cap">
<span class="hide-menu text-danger">En FRANCAIS</span> <span class="hide-menu text-danger">En FRANCAIS</span>
</li> </li>
@@ -89,28 +99,58 @@
<span class="hide-menu">Articles</span> <span class="hide-menu">Articles</span>
</a> </a>
</li> </li>
<li class="sidebar-item">
<a class="sidebar-link" href="{{ request.route_url('topic', topic='enseignement') }}" aria-expanded="false">
<span class="hide-menu">A propos</span>
</a>
</li>
<li class="sidebar-item">
<a class="sidebar-link" href="{{ request.route_url('topic', topic='francais') }}" aria-expanded="false">
<span class="hide-menu">Rubriques</span>
</a>
</li>
<li class="nav-small-cap"> <li class="nav-small-cap">
<iconify-icon icon="solar:menu-dots-linear" class="nav-small-cap-icon fs-6" class="fs-6"></iconify-icon>
<span class="hide-menu text-danger">A PROPOS</span> <span class="hide-menu text-danger">A PROPOS</span>
</li> </li>
<li class="sidebar-item"> <li class="sidebar-item">
<a class="sidebar-link" href="{{ request.route_url('topic', topic='apropos') }}" aria-expanded="false"> <a class="sidebar-link" href="{{ request.route_url('topic', topic='apropos') }}" aria-expanded="false">
<span><i class="ti ti-users fs-6"></i></span>
<span class="hide-menu">Qui sommes nous</span> <span class="hide-menu">Qui sommes nous</span>
</a> </a>
</li> </li>
<li class="sidebar-item"> <li class="sidebar-item">
<a class="sidebar-link" href="{{ request.route_url('blog', id=1, slug='mentions-legales') }}" aria-expanded="false"> <a class="sidebar-link" href="{{ request.route_url('blog', id=1, slug='mentions-legales') }}" aria-expanded="false">
<span><i class="ti ti-file-text fs-6"></i></span>
<span class="hide-menu">Mentions légales</span> <span class="hide-menu">Mentions légales</span>
</a> </a>
</li> </li>
<li class="sidebar-item"> <li class="sidebar-item">
<a class="sidebar-link" href="{{ request.route_url('contact') }}" aria-expanded="false"> <a class="sidebar-link" href="{{ request.route_url('contact') }}" aria-expanded="false">
<span><i class="ti ti-mail fs-6"></i></span>
<span class="hide-menu">Contact</span> <span class="hide-menu">Contact</span>
</a> </a>
</li> </li>
{% if request.authenticated_userid %}
<li class="nav-small-cap">
<span class="hide-menu text-danger">{{ request.authenticated_userid }}</span>
</li>
<li class="sidebar-item">
{% if request.authenticated_userid == 'admin' %}
<a class="sidebar-link" href="{{request.route_url('users')}}">
<i class="ti ti-users fs-6"></i></a>
{% else %}
<a class="sidebar-link" href="{{request.route_url('user_edit', name=request.authenticated_userid)}}">
<i class="ti ti-key fs-6"></i> Modifier le mdp</a>
{% endif %}
<a class="sidebar-link" href="{{request.route_url('settings')}}">
<i class="ti ti-settings fs-6"></i> Paramètres</a>
<a class="sidebar-link" href="{{request.route_url('logout')}}">
<i class="ti ti-logout fs-6"></i> Se déconnecter</a>
</li>
{% else %}
<li class="sidebar-item">
<a class="sidebar-link" href="{{ request.route_url('login') }}" aria-expanded="false">
<span class="hide-menu"><i class="ti ti-login fs-7"></i></span>
</a>
</li>
{% endif %}
</ul> </ul>
</nav> </nav>
<!-- End Sidebar navigation --> <!-- End Sidebar navigation -->
@@ -138,35 +178,16 @@
<div class="navbar-collapse justify-content-end px-0" id="navbarNav"> <div class="navbar-collapse justify-content-end px-0" id="navbarNav">
<ul class="navbar-nav flex-row ms-auto align-items-center justify-content-end"> <ul class="navbar-nav flex-row ms-auto align-items-center justify-content-end">
<li> <li>
<a class="nav-link" href="{{ request.route_url('blog_search') }}" title="Recherche"> <form id="search-form" class="form-horizontal" role="form" action="/blog_search" method="post">
<i class="ti ti-search fs-7"></i></a>
</li>
{% if request.authenticated_userid %}
<li class="nav-item dropdown">
<a class="btn btn-light dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">
{{ request.authenticated_userid }}
</a>
<ul class="dropdown-menu dropdown-menu-end"> <div class="mb-3">
{% if request.authenticated_userid == 'admin' %} <div class="input-group mb-3">
<li><a class="dropdown-item" href="{{request.route_url('users')}}"> <input type="text" class="form-control" name="criteria">
<i class="ti ti-users fs-6"></i> Utilisateurs</a></li> <button class="btn btn-primary" type="submit" name="form.submitted">Rechercher</button>
{% else %}
<li><a class="dropdown-item" href="{{request.route_url('user_edit', name=request.authenticated_userid)}}"> </div>
<i class="ti ti-key fs-6"></i> Modifier le mot de passe</a></li> </form>
{% endif %}
<li><a class="dropdown-item" href="{{request.route_url('settings')}}">
<i class="ti ti-settings fs-6"></i> Paramètres</a></li>
<li><a class="dropdown-item" href="{{request.route_url('logout')}}">
<i class="ti ti-logout fs-6"></i> Se déconnecter</a></li>
</ul>
</li> </li>
{% else %}
<li>
<a class="nav-link" href="{{request.route_url('login')}}">
&nbsp;&nbsp;<i class="ti ti-login fs-7"></i></a>
</li>
{% endif %}
</ul> </ul>
</div> </div>
</nav> </nav>
@@ -202,7 +223,7 @@
<!-- Footer --> <!-- Footer -->
<div class="py-6 px-6 text-center"> <div class="py-6 px-6 text-center">
<p class="mb-0 fs-4">© 2022-2024 - Méditation SUNYATA Paris - Hội Thiền Tánh Không Paris</p> <p class="mb-0 fs-4">© Copyright 2004-2006 by TCS-Association Culturelle</p>
</div> </div>
</div> </div>
</div> </div>
@@ -228,7 +249,7 @@
data-text-align="left" data-text-align="left"
data-close-text="J'ai compris!" data-close-text="J'ai compris!"
data-linkmsg = "Mentions légales" data-linkmsg = "Mentions légales"
data-moreinfo = "https://meditation-sunyata.paris/blog/1/mentions-legales" data-moreinfo = "/blog/1/mentions-legales"
data-message="Les cookies que nous utilisons sont nécessaires au bon fonctionnement du site. En continuant la visite, vous déclarez accepter leur utilisation."> data-message="Les cookies que nous utilisons sont nécessaires au bon fonctionnement du site. En continuant la visite, vous déclarez accepter leur utilisation.">
</script> </script>
</body> </body>

View File

@@ -19,10 +19,12 @@
<div class="mb-3"> <div class="mb-3">
<label class="form-label required-field" for="topic_language">Language</label> <label class="form-label required-field" for="topic_language">Language</label>
<select class="form-control" id="language" name="topic_language" value="{{ entry.topic_language }}"> <select class="form-control" id="language" name="topic_language" value="{{ entry.topic_language }}">
<option value="en"
{% if entry.topic_language == "en" %} selected {% endif %}>en</option>
<option value="fr" <option value="fr"
{% if entry.topic_language == "fr" %} selected {% endif %}>fr</option> {% if entry.topic_language == "fr" %} selected {% endif %}>fr</option>
<option value="vn" <option value="vn"
{% if entry.topic_language == "vn" %} selected {% endif %}>vn</option> {% if entry.topic_language == "vi" %} selected {% endif %}>vi</option>
</select> </select>
</div> </div>

View File

@@ -32,7 +32,7 @@ def blog(request):
if entry.content_type == "text/markdown": if entry.content_type == "text/markdown":
# convertir de markdown en HTML # convertir de markdown en HTML
body_html = markdown.markdown(body, extensions=['footnotes']) body_html = markdown.markdown(body, extensions=['footnotes'])
elif entry.content_type == "text/structured": elif entry.content_type == "text/x-rst":
parts = core.publish_parts( parts = core.publish_parts(
source=body, source=body,
writer_name='html') writer_name='html')
@@ -110,6 +110,8 @@ def blog_edit(request):
entry['status'] = '' entry['status'] = ''
entry['creator'] = request.authenticated_userid entry['creator'] = request.authenticated_userid
entry['editor'] = '' entry['editor'] = ''
entry['language'] = 'vi'
entry['content_type'] = 'text/markdown'
page_title = 'Nouvelle page' page_title = 'Nouvelle page'
url_retour = request.route_url('topic', topic=topic) url_retour = request.route_url('topic', topic=topic)
@@ -212,7 +214,7 @@ def topic(request):
# lire toutes les docs du topic # lire toutes les docs du topic
items = get_entries_by_topic(request, topic, tag.tag) items = get_entries_by_topic(request, topic, tag.tag)
if items: if items:
liste += '<div><table class="table table-sm ms-4 mb-4">' liste += '<div><table class="table table-sm table-borderless ms-4 mb-4"">'
liste += '<tbody class="table-group-divider">' liste += '<tbody class="table-group-divider">'
for item in items: for item in items:
item_slug = urlify(item.title) item_slug = urlify(item.title)