diff options
Diffstat (limited to 'public')
45 files changed, 1129 insertions, 0 deletions
diff --git a/public/assets/arrow-down-nb.svg b/public/assets/arrow-down-nb.svg new file mode 100644 index 0000000..84ad2f3 --- /dev/null +++ b/public/assets/arrow-down-nb.svg | |||
@@ -0,0 +1,36 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <svg | ||
3 | viewBox="0 0 24 24" | ||
4 | fill="currentColor" | ||
5 | version="1.1" | ||
6 | id="svg1" | ||
7 | sodipodi:docname="arrow-down-nb.svg" | ||
8 | inkscape:version="1.4 (e7c3feb100, 2024-10-09)" | ||
9 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
11 | xmlns="http://www.w3.org/2000/svg" | ||
12 | xmlns:svg="http://www.w3.org/2000/svg"> | ||
13 | <defs | ||
14 | id="defs1" /> | ||
15 | <sodipodi:namedview | ||
16 | id="namedview1" | ||
17 | pagecolor="#ffffff" | ||
18 | bordercolor="#000000" | ||
19 | borderopacity="0.25" | ||
20 | inkscape:showpageshadow="2" | ||
21 | inkscape:pageopacity="0.0" | ||
22 | inkscape:pagecheckerboard="0" | ||
23 | inkscape:deskcolor="#d1d1d1" | ||
24 | inkscape:zoom="14.75" | ||
25 | inkscape:cx="12" | ||
26 | inkscape:cy="12.033898" | ||
27 | inkscape:window-width="1261" | ||
28 | inkscape:window-height="1032" | ||
29 | inkscape:window-x="655" | ||
30 | inkscape:window-y="0" | ||
31 | inkscape:window-maximized="1" | ||
32 | inkscape:current-layer="svg1" /> | ||
33 | <path | ||
34 | d="M13.0001 16.1716L18.3641 10.8076L19.7783 12.2218L12.0001 20L4.22192 12.2218L5.63614 10.8076L11.0001 16.1716V4H13.0001V16.1716Z" | ||
35 | id="path1" /> | ||
36 | </svg> | ||
diff --git a/public/assets/arrow-down.svg b/public/assets/arrow-down.svg new file mode 100644 index 0000000..bd7d579 --- /dev/null +++ b/public/assets/arrow-down.svg | |||
@@ -0,0 +1,40 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <svg | ||
3 | viewBox="0 0 24 24" | ||
4 | fill="currentColor" | ||
5 | version="1.1" | ||
6 | id="svg1" | ||
7 | sodipodi:docname="arrow-down.svg" | ||
8 | inkscape:version="1.4 (e7c3feb100, 2024-10-09)" | ||
9 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
11 | xmlns="http://www.w3.org/2000/svg" | ||
12 | xmlns:svg="http://www.w3.org/2000/svg"> | ||
13 | <defs | ||
14 | id="defs1" /> | ||
15 | <sodipodi:namedview | ||
16 | id="namedview1" | ||
17 | pagecolor="#ffffff" | ||
18 | bordercolor="#000000" | ||
19 | borderopacity="0.25" | ||
20 | inkscape:showpageshadow="2" | ||
21 | inkscape:pageopacity="0.0" | ||
22 | inkscape:pagecheckerboard="0" | ||
23 | inkscape:deskcolor="#d1d1d1" | ||
24 | inkscape:zoom="14.75" | ||
25 | inkscape:cx="12" | ||
26 | inkscape:cy="12.033898" | ||
27 | inkscape:window-width="1261" | ||
28 | inkscape:window-height="1032" | ||
29 | inkscape:window-x="655" | ||
30 | inkscape:window-y="0" | ||
31 | inkscape:window-maximized="1" | ||
32 | inkscape:current-layer="svg1" /> | ||
33 | <path | ||
34 | d="M13.0001 16.1716L18.3641 10.8076L19.7783 12.2218L12.0001 20L4.22192 12.2218L5.63614 10.8076L11.0001 16.1716V4H13.0001V16.1716Z" | ||
35 | id="path1" /> | ||
36 | <path | ||
37 | style="fill:#dd3333;stroke:#dd3333;stroke-width:0.256239" | ||
38 | d="M 8.1361932,16.102295 4.2726833,12.238339 4.9491052,11.559369 5.6255269,10.8804 8.2707084,13.524946 c 1.4548498,1.4545 2.6679196,2.644546 2.6957116,2.644546 0.02779,0 0.05053,-2.730509 0.05053,-6.067797 V 4.0338983 H 12 12.983051 v 6.0677967 c 0,3.337288 0.02274,6.067797 0.05053,6.067797 0.02779,0 1.240862,-1.190046 2.695712,-2.644546 l 2.645181,-2.644546 0.676496,0.679044 0.676496,0.679044 -3.863881,3.863881 -3.863881,3.863882 z" | ||
39 | id="path2" /> | ||
40 | </svg> | ||
diff --git a/public/assets/arrow-up-nb.svg b/public/assets/arrow-up-nb.svg new file mode 100644 index 0000000..f845bf1 --- /dev/null +++ b/public/assets/arrow-up-nb.svg | |||
@@ -0,0 +1 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M13.0001 7.82843V20H11.0001V7.82843L5.63614 13.1924L4.22192 11.7782L12.0001 4L19.7783 11.7782L18.3641 13.1924L13.0001 7.82843Z"></path></svg> \ No newline at end of file | |||
diff --git a/public/assets/arrow-up.svg b/public/assets/arrow-up.svg new file mode 100644 index 0000000..c88794d --- /dev/null +++ b/public/assets/arrow-up.svg | |||
@@ -0,0 +1,40 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <svg | ||
3 | viewBox="0 0 24 24" | ||
4 | fill="currentColor" | ||
5 | version="1.1" | ||
6 | id="svg1" | ||
7 | sodipodi:docname="arrow-up.svg" | ||
8 | inkscape:version="1.4 (e7c3feb100, 2024-10-09)" | ||
9 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
11 | xmlns="http://www.w3.org/2000/svg" | ||
12 | xmlns:svg="http://www.w3.org/2000/svg"> | ||
13 | <defs | ||
14 | id="defs1" /> | ||
15 | <sodipodi:namedview | ||
16 | id="namedview1" | ||
17 | pagecolor="#ffffff" | ||
18 | bordercolor="#000000" | ||
19 | borderopacity="0.25" | ||
20 | inkscape:showpageshadow="2" | ||
21 | inkscape:pageopacity="0.0" | ||
22 | inkscape:pagecheckerboard="0" | ||
23 | inkscape:deskcolor="#d1d1d1" | ||
24 | inkscape:zoom="7.7781746" | ||
25 | inkscape:cx="19.734707" | ||
26 | inkscape:cy="19.220448" | ||
27 | inkscape:window-width="956" | ||
28 | inkscape:window-height="1032" | ||
29 | inkscape:window-x="960" | ||
30 | inkscape:window-y="0" | ||
31 | inkscape:window-maximized="1" | ||
32 | inkscape:current-layer="svg1" /> | ||
33 | <path | ||
34 | d="M13.0001 7.82843V20H11.0001V7.82843L5.63614 13.1924L4.22192 11.7782L12.0001 4L19.7783 11.7782L18.3641 13.1924L13.0001 7.82843Z" | ||
35 | id="path1" /> | ||
36 | <path | ||
37 | style="fill:#dd3333;stroke:#dd3333;stroke-width:0.485914" | ||
38 | d="M 11.056579,13.854013 V 7.7161883 L 8.3569078,10.413563 5.6572369,13.110938 4.9829803,12.436682 4.3087238,11.762425 8.1323616,7.9387874 11.955999,4.1151496 l 3.85685,3.8552422 3.856848,3.8552422 -0.642652,0.642652 -0.642652,0.642652 -2.69967,-2.697375 -2.699671,-2.6973747 v 6.1378247 6.137824 h -0.964237 -0.964236 z" | ||
39 | id="path2" /> | ||
40 | </svg> | ||
diff --git a/public/assets/book-open-nb.svg b/public/assets/book-open-nb.svg new file mode 100644 index 0000000..462bb9d --- /dev/null +++ b/public/assets/book-open-nb.svg | |||
@@ -0,0 +1 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M13 21V23H11V21H3C2.44772 21 2 20.5523 2 20V4C2 3.44772 2.44772 3 3 3H9C10.1947 3 11.2671 3.52375 12 4.35418C12.7329 3.52375 13.8053 3 15 3H21C21.5523 3 22 3.44772 22 4V20C22 20.5523 21.5523 21 21 21H13ZM20 19V5H15C13.8954 5 13 5.89543 13 7V19H20ZM11 19V7C11 5.89543 10.1046 5 9 5H4V19H11Z"></path></svg> \ No newline at end of file | |||
diff --git a/public/assets/book-open.svg b/public/assets/book-open.svg new file mode 100644 index 0000000..383bc6d --- /dev/null +++ b/public/assets/book-open.svg | |||
@@ -0,0 +1,40 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <svg | ||
3 | viewBox="0 0 24 24" | ||
4 | fill="currentColor" | ||
5 | version="1.1" | ||
6 | id="svg1" | ||
7 | sodipodi:docname="book-open.svg" | ||
8 | inkscape:version="1.4 (e7c3feb100, 2024-10-09)" | ||
9 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
11 | xmlns="http://www.w3.org/2000/svg" | ||
12 | xmlns:svg="http://www.w3.org/2000/svg"> | ||
13 | <defs | ||
14 | id="defs1" /> | ||
15 | <sodipodi:namedview | ||
16 | id="namedview1" | ||
17 | pagecolor="#ffffff" | ||
18 | bordercolor="#000000" | ||
19 | borderopacity="0.25" | ||
20 | inkscape:showpageshadow="2" | ||
21 | inkscape:pageopacity="0.0" | ||
22 | inkscape:pagecheckerboard="0" | ||
23 | inkscape:deskcolor="#d1d1d1" | ||
24 | inkscape:zoom="16.333333" | ||
25 | inkscape:cx="13.714286" | ||
26 | inkscape:cy="10.010204" | ||
27 | inkscape:window-width="1367" | ||
28 | inkscape:window-height="1032" | ||
29 | inkscape:window-x="549" | ||
30 | inkscape:window-y="0" | ||
31 | inkscape:window-maximized="1" | ||
32 | inkscape:current-layer="svg1" /> | ||
33 | <path | ||
34 | d="M13 21V23H11V21H3C2.44772 21 2 20.5523 2 20V4C2 3.44772 2.44772 3 3 3H9C10.1947 3 11.2671 3.52375 12 4.35418C12.7329 3.52375 13.8053 3 15 3H21C21.5523 3 22 3.44772 22 4V20C22 20.5523 21.5523 21 21 21H13ZM20 19V5H15C13.8954 5 13 5.89543 13 7V19H20ZM11 19V7C11 5.89543 10.1046 5 9 5H4V19H11Z" | ||
35 | id="path1" /> | ||
36 | <path | ||
37 | style="fill:#dd3333;stroke:#dd3333;stroke-width:0.462799" | ||
38 | d="m 11.020408,21.985643 v -0.97354 L 6.8668354,20.975439 2.7132626,20.938776 2.3974476,20.641921 2.0816327,20.345066 V 12 3.6549341 l 0.3162118,-0.2968548 0.3162119,-0.2968548 3.5103187,0.00234 c 3.2760872,0.00218 3.5522704,0.01942 4.1390279,0.2583701 0.34579,0.1408189 0.852538,0.4359086 1.126107,0.655755 l 0.497399,0.3997205 0.605683,-0.4446121 c 1.1434,-0.8393329 1.270609,-0.8605967 5.183033,-0.8663802 l 3.510319,-0.00519 0.316211,0.2968548 0.316212,0.2968548 V 12 20.345066 l -0.315815,0.296855 -0.315814,0.296855 -4.153574,0.03666 -4.153572,0.03666 v 0.97354 0.973541 H 12 11.020408 Z m 0,-9.294065 V 6.3423387 L 10.744898,5.9375303 C 10.12681,5.0293713 10.107047,5.0245329 6.8484856,4.9836104 L 3.9183674,4.9468125 v 7.0470025 7.047001 h 3.5510204 3.5510202 z m 9.061225,-0.697763 V 4.9468125 l -2.930119,0.036798 c -3.258561,0.040922 -3.278324,0.045761 -3.896412,0.9539199 l -0.27551,0.4048084 v 6.3492392 6.349238 h 3.55102 3.551021 z" | ||
39 | id="path2" /> | ||
40 | </svg> | ||
diff --git a/public/assets/calendar-nb.svg b/public/assets/calendar-nb.svg new file mode 100644 index 0000000..fbf11df --- /dev/null +++ b/public/assets/calendar-nb.svg | |||
@@ -0,0 +1 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M9 1V3H15V1H17V3H21C21.5523 3 22 3.44772 22 4V20C22 20.5523 21.5523 21 21 21H3C2.44772 21 2 20.5523 2 20V4C2 3.44772 2.44772 3 3 3H7V1H9ZM20 11H4V19H20V11ZM7 5H4V9H20V5H17V7H15V5H9V7H7V5Z"></path></svg> \ No newline at end of file | |||
diff --git a/public/assets/calendar.svg b/public/assets/calendar.svg new file mode 100644 index 0000000..d8a0862 --- /dev/null +++ b/public/assets/calendar.svg | |||
@@ -0,0 +1,40 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <svg | ||
3 | viewBox="0 0 24 24" | ||
4 | fill="currentColor" | ||
5 | version="1.1" | ||
6 | id="svg1" | ||
7 | sodipodi:docname="calendar.svg" | ||
8 | inkscape:version="1.4 (e7c3feb100, 2024-10-09)" | ||
9 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
11 | xmlns="http://www.w3.org/2000/svg" | ||
12 | xmlns:svg="http://www.w3.org/2000/svg"> | ||
13 | <defs | ||
14 | id="defs1" /> | ||
15 | <sodipodi:namedview | ||
16 | id="namedview1" | ||
17 | pagecolor="#ffffff" | ||
18 | bordercolor="#000000" | ||
19 | borderopacity="0.25" | ||
20 | inkscape:showpageshadow="2" | ||
21 | inkscape:pageopacity="0.0" | ||
22 | inkscape:pagecheckerboard="0" | ||
23 | inkscape:deskcolor="#d1d1d1" | ||
24 | inkscape:zoom="16.333333" | ||
25 | inkscape:cx="10.867347" | ||
26 | inkscape:cy="7.0714286" | ||
27 | inkscape:window-width="1378" | ||
28 | inkscape:window-height="1032" | ||
29 | inkscape:window-x="538" | ||
30 | inkscape:window-y="0" | ||
31 | inkscape:window-maximized="1" | ||
32 | inkscape:current-layer="svg1" /> | ||
33 | <path | ||
34 | d="M9 1V3H15V1H17V3H21C21.5523 3 22 3.44772 22 4V20C22 20.5523 21.5523 21 21 21H3C2.44772 21 2 20.5523 2 20V4C2 3.44772 2.44772 3 3 3H7V1H9ZM20 11H4V19H20V11ZM7 5H4V9H20V5H17V7H15V5H9V7H7V5Z" | ||
35 | id="path1" /> | ||
36 | <path | ||
37 | style="fill:#dd3333;stroke-width:0.2314;fill-opacity:1" | ||
38 | d="M 2.6632967,20.900914 C 2.5791303,20.867183 2.4456452,20.779249 2.3666632,20.705506 2.0328996,20.393883 2.0510204,20.894721 2.0510204,11.981482 V 3.7221898 L 2.1887755,3.5197856 C 2.2645408,3.4084632 2.4042737,3.2597461 2.4992931,3.1893029 2.6658093,3.0658553 2.7504798,3.0605903 4.8411299,3.0436855 L 7.0102041,3.0261465 V 2.0181753 1.0102041 h 0.9795918 0.9795919 v 1.0102041 1.010204 H 12 15.030612 V 2.0204082 1.0102041 h 0.979592 0.979592 v 1.0079712 1.0079712 l 2.169074,0.017539 c 2.09065,0.016905 2.175321,0.02217 2.341837,0.1456174 0.09502,0.070443 0.234752,0.2191603 0.310518,0.3304827 L 21.94898,3.7221898 V 12 20.27781 l -0.137755,0.202405 c -0.07577,0.111322 -0.215538,0.260039 -0.310605,0.330482 l -0.17285,0.128079 -9.255722,0.01173 c -6.0661846,0.0077 -9.3084558,-0.0094 -9.4087513,-0.0496 z M 20.05102,15 V 10.989796 H 12 3.9489796 V 15 19.010204 H 12 20.05102 Z m 0,-7.9897959 V 4.9897959 H 18.520408 16.989796 V 5.9693878 6.9489796 H 16.010204 15.030612 V 5.9693878 4.9897959 H 12 8.9693878 V 5.9693878 6.9489796 H 7.9897959 7.0102041 V 5.9693878 4.9897959 H 5.4795918 3.9489796 V 7.0102041 9.0306123 H 12 20.05102 Z" | ||
39 | id="path2" /> | ||
40 | </svg> | ||
diff --git a/public/assets/delete-bin-nb.svg b/public/assets/delete-bin-nb.svg new file mode 100644 index 0000000..a71c4d8 --- /dev/null +++ b/public/assets/delete-bin-nb.svg | |||
@@ -0,0 +1 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M17 6H22V8H20V21C20 21.5523 19.5523 22 19 22H5C4.44772 22 4 21.5523 4 21V8H2V6H7V3C7 2.44772 7.44772 2 8 2H16C16.5523 2 17 2.44772 17 3V6ZM18 8H6V20H18V8ZM9 11H11V17H9V11ZM13 11H15V17H13V11ZM9 4V6H15V4H9Z"></path></svg> \ No newline at end of file | |||
diff --git a/public/assets/delete-bin.svg b/public/assets/delete-bin.svg new file mode 100644 index 0000000..d534c53 --- /dev/null +++ b/public/assets/delete-bin.svg | |||
@@ -0,0 +1,48 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <svg | ||
3 | viewBox="0 0 24 24" | ||
4 | fill="currentColor" | ||
5 | version="1.1" | ||
6 | id="svg1" | ||
7 | sodipodi:docname="delete-bin.svg" | ||
8 | inkscape:version="1.4 (e7c3feb100, 2024-10-09)" | ||
9 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
11 | xmlns="http://www.w3.org/2000/svg" | ||
12 | xmlns:svg="http://www.w3.org/2000/svg"> | ||
13 | <defs | ||
14 | id="defs1" /> | ||
15 | <sodipodi:namedview | ||
16 | id="namedview1" | ||
17 | pagecolor="#ffffff" | ||
18 | bordercolor="#000000" | ||
19 | borderopacity="0.25" | ||
20 | inkscape:showpageshadow="2" | ||
21 | inkscape:pageopacity="0.0" | ||
22 | inkscape:pagecheckerboard="0" | ||
23 | inkscape:deskcolor="#d1d1d1" | ||
24 | inkscape:zoom="5.7747054" | ||
25 | inkscape:cx="8.0523589" | ||
26 | inkscape:cy="13.940105" | ||
27 | inkscape:window-width="956" | ||
28 | inkscape:window-height="1032" | ||
29 | inkscape:window-x="960" | ||
30 | inkscape:window-y="0" | ||
31 | inkscape:window-maximized="1" | ||
32 | inkscape:current-layer="svg1" /> | ||
33 | <path | ||
34 | d="M17 6H22V8H20V21C20 21.5523 19.5523 22 19 22H5C4.44772 22 4 21.5523 4 21V8H2V6H7V3C7 2.44772 7.44772 2 8 2H16C16.5523 2 17 2.44772 17 3V6ZM18 8H6V20H18V8ZM9 11H11V17H9V11ZM13 11H15V17H13V11ZM9 4V6H15V4H9Z" | ||
35 | id="path1" /> | ||
36 | <path | ||
37 | style="fill:#dd3333;stroke:#dd3333;stroke-width:0.654497" | ||
38 | d="M 4.428179,21.633757 C 4.1901151,21.395692 4.1560562,20.517904 4.1560562,14.620412 V 7.8791899 H 3.1170421 2.0780281 V 7.0133448 6.1474998 H 4.5889787 7.0999293 V 4.4910099 c 0,-0.9110696 0.080668,-1.8072192 0.1792618,-1.9914437 0.1701493,-0.317927 0.4073212,-0.3349536 4.6657439,-0.3349536 5.369132,0 5.025628,-0.1624223 5.025628,2.3763127 v 1.6065745 h 2.51095 2.510951 v 0.865845 0.8658451 H 20.95345 19.914436 v 6.7267521 c 0,6.296846 -0.02024,6.745069 -0.316681,7.013345 -0.28412,0.257124 -1.066299,0.286592 -7.607067,0.286592 -6.396732,0 -7.3237431,-0.03336 -7.562509,-0.272122 z M 18.009577,13.940105 V 7.8791899 H 11.948662 5.8877463 v 6.0609151 6.060915 h 6.0609157 6.060915 z M 15.065704,5.0219012 V 3.8963027 H 11.948662 8.8316194 v 1.0101525 c 0,0.555584 0.051951,1.0621033 0.1154461,1.1255985 0.063495,0.063495 1.4661645,0.1154461 3.1170425,0.1154461 h 3.001596 z" | ||
39 | id="path2" /> | ||
40 | <path | ||
41 | style="fill:#dd3333;stroke:#dd3333;stroke-width:0.654497" | ||
42 | d="m 9.0047884,13.940105 v -2.943873 h 0.9524295 0.9524291 v 2.943873 2.943873 H 9.9572179 9.0047884 Z" | ||
43 | id="path3" /> | ||
44 | <path | ||
45 | style="fill:#dd3333;stroke:#dd3333;stroke-width:0.654497" | ||
46 | d="m 13.160845,13.940105 v -2.943873 h 0.865845 0.865845 v 2.943873 2.943873 H 14.02669 13.160845 Z" | ||
47 | id="path4" /> | ||
48 | </svg> | ||
diff --git a/public/assets/edit-nb.svg b/public/assets/edit-nb.svg new file mode 100644 index 0000000..f57a63e --- /dev/null +++ b/public/assets/edit-nb.svg | |||
@@ -0,0 +1 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M6.41421 15.89L16.5563 5.74785L15.1421 4.33363L5 14.4758V15.89H6.41421ZM7.24264 17.89H3V13.6473L14.435 2.21231C14.8256 1.82179 15.4587 1.82179 15.8492 2.21231L18.6777 5.04074C19.0682 5.43126 19.0682 6.06443 18.6777 6.45495L7.24264 17.89ZM3 19.89H21V21.89H3V19.89Z"></path></svg> \ No newline at end of file | |||
diff --git a/public/assets/edit.svg b/public/assets/edit.svg new file mode 100644 index 0000000..2c1fd10 --- /dev/null +++ b/public/assets/edit.svg | |||
@@ -0,0 +1,44 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <svg | ||
3 | viewBox="0 0 24 24" | ||
4 | fill="currentColor" | ||
5 | version="1.1" | ||
6 | id="svg1" | ||
7 | sodipodi:docname="edit.svg" | ||
8 | inkscape:version="1.4 (e7c3feb100, 2024-10-09)" | ||
9 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
11 | xmlns="http://www.w3.org/2000/svg" | ||
12 | xmlns:svg="http://www.w3.org/2000/svg"> | ||
13 | <defs | ||
14 | id="defs1" /> | ||
15 | <sodipodi:namedview | ||
16 | id="namedview1" | ||
17 | pagecolor="#ffffff" | ||
18 | bordercolor="#000000" | ||
19 | borderopacity="0.25" | ||
20 | inkscape:showpageshadow="2" | ||
21 | inkscape:pageopacity="0.0" | ||
22 | inkscape:pagecheckerboard="0" | ||
23 | inkscape:deskcolor="#d1d1d1" | ||
24 | inkscape:zoom="8.1666667" | ||
25 | inkscape:cx="18.979592" | ||
26 | inkscape:cy="21.734694" | ||
27 | inkscape:window-width="1347" | ||
28 | inkscape:window-height="1032" | ||
29 | inkscape:window-x="569" | ||
30 | inkscape:window-y="0" | ||
31 | inkscape:window-maximized="1" | ||
32 | inkscape:current-layer="svg1" /> | ||
33 | <path | ||
34 | d="M6.41421 15.89L16.5563 5.74785L15.1421 4.33363L5 14.4758V15.89H6.41421ZM7.24264 17.89H3V13.6473L14.435 2.21231C14.8256 1.82179 15.4587 1.82179 15.8492 2.21231L18.6777 5.04074C19.0682 5.43126 19.0682 6.06443 18.6777 6.45495L7.24264 17.89ZM3 19.89H21V21.89H3V19.89Z" | ||
35 | id="path1" /> | ||
36 | <path | ||
37 | style="fill:#dd3333;stroke:#dd3333;stroke-width:0.462799" | ||
38 | d="M 3.0612245,20.877551 V 19.897959 H 12 20.938776 v 0.979592 0.979592 H 12 3.0612245 Z" | ||
39 | id="path2" /> | ||
40 | <path | ||
41 | style="fill:#dd3333;stroke:#dd3333;stroke-width:0.462799" | ||
42 | d="M 3.0612245,15.764827 V 13.713329 L 8.9086367,7.8668687 c 5.4509273,-5.45004 5.8760063,-5.8464605 6.2691283,-5.8464605 0.378835,0 0.587344,0.1671659 2.050548,1.6439672 1.433032,1.4463495 1.62883,1.6928413 1.62883,2.050547 0,0.3731507 -0.480696,0.8873539 -5.846461,6.2539916 l -5.84646,5.847413 H 5.1127232 3.0612245 Z M 11.538908,10.869261 16.650326,5.7589307 15.888432,4.9902051 15.12654,4.2214796 10.01225,9.3346829 4.8979592,14.447886 v 0.765854 0.765852 h 0.7647659 0.7647658 z" | ||
43 | id="path3" /> | ||
44 | </svg> | ||
diff --git a/public/assets/facebook-nb.svg b/public/assets/facebook-nb.svg new file mode 100644 index 0000000..543537c --- /dev/null +++ b/public/assets/facebook-nb.svg | |||
@@ -0,0 +1 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M12.001 2C6.47813 2 2.00098 6.47715 2.00098 12C2.00098 16.9913 5.65783 21.1283 10.4385 21.8785V14.8906H7.89941V12H10.4385V9.79688C10.4385 7.29063 11.9314 5.90625 14.2156 5.90625C15.3097 5.90625 16.4541 6.10156 16.4541 6.10156V8.5625H15.1931C13.9509 8.5625 13.5635 9.33334 13.5635 10.1242V12H16.3369L15.8936 14.8906H13.5635V21.8785C18.3441 21.1283 22.001 16.9913 22.001 12C22.001 6.47715 17.5238 2 12.001 2Z"></path></svg> \ No newline at end of file | |||
diff --git a/public/assets/facebook.svg b/public/assets/facebook.svg new file mode 100644 index 0000000..d09d296 --- /dev/null +++ b/public/assets/facebook.svg | |||
@@ -0,0 +1,37 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <svg | ||
3 | viewBox="0 0 24 24" | ||
4 | fill="currentColor" | ||
5 | version="1.1" | ||
6 | id="svg1" | ||
7 | sodipodi:docname="facebook.svg" | ||
8 | inkscape:version="1.4 (e7c3feb100, 2024-10-09)" | ||
9 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
11 | xmlns="http://www.w3.org/2000/svg" | ||
12 | xmlns:svg="http://www.w3.org/2000/svg"> | ||
13 | <defs | ||
14 | id="defs1" /> | ||
15 | <sodipodi:namedview | ||
16 | id="namedview1" | ||
17 | pagecolor="#ffffff" | ||
18 | bordercolor="#000000" | ||
19 | borderopacity="0.25" | ||
20 | inkscape:showpageshadow="2" | ||
21 | inkscape:pageopacity="0.0" | ||
22 | inkscape:pagecheckerboard="0" | ||
23 | inkscape:deskcolor="#d1d1d1" | ||
24 | inkscape:zoom="6.8333333" | ||
25 | inkscape:cx="12" | ||
26 | inkscape:cy="11.926829" | ||
27 | inkscape:window-width="1374" | ||
28 | inkscape:window-height="1032" | ||
29 | inkscape:window-x="542" | ||
30 | inkscape:window-y="0" | ||
31 | inkscape:window-maximized="1" | ||
32 | inkscape:current-layer="svg1" /> | ||
33 | <path | ||
34 | d="M12.001 2C6.47813 2 2.00098 6.47715 2.00098 12C2.00098 16.9913 5.65783 21.1283 10.4385 21.8785V14.8906H7.89941V12H10.4385V9.79688C10.4385 7.29063 11.9314 5.90625 14.2156 5.90625C15.3097 5.90625 16.4541 6.10156 16.4541 6.10156V8.5625H15.1931C13.9509 8.5625 13.5635 9.33334 13.5635 10.1242V12H16.3369L15.8936 14.8906H13.5635V21.8785C18.3441 21.1283 22.001 16.9913 22.001 12C22.001 6.47715 17.5238 2 12.001 2Z" | ||
35 | id="path1" | ||
36 | style="fill:#dd3333;fill-opacity:1;stroke:none;stroke-opacity:1" /> | ||
37 | </svg> | ||
diff --git a/public/assets/favicon48x48.png b/public/assets/favicon48x48.png new file mode 100644 index 0000000..9825db1 --- /dev/null +++ b/public/assets/favicon48x48.png | |||
Binary files differ | |||
diff --git a/public/assets/fond-piscine.jpg b/public/assets/fond-piscine.jpg new file mode 100644 index 0000000..239d95d --- /dev/null +++ b/public/assets/fond-piscine.jpg | |||
Binary files differ | |||
diff --git a/public/assets/home.svg b/public/assets/home.svg new file mode 100644 index 0000000..d400c4a --- /dev/null +++ b/public/assets/home.svg | |||
@@ -0,0 +1 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M19 21H5C4.44772 21 4 20.5523 4 20V11L1 11L11.3273 1.6115C11.7087 1.26475 12.2913 1.26475 12.6727 1.6115L23 11L20 11V20C20 20.5523 19.5523 21 19 21ZM6 19H18V9.15745L12 3.7029L6 9.15745V19Z"></path></svg> \ No newline at end of file | |||
diff --git a/public/assets/instagram-nb.svg b/public/assets/instagram-nb.svg new file mode 100644 index 0000000..c51ee39 --- /dev/null +++ b/public/assets/instagram-nb.svg | |||
@@ -0,0 +1 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M12.001 9C10.3436 9 9.00098 10.3431 9.00098 12C9.00098 13.6573 10.3441 15 12.001 15C13.6583 15 15.001 13.6569 15.001 12C15.001 10.3427 13.6579 9 12.001 9ZM12.001 7C14.7614 7 17.001 9.2371 17.001 12C17.001 14.7605 14.7639 17 12.001 17C9.24051 17 7.00098 14.7629 7.00098 12C7.00098 9.23953 9.23808 7 12.001 7ZM18.501 6.74915C18.501 7.43926 17.9402 7.99917 17.251 7.99917C16.5609 7.99917 16.001 7.4384 16.001 6.74915C16.001 6.0599 16.5617 5.5 17.251 5.5C17.9393 5.49913 18.501 6.0599 18.501 6.74915ZM12.001 4C9.5265 4 9.12318 4.00655 7.97227 4.0578C7.18815 4.09461 6.66253 4.20007 6.17416 4.38967C5.74016 4.55799 5.42709 4.75898 5.09352 5.09255C4.75867 5.4274 4.55804 5.73963 4.3904 6.17383C4.20036 6.66332 4.09493 7.18811 4.05878 7.97115C4.00703 9.0752 4.00098 9.46105 4.00098 12C4.00098 14.4745 4.00753 14.8778 4.05877 16.0286C4.0956 16.8124 4.2012 17.3388 4.39034 17.826C4.5591 18.2606 4.7605 18.5744 5.09246 18.9064C5.42863 19.2421 5.74179 19.4434 6.17187 19.6094C6.66619 19.8005 7.19148 19.9061 7.97212 19.9422C9.07618 19.9939 9.46203 20 12.001 20C14.4755 20 14.8788 19.9934 16.0296 19.9422C16.8117 19.9055 17.3385 19.7996 17.827 19.6106C18.2604 19.4423 18.5752 19.2402 18.9074 18.9085C19.2436 18.5718 19.4445 18.2594 19.6107 17.8283C19.8013 17.3358 19.9071 16.8098 19.9432 16.0289C19.9949 14.9248 20.001 14.5389 20.001 12C20.001 9.52552 19.9944 9.12221 19.9432 7.97137C19.9064 7.18906 19.8005 6.66149 19.6113 6.17318C19.4434 5.74038 19.2417 5.42635 18.9084 5.09255C18.573 4.75715 18.2616 4.55693 17.8271 4.38942C17.338 4.19954 16.8124 4.09396 16.0298 4.05781C14.9258 4.00605 14.5399 4 12.001 4ZM12.001 2C14.7176 2 15.0568 2.01 16.1235 2.06C17.1876 2.10917 17.9135 2.2775 18.551 2.525C19.2101 2.77917 19.7668 3.1225 20.3226 3.67833C20.8776 4.23417 21.221 4.7925 21.476 5.45C21.7226 6.08667 21.891 6.81333 21.941 7.8775C21.9885 8.94417 22.001 9.28333 22.001 12C22.001 14.7167 21.991 15.0558 21.941 16.1225C21.8918 17.1867 21.7226 17.9125 21.476 18.55C21.2218 19.2092 20.8776 19.7658 20.3226 20.3217C19.7668 20.8767 19.2076 21.22 18.551 21.475C17.9135 21.7217 17.1876 21.89 16.1235 21.94C15.0568 21.9875 14.7176 22 12.001 22C9.28431 22 8.94514 21.99 7.87848 21.94C6.81431 21.8908 6.08931 21.7217 5.45098 21.475C4.79264 21.2208 4.23514 20.8767 3.67931 20.3217C3.12348 19.7658 2.78098 19.2067 2.52598 18.55C2.27848 17.9125 2.11098 17.1867 2.06098 16.1225C2.01348 15.0558 2.00098 14.7167 2.00098 12C2.00098 9.28333 2.01098 8.94417 2.06098 7.8775C2.11014 6.8125 2.27848 6.0875 2.52598 5.45C2.78014 4.79167 3.12348 4.23417 3.67931 3.67833C4.23514 3.1225 4.79348 2.78 5.45098 2.525C6.08848 2.2775 6.81348 2.11 7.87848 2.06C8.94514 2.0125 9.28431 2 12.001 2Z"></path></svg> \ No newline at end of file | |||
diff --git a/public/assets/instagram.svg b/public/assets/instagram.svg new file mode 100644 index 0000000..feb8ae8 --- /dev/null +++ b/public/assets/instagram.svg | |||
@@ -0,0 +1,37 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <svg | ||
3 | viewBox="0 0 24 24" | ||
4 | fill="currentColor" | ||
5 | version="1.1" | ||
6 | id="svg1" | ||
7 | sodipodi:docname="instagram.svg" | ||
8 | inkscape:version="1.4 (e7c3feb100, 2024-10-09)" | ||
9 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
11 | xmlns="http://www.w3.org/2000/svg" | ||
12 | xmlns:svg="http://www.w3.org/2000/svg"> | ||
13 | <defs | ||
14 | id="defs1" /> | ||
15 | <sodipodi:namedview | ||
16 | id="namedview1" | ||
17 | pagecolor="#ffffff" | ||
18 | bordercolor="#000000" | ||
19 | borderopacity="0.25" | ||
20 | inkscape:showpageshadow="2" | ||
21 | inkscape:pageopacity="0.0" | ||
22 | inkscape:pagecheckerboard="0" | ||
23 | inkscape:deskcolor="#d1d1d1" | ||
24 | inkscape:zoom="20.166667" | ||
25 | inkscape:cx="12" | ||
26 | inkscape:cy="12.024793" | ||
27 | inkscape:window-width="1391" | ||
28 | inkscape:window-height="1032" | ||
29 | inkscape:window-x="525" | ||
30 | inkscape:window-y="0" | ||
31 | inkscape:window-maximized="1" | ||
32 | inkscape:current-layer="svg1" /> | ||
33 | <path | ||
34 | d="M12.001 9C10.3436 9 9.00098 10.3431 9.00098 12C9.00098 13.6573 10.3441 15 12.001 15C13.6583 15 15.001 13.6569 15.001 12C15.001 10.3427 13.6579 9 12.001 9ZM12.001 7C14.7614 7 17.001 9.2371 17.001 12C17.001 14.7605 14.7639 17 12.001 17C9.24051 17 7.00098 14.7629 7.00098 12C7.00098 9.23953 9.23808 7 12.001 7ZM18.501 6.74915C18.501 7.43926 17.9402 7.99917 17.251 7.99917C16.5609 7.99917 16.001 7.4384 16.001 6.74915C16.001 6.0599 16.5617 5.5 17.251 5.5C17.9393 5.49913 18.501 6.0599 18.501 6.74915ZM12.001 4C9.5265 4 9.12318 4.00655 7.97227 4.0578C7.18815 4.09461 6.66253 4.20007 6.17416 4.38967C5.74016 4.55799 5.42709 4.75898 5.09352 5.09255C4.75867 5.4274 4.55804 5.73963 4.3904 6.17383C4.20036 6.66332 4.09493 7.18811 4.05878 7.97115C4.00703 9.0752 4.00098 9.46105 4.00098 12C4.00098 14.4745 4.00753 14.8778 4.05877 16.0286C4.0956 16.8124 4.2012 17.3388 4.39034 17.826C4.5591 18.2606 4.7605 18.5744 5.09246 18.9064C5.42863 19.2421 5.74179 19.4434 6.17187 19.6094C6.66619 19.8005 7.19148 19.9061 7.97212 19.9422C9.07618 19.9939 9.46203 20 12.001 20C14.4755 20 14.8788 19.9934 16.0296 19.9422C16.8117 19.9055 17.3385 19.7996 17.827 19.6106C18.2604 19.4423 18.5752 19.2402 18.9074 18.9085C19.2436 18.5718 19.4445 18.2594 19.6107 17.8283C19.8013 17.3358 19.9071 16.8098 19.9432 16.0289C19.9949 14.9248 20.001 14.5389 20.001 12C20.001 9.52552 19.9944 9.12221 19.9432 7.97137C19.9064 7.18906 19.8005 6.66149 19.6113 6.17318C19.4434 5.74038 19.2417 5.42635 18.9084 5.09255C18.573 4.75715 18.2616 4.55693 17.8271 4.38942C17.338 4.19954 16.8124 4.09396 16.0298 4.05781C14.9258 4.00605 14.5399 4 12.001 4ZM12.001 2C14.7176 2 15.0568 2.01 16.1235 2.06C17.1876 2.10917 17.9135 2.2775 18.551 2.525C19.2101 2.77917 19.7668 3.1225 20.3226 3.67833C20.8776 4.23417 21.221 4.7925 21.476 5.45C21.7226 6.08667 21.891 6.81333 21.941 7.8775C21.9885 8.94417 22.001 9.28333 22.001 12C22.001 14.7167 21.991 15.0558 21.941 16.1225C21.8918 17.1867 21.7226 17.9125 21.476 18.55C21.2218 19.2092 20.8776 19.7658 20.3226 20.3217C19.7668 20.8767 19.2076 21.22 18.551 21.475C17.9135 21.7217 17.1876 21.89 16.1235 21.94C15.0568 21.9875 14.7176 22 12.001 22C9.28431 22 8.94514 21.99 7.87848 21.94C6.81431 21.8908 6.08931 21.7217 5.45098 21.475C4.79264 21.2208 4.23514 20.8767 3.67931 20.3217C3.12348 19.7658 2.78098 19.2067 2.52598 18.55C2.27848 17.9125 2.11098 17.1867 2.06098 16.1225C2.01348 15.0558 2.00098 14.7167 2.00098 12C2.00098 9.28333 2.01098 8.94417 2.06098 7.8775C2.11014 6.8125 2.27848 6.0875 2.52598 5.45C2.78014 4.79167 3.12348 4.23417 3.67931 3.67833C4.23514 3.1225 4.79348 2.78 5.45098 2.525C6.08848 2.2775 6.81348 2.11 7.87848 2.06C8.94514 2.0125 9.28431 2 12.001 2Z" | ||
35 | id="path1" | ||
36 | style="fill:#dd3333;fill-opacity:1" /> | ||
37 | </svg> | ||
diff --git a/public/assets/logo-120x75.jpg b/public/assets/logo-120x75.jpg new file mode 100644 index 0000000..b58a7a6 --- /dev/null +++ b/public/assets/logo-120x75.jpg | |||
Binary files differ | |||
diff --git a/public/assets/logo-150x94.jpg b/public/assets/logo-150x94.jpg new file mode 100644 index 0000000..67ec6cc --- /dev/null +++ b/public/assets/logo-150x94.jpg | |||
Binary files differ | |||
diff --git a/public/assets/logo-fond-bleu.png b/public/assets/logo-fond-bleu.png new file mode 100644 index 0000000..f51ac9c --- /dev/null +++ b/public/assets/logo-fond-bleu.png | |||
Binary files differ | |||
diff --git a/public/assets/logo2.jpg b/public/assets/logo2.jpg new file mode 100644 index 0000000..39c03bd --- /dev/null +++ b/public/assets/logo2.jpg | |||
Binary files differ | |||
diff --git a/public/assets/perdu.jpg b/public/assets/perdu.jpg new file mode 100644 index 0000000..043a97a --- /dev/null +++ b/public/assets/perdu.jpg | |||
Binary files differ | |||
diff --git a/public/assets/share-nb.svg b/public/assets/share-nb.svg new file mode 100644 index 0000000..f58f129 --- /dev/null +++ b/public/assets/share-nb.svg | |||
@@ -0,0 +1 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M13 14H11C7.54202 14 4.53953 15.9502 3.03239 18.8107C3.01093 18.5433 3 18.2729 3 18C3 12.4772 7.47715 8 13 8V2.5L23.5 11L13 19.5V14ZM11 12H15V15.3078L20.3214 11L15 6.69224V10H13C10.5795 10 8.41011 11.0749 6.94312 12.7735C8.20873 12.2714 9.58041 12 11 12Z"></path></svg> \ No newline at end of file | |||
diff --git a/public/assets/share.svg b/public/assets/share.svg new file mode 100644 index 0000000..e053051 --- /dev/null +++ b/public/assets/share.svg | |||
@@ -0,0 +1,40 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <svg | ||
3 | viewBox="0 0 24 24" | ||
4 | fill="currentColor" | ||
5 | version="1.1" | ||
6 | id="svg1" | ||
7 | sodipodi:docname="share-forward.svg" | ||
8 | inkscape:version="1.4 (e7c3feb100, 2024-10-09)" | ||
9 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
11 | xmlns="http://www.w3.org/2000/svg" | ||
12 | xmlns:svg="http://www.w3.org/2000/svg"> | ||
13 | <defs | ||
14 | id="defs1" /> | ||
15 | <sodipodi:namedview | ||
16 | id="namedview1" | ||
17 | pagecolor="#ffffff" | ||
18 | bordercolor="#000000" | ||
19 | borderopacity="0.25" | ||
20 | inkscape:showpageshadow="2" | ||
21 | inkscape:pageopacity="0.0" | ||
22 | inkscape:pagecheckerboard="0" | ||
23 | inkscape:deskcolor="#d1d1d1" | ||
24 | inkscape:zoom="5.3333333" | ||
25 | inkscape:cx="18.46875" | ||
26 | inkscape:cy="16.03125" | ||
27 | inkscape:window-width="956" | ||
28 | inkscape:window-height="1032" | ||
29 | inkscape:window-x="960" | ||
30 | inkscape:window-y="0" | ||
31 | inkscape:window-maximized="1" | ||
32 | inkscape:current-layer="svg1" /> | ||
33 | <path | ||
34 | d="M13 14H11C7.54202 14 4.53953 15.9502 3.03239 18.8107C3.01093 18.5433 3 18.2729 3 18C3 12.4772 7.47715 8 13 8V2.5L23.5 11L13 19.5V14ZM11 12H15V15.3078L20.3214 11L15 6.69224V10H13C10.5795 10 8.41011 11.0749 6.94312 12.7735C8.20873 12.2714 9.58041 12 11 12Z" | ||
35 | id="path1" /> | ||
36 | <path | ||
37 | style="fill:#dd3333;stroke:#dd3333;stroke-width:0.708661" | ||
38 | d="m 13.125,16.62281 v -2.65406 l -1.734375,0.0046 c -3.1289994,0.0083 -4.7715187,0.662267 -6.84375,2.72496 L 3.1875,18.051411 3.1920836,17.275706 C 3.2079642,14.588168 5.033385,11.457683 7.5641723,9.7778419 8.8054939,8.9538996 11.118995,8.15625 12.267434,8.15625 H 13.125 V 5.5156251 c 0,-1.4523438 0.07229,-2.6125001 0.160633,-2.5781251 0.344223,0.1339326 9.936632,7.944961 9.904618,8.065257 -0.0187,0.07027 -2.143376,1.831888 -4.721501,3.914713 -2.578125,2.082826 -4.835156,3.915756 -5.015625,4.073178 C 13.142599,19.261519 13.125,19.134524 13.125,16.62281 Z m 7.253039,-5.611275 c 0.01886,-0.07509 -1.162391,-1.0943592 -2.625,-2.2650333 L 15.09375,6.6180036 15.039575,8.2308767 14.9854,9.84375 13.914575,9.844836 c -1.658785,0.00168 -3.170519,0.311395 -4.4246483,0.906488 -1.150183,0.545771 -2.7354857,1.775452 -2.5436777,1.97307 0.056375,0.05808 0.520437,-0.02888 1.03125,-0.193243 0.6245522,-0.200964 1.9267104,-0.328748 3.975626,-0.390138 L 15,12.049721 v 1.702541 1.70254 l 2.671875,-2.153366 c 1.469531,-1.184352 2.687305,-2.214808 2.706164,-2.289901 z" | ||
39 | id="path2" /> | ||
40 | </svg> | ||
diff --git a/public/css/body.css b/public/css/body.css new file mode 100644 index 0000000..87f71f2 --- /dev/null +++ b/public/css/body.css | |||
@@ -0,0 +1,39 @@ | |||
1 | body | ||
2 | { | ||
3 | margin: auto; | ||
4 | max-width: 1200px; | ||
5 | /*width: 90%;*/ | ||
6 | font-family: sans; | ||
7 | background-color: #0cceec; | ||
8 | } | ||
9 | |||
10 | #bloc_page | ||
11 | {} | ||
12 | |||
13 | |||
14 | .infobulle | ||
15 | { | ||
16 | /*text-decoration: none;*/ | ||
17 | /* évite que l'infobulle ne se retrouve dans un coin de l'écran */ | ||
18 | /*position:relative;*/ | ||
19 | /* block -> hauteur fixe pour vertical-align dans l'image */ | ||
20 | /*display: inline-block;*/ | ||
21 | |||
22 | } | ||
23 | /*.infobulle button | ||
24 | { | ||
25 | |||
26 | display: none; | ||
27 | position: absolute; | ||
28 | bottom: 35px; | ||
29 | left: 10px; | ||
30 | } | ||
31 | .infobulle:hover button | ||
32 | { | ||
33 | display: inline; | ||
34 | |||
35 | } | ||
36 | .infobulle img | ||
37 | { | ||
38 | vertical-align: middle; | ||
39 | }*/ \ No newline at end of file | ||
diff --git a/public/css/foot.css b/public/css/foot.css new file mode 100644 index 0000000..ef3291d --- /dev/null +++ b/public/css/foot.css | |||
@@ -0,0 +1,120 @@ | |||
1 | /*-- pied de page --*/ | ||
2 | footer | ||
3 | { | ||
4 | /*background-color: #279dc177;*/ | ||
5 | /*background-color: #13aff077;*/ | ||
6 | background-color: #B7E9FE; | ||
7 | /*width: 1200px;*/ | ||
8 | margin: auto; | ||
9 | |||
10 | } | ||
11 | footer > div | ||
12 | { | ||
13 | margin: auto; | ||
14 | max-width: 1200px; | ||
15 | display: flex; | ||
16 | justify-content: space-around; | ||
17 | } | ||
18 | .contact a | ||
19 | { | ||
20 | color: unset; | ||
21 | border-bottom: 3px #13aff000 solid; /* bordure invisible */ | ||
22 | } | ||
23 | .contact a:hover | ||
24 | { | ||
25 | /*background-color: #fadb11;*/ | ||
26 | text-decoration: none; | ||
27 | padding: 0 2px; | ||
28 | /*background-color: #13aff0ff; | ||
29 | border-bottom: 3px #fadb11 solid;*/ | ||
30 | background-color: #ffff00; | ||
31 | /*border-bottom: 2px #00a8f3 solid;*/ | ||
32 | border-bottom: 2px #ff1d04 solid; | ||
33 | } | ||
34 | |||
35 | |||
36 | /*-- fil d'ariane --*/ | ||
37 | .breadcrumb | ||
38 | { | ||
39 | max-width: 45%; | ||
40 | /*margin-right: 10px;*/ | ||
41 | margin: 16px 0; /* = p */ | ||
42 | list-style: none; /* retirer les puces */ | ||
43 | font-size: small; | ||
44 | text-align: right; | ||
45 | font-weight: bold; | ||
46 | } | ||
47 | .breadcrumb img | ||
48 | { | ||
49 | width: 12px; | ||
50 | vertical-align: middle; | ||
51 | } | ||
52 | .breadcrumb a img, .breadcrumb a span | ||
53 | { | ||
54 | border-bottom: 2px #13aff000 solid; | ||
55 | } | ||
56 | .breadcrumb a img:hover, .breadcrumb a span:hover | ||
57 | { | ||
58 | /*background-color: #13aff0; | ||
59 | border-bottom: 3px #fadb11 solid;*/ | ||
60 | background-color: #ffff00; | ||
61 | /*border-bottom: 2px #00a8f3 solid;*/ | ||
62 | border-bottom: 2px #ff1d04 solid; | ||
63 | } | ||
64 | /*.breadcrumb *:not(:last-child)::after | ||
65 | { | ||
66 | content: "→"; | ||
67 | display: block; | ||
68 | margin: 0 3px; | ||
69 | }*/ | ||
70 | .breadcrumb a | ||
71 | { | ||
72 | color: unset; /* ne plus hériter */ | ||
73 | text-decoration: none; | ||
74 | } | ||
75 | |||
76 | /* zone admin */ | ||
77 | .logged_out | ||
78 | { | ||
79 | /*display: none;*/ | ||
80 | justify-content: start; | ||
81 | } | ||
82 | .logged_out a | ||
83 | { | ||
84 | color: black; | ||
85 | text-decoration: none; | ||
86 | } | ||
87 | .empty_admin_zone | ||
88 | { | ||
89 | height: 32px; | ||
90 | } | ||
91 | .logged_in | ||
92 | { | ||
93 | height: 32px; | ||
94 | width: 1200px; | ||
95 | margin: auto; | ||
96 | background-color: #ffff00; | ||
97 | position: fixed; | ||
98 | bottom: 0px; | ||
99 | } | ||
100 | .logged_in > p | ||
101 | { | ||
102 | margin: 5px 0; | ||
103 | display: flex; | ||
104 | justify-content: space-around; | ||
105 | } | ||
106 | .logged_in button | ||
107 | { | ||
108 | margin-left: 5px; | ||
109 | color: #ff1d04; | ||
110 | font-size: medium; | ||
111 | border: lightgrey 2px outset; | ||
112 | border-radius: 4px; | ||
113 | background-color: white; | ||
114 | } | ||
115 | .logged_in button:hover | ||
116 | { | ||
117 | cursor: pointer; /* curseur qui touche du doigt */ | ||
118 | background-color: #ffff00; | ||
119 | border-radius: 4px; | ||
120 | } \ No newline at end of file | ||
diff --git a/public/css/head.css b/public/css/head.css new file mode 100644 index 0000000..b8d4c93 --- /dev/null +++ b/public/css/head.css | |||
@@ -0,0 +1,59 @@ | |||
1 | header | ||
2 | { | ||
3 | text-align: center; | ||
4 | /*padding-top: 5px;*/ | ||
5 | /*padding-bottom: 10px;*/ | ||
6 | background-image: url('../assets/fond-piscine.jpg'); | ||
7 | background-size: cover; /* largeur du bloc_page */ | ||
8 | } | ||
9 | header > div | ||
10 | { | ||
11 | /*margin: auto;*/ | ||
12 | /*max-width: 1200px;*/ | ||
13 | display: flex; | ||
14 | /*align-items: center;*/ /* conflit possible avec .social align-self */ | ||
15 | justify-content: space-around; | ||
16 | } | ||
17 | .header-content | ||
18 | { | ||
19 | padding: 20px 0; | ||
20 | } | ||
21 | .site_title | ||
22 | { | ||
23 | background-color: #ffffff7f; | ||
24 | border-radius: 10px; | ||
25 | } | ||
26 | header h1 | ||
27 | { | ||
28 | font-size: x-large; | ||
29 | margin: 10px; | ||
30 | } | ||
31 | header h2 | ||
32 | { | ||
33 | font-size: medium; /* défaut = x-large */ | ||
34 | margin: 10px; | ||
35 | } | ||
36 | header img | ||
37 | { | ||
38 | vertical-align: bottom; /* supprime espace sous l'image */ | ||
39 | } | ||
40 | header a | ||
41 | { | ||
42 | color: unset; /* ne plus hériter */ | ||
43 | text-decoration: none; | ||
44 | } | ||
45 | .social | ||
46 | { | ||
47 | align-self: end; | ||
48 | } | ||
49 | .social img | ||
50 | { | ||
51 | width: 25px; | ||
52 | background-color: #ffffffb3; | ||
53 | border-radius: 10px; | ||
54 | } | ||
55 | |||
56 | .social img:hover | ||
57 | { | ||
58 | background-color: #ffff00; | ||
59 | } | ||
diff --git a/public/css/main.css b/public/css/main.css new file mode 100644 index 0000000..b38f8d9 --- /dev/null +++ b/public/css/main.css | |||
@@ -0,0 +1,110 @@ | |||
1 | main | ||
2 | { | ||
3 | margin: auto; | ||
4 | /*max-width: 1200px;*/ | ||
5 | background-color: #E3F3FF; | ||
6 | padding: 15px 0; | ||
7 | } | ||
8 | section > h3 | ||
9 | { | ||
10 | padding: 15px; | ||
11 | margin: 0; | ||
12 | text-align: center; | ||
13 | } | ||
14 | section > p /* boutons spéciaux mode admin */ | ||
15 | { | ||
16 | /*margin-left: 15px;*/ | ||
17 | } | ||
18 | .grid_columns | ||
19 | { | ||
20 | display: grid; | ||
21 | grid-template-columns: repeat(3, 1fr); | ||
22 | } | ||
23 | .galery_photos | ||
24 | { | ||
25 | display: flex; | ||
26 | flex-wrap: wrap; | ||
27 | justify-content: space-evenly; | ||
28 | } | ||
29 | .galery_photos .html_from_editor img | ||
30 | { | ||
31 | max-width: 400px; | ||
32 | max-height: 250px; | ||
33 | } | ||
34 | article | ||
35 | { | ||
36 | /*display: flex;*/ | ||
37 | background-color: white; | ||
38 | margin: 15px 15px 0 15px; | ||
39 | padding: 0 15px; | ||
40 | /*min-height: 150px;*/ | ||
41 | } | ||
42 | article .logo2 | ||
43 | { | ||
44 | vertical-align: middle; | ||
45 | max-width: 200px; | ||
46 | max-height: 200px; | ||
47 | margin-right: 15px; | ||
48 | } | ||
49 | .new_content, .article_content | ||
50 | { | ||
51 | width: 100%; | ||
52 | } | ||
53 | .new_content_text | ||
54 | { | ||
55 | max-height: 250px; | ||
56 | overflow: hidden; | ||
57 | } | ||
58 | |||
59 | article .action_icon | ||
60 | { | ||
61 | width: 24px; | ||
62 | vertical-align: middle; | ||
63 | border: white 2px solid; /* invisible */ | ||
64 | } | ||
65 | article .action_icon:hover | ||
66 | { | ||
67 | background-color: #ffff00; | ||
68 | border-radius: 4px; | ||
69 | border: lightgrey 2px outset; | ||
70 | } | ||
71 | .article_title_zone | ||
72 | { | ||
73 | display: flex; | ||
74 | justify-content: space-between; | ||
75 | } | ||
76 | .under_an_article | ||
77 | { | ||
78 | display: flex; | ||
79 | justify-content: space-between; | ||
80 | font-size: small; | ||
81 | } | ||
82 | .under_an_article p | ||
83 | { | ||
84 | margin: 5px; | ||
85 | } | ||
86 | .under_an_article img | ||
87 | { | ||
88 | width: 24px; | ||
89 | vertical-align: middle; | ||
90 | margin-right: 5px; | ||
91 | } | ||
92 | .article_admin_zone | ||
93 | { | ||
94 | display: flex; | ||
95 | justify-content: end; | ||
96 | } | ||
97 | main button | ||
98 | { | ||
99 | color: #ff1d04; | ||
100 | font-size: medium; | ||
101 | border-radius: 4px; | ||
102 | background-color: white; | ||
103 | border: lightgrey 2px outset; /* rend identiques les boutons firefox et chromium */ | ||
104 | } | ||
105 | main button:hover | ||
106 | { | ||
107 | cursor: pointer; /* curseur qui pointe du doigt */ | ||
108 | background-color: #ffff00; | ||
109 | border-radius: 4px; | ||
110 | } \ No newline at end of file | ||
diff --git a/public/css/nav.css b/public/css/nav.css new file mode 100644 index 0000000..d51c58a --- /dev/null +++ b/public/css/nav.css | |||
@@ -0,0 +1,95 @@ | |||
1 | /*-- menu principal --*/ | ||
2 | .empty_nav_zone | ||
3 | { | ||
4 | height: 33px; | ||
5 | } | ||
6 | .nav_main | ||
7 | { | ||
8 | position: fixed; | ||
9 | /*box-shadow: 3px 3px 5px #13aff0;*/ | ||
10 | border: 2px solid #13aff0; | ||
11 | top: -2px; | ||
12 | } | ||
13 | .nav_main | ||
14 | { | ||
15 | /*font-size: 90%;*/ | ||
16 | /*margin-top: 10px;*/ | ||
17 | /*margin-bottom: 10px;*/ | ||
18 | text-wrap: nowrap; | ||
19 | } | ||
20 | .nav_main > ul | ||
21 | { | ||
22 | display: flex; | ||
23 | flex-direction: row; | ||
24 | justify-content: center; | ||
25 | flex-wrap: wrap; | ||
26 | } | ||
27 | ul | ||
28 | { | ||
29 | margin: 0; | ||
30 | } | ||
31 | .nav_main ul, .nav_main li | ||
32 | { | ||
33 | list-style: none; | ||
34 | padding-left: 0; | ||
35 | } | ||
36 | .nav_main p | ||
37 | { | ||
38 | padding: 7px; | ||
39 | margin: 0; | ||
40 | background-color: #ffffffe1; /* b3 = 179 = 0.7 (x 256) */ | ||
41 | } | ||
42 | .nav_main p:hover | ||
43 | { | ||
44 | background-color: white; | ||
45 | } | ||
46 | .current > p | ||
47 | { | ||
48 | background-color: white; | ||
49 | font-weight: bold; | ||
50 | } | ||
51 | .drop-down > p::after | ||
52 | { | ||
53 | content: ' ▼'; | ||
54 | font-size: x-small; | ||
55 | } | ||
56 | |||
57 | .drop-down:hover > .sub-menu /* faire apparaître sub-menu */ | ||
58 | { | ||
59 | display: block; | ||
60 | } | ||
61 | .sub-menu | ||
62 | { | ||
63 | display: none; | ||
64 | background-color: white; | ||
65 | border-top: 3px solid #13aff0; | ||
66 | box-shadow: 1px 1px 3px black; | ||
67 | font-size: 95%; | ||
68 | } | ||
69 | /*.sub-menu p:hover*/ | ||
70 | .nav_main p:hover | ||
71 | { | ||
72 | background-color: #ffff00; | ||
73 | } | ||
74 | .drop-down .sub-menu .drop-down > p:after /* bricolage? */ | ||
75 | { | ||
76 | content: " ▶"; | ||
77 | font-size: x-small; | ||
78 | } | ||
79 | |||
80 | /* 1er sous-menu, poitionnement pour ne pas aggrandir l'élément parent */ | ||
81 | nav > ul > li > ul | ||
82 | { | ||
83 | position: absolute; /* retire du flux, positionnement par rapport à la fenêtre */ | ||
84 | } | ||
85 | /* élément du menu survolé, le positionnement relatif en fait la référence du positionnement suivant */ | ||
86 | .drop-down .sub-menu .drop-down | ||
87 | { | ||
88 | position: relative; | ||
89 | } | ||
90 | .drop-down .sub-menu .drop-down .sub-menu | ||
91 | { | ||
92 | position: absolute; /* positionnement par rapport au précédent "position" en CSS */ | ||
93 | left: 100%; | ||
94 | top: -3px; /* la bordure bleue fait 3px */ | ||
95 | } | ||
diff --git a/public/css/tinymce.css b/public/css/tinymce.css new file mode 100644 index 0000000..55639e0 --- /dev/null +++ b/public/css/tinymce.css | |||
@@ -0,0 +1,6 @@ | |||
1 | .tox-promotion{ | ||
2 | display: none; | ||
3 | } | ||
4 | .hidden{ | ||
5 | display: none; | ||
6 | } \ No newline at end of file | ||
diff --git a/public/erreur404.html b/public/erreur404.html new file mode 100644 index 0000000..3dcd6ed --- /dev/null +++ b/public/erreur404.html | |||
@@ -0,0 +1,13 @@ | |||
1 | <!DOCTYPE html> | ||
2 | <html lang="fr"> | ||
3 | <head> | ||
4 | <meta charset="utf-8"> | ||
5 | <title>erreur 404</title> | ||
6 | </head> | ||
7 | <body> | ||
8 | <h1>404 - page non trouvée</h1> | ||
9 | <p>Le lien que vous avez utilisé ne mène nulle part.<br> | ||
10 | <a href="/">Revenez à la page d'accueil</a> et utilisez le menu, vous devriez trouvez votre route.</p> | ||
11 | <img style="max-width: 800px;" src="assets/perdu.jpg"> | ||
12 | </body> | ||
13 | </html> \ No newline at end of file | ||
diff --git a/public/images-mini/DPpiscines.png b/public/images-mini/DPpiscines.png new file mode 100644 index 0000000..3cb40ba --- /dev/null +++ b/public/images-mini/DPpiscines.png | |||
Binary files differ | |||
diff --git a/public/images-mini/kerne-elagage.png b/public/images-mini/kerne-elagage.png new file mode 100644 index 0000000..5416517 --- /dev/null +++ b/public/images-mini/kerne-elagage.png | |||
Binary files differ | |||
diff --git a/public/images-mini/kerne.png b/public/images-mini/kerne.png new file mode 100644 index 0000000..eea9107 --- /dev/null +++ b/public/images-mini/kerne.png | |||
Binary files differ | |||
diff --git a/public/images-mini/mako.png b/public/images-mini/mako.png new file mode 100644 index 0000000..5ba6263 --- /dev/null +++ b/public/images-mini/mako.png | |||
Binary files differ | |||
diff --git a/public/images/DPpiscines.png b/public/images/DPpiscines.png new file mode 100644 index 0000000..3cb40ba --- /dev/null +++ b/public/images/DPpiscines.png | |||
Binary files differ | |||
diff --git a/public/images/kerne-elagage.png b/public/images/kerne-elagage.png new file mode 100644 index 0000000..5416517 --- /dev/null +++ b/public/images/kerne-elagage.png | |||
Binary files differ | |||
diff --git a/public/images/kerne.png b/public/images/kerne.png new file mode 100644 index 0000000..eea9107 --- /dev/null +++ b/public/images/kerne.png | |||
Binary files differ | |||
diff --git a/public/images/mako.png b/public/images/mako.png new file mode 100644 index 0000000..5ba6263 --- /dev/null +++ b/public/images/mako.png | |||
Binary files differ | |||
diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..37ebaf0 --- /dev/null +++ b/public/index.php | |||
@@ -0,0 +1,78 @@ | |||
1 | <?php | ||
2 | // public/index/php | ||
3 | |||
4 | /* installation de composer sur un hébergement mutualisé | ||
5 | 1. télécharger le script d'installation: | ||
6 | php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" | ||
7 | 2. installation: php composer-setup.php | ||
8 | 3. supprimer l'installateur: php -r "unlink('composer-setup.php');" | ||
9 | 4. utilisation: php composer.phar */ | ||
10 | |||
11 | declare(strict_types=1); | ||
12 | |||
13 | // -- prétraitement -- | ||
14 | // une nouvelle classe? taper: composer dump-autoload -o | ||
15 | require "../vendor/autoload.php"; | ||
16 | |||
17 | // configuration possible par l'utilisateur | ||
18 | Config::load('../config/config.ini'); | ||
19 | |||
20 | // les messages d'erreur de déploiement qu'on aime | ||
21 | require('../src/controller/installation.php'); | ||
22 | //installation(); // des mkdir et chmod, chiant en dev | ||
23 | |||
24 | // $entityManager | ||
25 | require '../src/model/doctrine-bootstrap.php'; // isDevMode est sur "true", DSN à adapter | ||
26 | |||
27 | URL::setProtocol(Config::$protocol); // utile si port autre que 80 ou 443 | ||
28 | URL::setPort(Config::$port); | ||
29 | URL::setHost(Config::$host); | ||
30 | |||
31 | //require('controller/Session.php'); | ||
32 | ini_set('session.cookie_samesite', 'Strict'); | ||
33 | ini_set('session.cookie_httponly', 'On'); | ||
34 | ini_set('session.use_strict_mode', 'On'); | ||
35 | ini_set('session.cookie_secure', 'On'); | ||
36 | session_start(); | ||
37 | $_SESSION['admin'] = !isset($_SESSION['admin']) ? false : $_SESSION['admin']; // intialisation sur faux | ||
38 | |||
39 | // login, mot de passe et captcha | ||
40 | require '../src/controller/password.php'; | ||
41 | existUsers($entityManager); | ||
42 | |||
43 | // -- navigation avec les GET -- | ||
44 | $current_page = 'accueil'; | ||
45 | if(!empty($_GET['page'])) | ||
46 | { | ||
47 | $current_page = htmlspecialchars($_GET['page']); | ||
48 | } | ||
49 | define('CURRENT_PAGE', $current_page); | ||
50 | |||
51 | // -- traitement des POST (formulaires et AJAX) -- | ||
52 | require '../src/controller/post.php'; | ||
53 | |||
54 | // id des articles | ||
55 | $id = ''; | ||
56 | if(!empty($_GET['id'])) | ||
57 | { | ||
58 | //$id = (int)$_GET['id']; // (int) = moyen basique d'éviter les injections | ||
59 | $id = Security::secureString($_GET['id']); | ||
60 | } | ||
61 | |||
62 | if(isset($_GET['action']) && $_GET['action'] === 'deconnexion') | ||
63 | { | ||
64 | disconnect($entityManager); | ||
65 | } | ||
66 | elseif(isset($_GET['action']) && $_GET['action'] === 'modif_mdp') | ||
67 | { | ||
68 | changePassword($entityManager); | ||
69 | } | ||
70 | |||
71 | // -- contrôleurs -- | ||
72 | $director = new Director($entityManager); | ||
73 | $director->makeRootNode($id); | ||
74 | $node = $director->getRootNode(); | ||
75 | |||
76 | // -- vues -- | ||
77 | $view_builder = new ViewBuilder($node); | ||
78 | echo $view_builder->render(); // et voilà! | ||
diff --git a/public/js/galery.js b/public/js/galery.js new file mode 100644 index 0000000..0be63a4 --- /dev/null +++ b/public/js/galery.js | |||
@@ -0,0 +1,4 @@ | |||
1 | function enableGaleryScroller(){ | ||
2 | // lancer photoswipe | ||
3 | // https://photoswipe.com/ | ||
4 | } \ No newline at end of file | ||
diff --git a/public/js/main.js b/public/js/main.js new file mode 100644 index 0000000..c86ec51 --- /dev/null +++ b/public/js/main.js | |||
@@ -0,0 +1,30 @@ | |||
1 | function newPassword(page, id = ''){ | ||
2 | if(id != ''){ | ||
3 | id = '&id=' + id; | ||
4 | } | ||
5 | alert('Le mot de passe a été modifié.'); | ||
6 | window.setTimeout(function(){ | ||
7 | location.href = "index.php?page=" + page + "&message=nouveau_mdp" + id; | ||
8 | }, 0); | ||
9 | } | ||
10 | |||
11 | function copyInClipBoard(link){ | ||
12 | // une balise <input> avec des attributs | ||
13 | var element = document.createElement("input"); | ||
14 | element.setAttribute("id", "copyMe"); | ||
15 | element.setAttribute("value", link); | ||
16 | |||
17 | // placement dans la page (= le "document") | ||
18 | document.body.appendChild(element); | ||
19 | var cible = document.getElementById('copyMe'); | ||
20 | |||
21 | // selection comme on le ferait à la souris | ||
22 | cible.select(); | ||
23 | // copie (= Ctrl + C) | ||
24 | document.execCommand("copy"); | ||
25 | |||
26 | // nettoyage | ||
27 | element.parentNode.removeChild(element); | ||
28 | |||
29 | alert('Cette adresse a été copiée dans le presse-papier:\n\n' + link); | ||
30 | } \ No newline at end of file | ||
diff --git a/public/js/tinymce.js b/public/js/tinymce.js new file mode 100644 index 0000000..8aa9368 --- /dev/null +++ b/public/js/tinymce.js | |||
@@ -0,0 +1,164 @@ | |||
1 | let editors = {}; | ||
2 | |||
3 | function openEditor(articleId) { | ||
4 | // Récupérer et sauvegarder le contenu d'origine de l'article | ||
5 | const articleContent = document.getElementById(articleId).innerHTML; | ||
6 | document.getElementById(articleId).setAttribute('data-original-content', articleContent); | ||
7 | |||
8 | tinymce.init({ | ||
9 | selector: `#${articleId}`, | ||
10 | language: 'fr_FR', // télécharger des paquets de langue ici: https://www.tiny.cloud/get-tiny/language-packages/ | ||
11 | language_url: 'js/tinymce-langs/fr_FR.js', // ou installer tweeb/tinymce-i18n avec composer | ||
12 | license_key: 'gpl', | ||
13 | branding: false, | ||
14 | plugins: 'lists link autolink table image media autoresize help', | ||
15 | toolbar: 'undo redo newdocument print selectall styles bold italic underline strikethrough fontsizeinput forecolor backcolor fontfamily align numlist bullist outdent indent table link image media help', | ||
16 | menubar: false, | ||
17 | toolbar_mode: 'wrap', | ||
18 | statusbar: false, | ||
19 | setup: function (editor) { | ||
20 | editor.on('init', function () { | ||
21 | editors[articleId] = editor; | ||
22 | |||
23 | // Masquer le bouton "Modifier" et afficher les boutons "Annuler" et "Soumettre" | ||
24 | if(articleId != 'new') | ||
25 | { | ||
26 | document.querySelector(`#edit-${articleId}`).classList.add('hidden'); | ||
27 | document.querySelector(`#delete-${articleId}`).classList.add('hidden'); | ||
28 | document.querySelector(`#position_up-${articleId}`).classList.add('hidden'); | ||
29 | document.querySelector(`#position_down-${articleId}`).classList.add('hidden'); | ||
30 | } | ||
31 | else{ | ||
32 | document.querySelector(`#new-${articleId}`).classList.add('hidden'); | ||
33 | } | ||
34 | document.querySelector(`#cancel-${articleId}`).classList.remove('hidden'); | ||
35 | document.querySelector(`#submit-${articleId}`).classList.remove('hidden'); | ||
36 | |||
37 | }); | ||
38 | }, | ||
39 | // upload d'image | ||
40 | images_upload_handler: (blobInfo, progress) => new Promise((resolve, reject) => { | ||
41 | const formData = new FormData(); | ||
42 | formData.append("file", blobInfo.blob()); | ||
43 | |||
44 | fetch("index.php?action=upload_image", { | ||
45 | method: "POST", | ||
46 | body: formData | ||
47 | }) | ||
48 | .then(response => response.json()) | ||
49 | .then(data => { | ||
50 | if (data.location) { | ||
51 | resolve(data.location); | ||
52 | } | ||
53 | else { | ||
54 | reject("Erreur: Chemin d'image invalide"); | ||
55 | } | ||
56 | }) | ||
57 | .catch(error => { | ||
58 | reject("Erreur lors de l'upload"); | ||
59 | }); | ||
60 | }), | ||
61 | image_caption: true | ||
62 | }); | ||
63 | |||
64 | // Remplacer le contenu de l'article par l'éditeur | ||
65 | document.getElementById(articleId).innerHTML = articleContent; | ||
66 | } | ||
67 | |||
68 | function deleteArticle(articleId, page = '') { | ||
69 | if (confirm('Voulez-vous vraiment supprimer cet article ?')) | ||
70 | { | ||
71 | // Envoyer une requête au serveur pour supprimer l'article | ||
72 | fetch('index.php?action=delete_article', { | ||
73 | method: 'POST', | ||
74 | headers: { | ||
75 | 'Content-Type': 'application/json' | ||
76 | }, | ||
77 | body: JSON.stringify({ id: articleId }) | ||
78 | }) | ||
79 | .then(response => response.json()) | ||
80 | .then(data => { | ||
81 | if (data.success) | ||
82 | { | ||
83 | if(page == 'article'){ | ||
84 | // redirection vers la page d'accueil | ||
85 | window.setTimeout(function(){ | ||
86 | location.href = "index.php?page=accueil"; | ||
87 | }, 0); | ||
88 | } | ||
89 | else{ | ||
90 | // Supprimer l'article du DOM | ||
91 | const articleElement = document.getElementById(articleId); | ||
92 | articleElement.parentElement.parentElement.remove(); // <article> est deux niveau au dessus | ||
93 | } | ||
94 | } | ||
95 | else { | ||
96 | alert('Erreur lors de la suppression de l\'article.'); | ||
97 | } | ||
98 | }) | ||
99 | .catch(error => { | ||
100 | console.error('Erreur:', error); | ||
101 | }); | ||
102 | } | ||
103 | } | ||
104 | |||
105 | function closeEditor(articleId, display_old = true) | ||
106 | { | ||
107 | // Fermer l'éditeur | ||
108 | tinymce.remove(`#${articleId}`); | ||
109 | delete editors[articleId]; | ||
110 | |||
111 | // Restaurer le contenu d'origine de l'article | ||
112 | if(display_old){ | ||
113 | const originalContent = document.getElementById(articleId).getAttribute('data-original-content'); | ||
114 | document.getElementById(articleId).innerHTML = originalContent; | ||
115 | } | ||
116 | |||
117 | // Afficher le bouton "Modifier" et masquer les boutons "Annuler" et "Soumettre" | ||
118 | if(articleId != 'new'){ | ||
119 | document.querySelector(`#edit-${articleId}`).classList.remove('hidden'); | ||
120 | document.querySelector(`#delete-${articleId}`).classList.remove('hidden'); | ||
121 | document.querySelector(`#position_up-${articleId}`).classList.remove('hidden'); | ||
122 | document.querySelector(`#position_down-${articleId}`).classList.remove('hidden'); | ||
123 | } | ||
124 | else{ | ||
125 | document.querySelector(`#new-${articleId}`).classList.remove('hidden'); | ||
126 | } | ||
127 | document.querySelector(`#cancel-${articleId}`).classList.add('hidden'); | ||
128 | document.querySelector(`#submit-${articleId}`).classList.add('hidden'); | ||
129 | } | ||
130 | |||
131 | function submitArticle(articleId) { | ||
132 | // Récupérer l'éditeur correspondant à l'article | ||
133 | const editor = editors[articleId]; | ||
134 | if (!editor) { | ||
135 | console.error('Éditeur non trouvé pour l\'article:', articleId); | ||
136 | return; | ||
137 | } | ||
138 | |||
139 | // Récupérer le contenu de l'éditeur | ||
140 | const newContent = editor.getContent(); | ||
141 | |||
142 | // Envoi AJAX au serveur | ||
143 | fetch('index.php?action=editor_submit', { | ||
144 | method: 'POST', | ||
145 | headers: { | ||
146 | 'Content-Type': 'application/json' | ||
147 | }, | ||
148 | body: JSON.stringify({id: articleId, content: newContent}) | ||
149 | }) | ||
150 | .then(response => response.json()) | ||
151 | .then(data => { | ||
152 | if (data.success) { | ||
153 | // Fermer l'éditeur et mettre à jour le contenu de l'article | ||
154 | closeEditor(articleId, false); | ||
155 | document.getElementById(articleId).innerHTML = newContent; | ||
156 | } | ||
157 | else { | ||
158 | alert('Erreur lors de la sauvegarde de l\'article.'); | ||
159 | } | ||
160 | }) | ||
161 | .catch(error => { | ||
162 | console.error('Erreur:', error); | ||
163 | }); | ||
164 | } \ No newline at end of file | ||