11// ===== CUSTOM TAGS =====
2- var customArticleTags = JSON . parse ( lsGet ( 'philo-custom-tags' , '{}' ) ) ;
3- var allCustomTagNames = JSON . parse ( lsGet ( 'philo-all-custom-tags' , '[]' ) ) ;
2+ // Data (customArticleTags, allCustomTagNames) is managed by Data layer via aliases in state.js
43
54function getCustomTags ( id ) {
6- return customArticleTags [ id ] || [ ] ;
5+ return Data . getCustomTags ( ) [ id ] || [ ] ;
76}
87
98function saveCustomTags ( ) {
10- var json = JSON . stringify ( customArticleTags ) ;
11- PhiloDB . set ( 'philo-custom-tags' , json ) ;
12- try { localStorage . setItem ( 'philo-custom-tags' , json ) ; } catch ( e ) { }
13- var names = JSON . stringify ( allCustomTagNames ) ;
14- PhiloDB . set ( 'philo-all-custom-tags' , names ) ;
15- try { localStorage . setItem ( 'philo-all-custom-tags' , names ) ; } catch ( e ) { }
9+ Data . saveCustomTags ( ) ;
1610}
1711
1812function addCustomTag ( id , tagName ) {
1913 tagName = tagName . trim ( ) . toLowerCase ( ) ;
2014 if ( ! tagName || tagName . length > 30 ) return ;
21- if ( ! customArticleTags [ id ] ) customArticleTags [ id ] = [ ] ;
22- if ( customArticleTags [ id ] . indexOf ( tagName ) >= 0 ) return ;
23- customArticleTags [ id ] . push ( tagName ) ;
24- if ( allCustomTagNames . indexOf ( tagName ) < 0 ) allCustomTagNames . push ( tagName ) ;
15+ var tags = Data . getCustomTags ( ) ;
16+ var names = Data . getAllCustomTagNames ( ) ;
17+ if ( ! tags [ id ] ) tags [ id ] = [ ] ;
18+ if ( tags [ id ] . indexOf ( tagName ) >= 0 ) return ;
19+ tags [ id ] . push ( tagName ) ;
20+ if ( names . indexOf ( tagName ) < 0 ) names . push ( tagName ) ;
2521 saveCustomTags ( ) ;
2622 showArticle ( id ) ;
2723}
2824
2925function removeCustomTag ( id , tagName ) {
30- if ( ! customArticleTags [ id ] ) return ;
31- customArticleTags [ id ] = customArticleTags [ id ] . filter ( function ( t ) { return t !== tagName ; } ) ;
32- if ( customArticleTags [ id ] . length === 0 ) delete customArticleTags [ id ] ;
26+ var tags = Data . getCustomTags ( ) ;
27+ if ( ! tags [ id ] ) return ;
28+ tags [ id ] = tags [ id ] . filter ( function ( t ) { return t !== tagName ; } ) ;
29+ if ( tags [ id ] . length === 0 ) delete tags [ id ] ;
3330 saveCustomTags ( ) ;
3431 showArticle ( id ) ;
3532}
3633
3734function promptAddCustomTag ( id ) {
38- // Show inline prompt with suggestions
39- var existingHtml = allCustomTagNames . length > 0
40- ? '<div style="display:flex;flex-wrap:wrap;gap:0.25rem;margin-bottom:0.5rem;">' +
41- allCustomTagNames . slice ( 0 , 15 ) . map ( function ( t ) {
42- return '<span class="custom-tag" onclick="addCustomTag(\'' + id + '\',\'' + t . replace ( / ' / g, "\\'" ) + '\')">' + t + '</span>' ;
43- } ) . join ( '' ) + '</div>'
44- : '' ;
45-
46- var name = prompt ( 'Nouvelle étiquette :' ) ;
35+ var name = prompt ( 'Nouvelle \u00e9tiquette :' ) ;
4736 if ( name ) addCustomTag ( id , name ) ;
4837}
4938
@@ -54,7 +43,7 @@ function buildCustomTagsHtml(id) {
5443 html += '<span class="custom-tag">' + tag +
5544 ' <span class="custom-tag-remove" onclick="event.stopPropagation();removeCustomTag(\'' + id + '\',\'' + tag . replace ( / ' / g, "\\'" ) + '\')">×</span></span>' ;
5645 } ) ;
57- html += '<button class="custom-tag-add" onclick="promptAddCustomTag(\'' + id + '\')" title="Ajouter une étiquette ">+</button>' ;
46+ html += '<button class="custom-tag-add" onclick="promptAddCustomTag(\'' + id + '\')" title="Ajouter une \u00e9tiquette ">+</button>' ;
5847 html += '</div>' ;
5948 return html ;
6049}
0 commit comments