2727 */
2828
2929const new_context_menu_item = function ( dirname , append_to_element ) {
30- return {
31- html : i18n ( 'new' ) ,
32- items : [
33- // New Folder
34- {
35- html : i18n ( 'new_folder' ) ,
36- icon : `<img src="${ html_encode ( window . icons [ 'folder.svg' ] ) } " class="ctx-item-icon">` ,
37- onClick : function ( ) {
38- window . create_folder ( dirname , append_to_element ) ;
39- }
40- } ,
41- // divider
42- '-' ,
43- // Text Document
44- {
45- html : i18n ( 'text_document' ) ,
46- icon : `<img src="${ html_encode ( window . icons [ 'file-text.svg' ] ) } " class="ctx-item-icon">` ,
47- onClick : async function ( ) {
48- window . create_file ( { dirname : dirname , append_to_element : append_to_element , name : 'New File.txt' } ) ;
49- }
50- } ,
51- // HTML Document
52- {
53- html : i18n ( 'html_document' ) ,
54- icon : `<img src="${ html_encode ( window . icons [ 'file-html.svg' ] ) } " class="ctx-item-icon">` ,
55- onClick : async function ( ) {
56- window . create_file ( { dirname : dirname , append_to_element : append_to_element , name : 'New File.html' } ) ;
57- }
30+
31+ const baseItems = [
32+ // New Folder
33+ {
34+ html : i18n ( 'new_folder' ) ,
35+ icon : `<img src="${ html_encode ( window . icons [ 'folder.svg' ] ) } " class="ctx-item-icon">` ,
36+ onClick : function ( ) {
37+ window . create_folder ( dirname , append_to_element ) ;
5838 } ,
59- // JPG Image
60- {
61- html : i18n ( 'jpeg_image' ) ,
62- icon : `<img src="${ html_encode ( window . icons [ 'file-image.svg' ] ) } " class="ctx-item-icon">` ,
63- onClick : async function ( ) {
64- var canvas = document . createElement ( "canvas" ) ;
39+ } ,
40+ // divider
41+ '-' ,
42+ // Text Document
43+ {
44+ html : i18n ( 'text_document' ) ,
45+ icon : `<img src="${ html_encode ( window . icons [ 'file-text.svg' ] ) } " class="ctx-item-icon">` ,
46+ onClick : async function ( ) {
47+ window . create_file ( { dirname : dirname , append_to_element : append_to_element , name : 'New File.txt' } ) ;
48+ }
49+ } ,
50+ // HTML Document
51+ {
52+ html : i18n ( 'html_document' ) ,
53+ icon : `<img src="${ html_encode ( window . icons [ 'file-html.svg' ] ) } " class="ctx-item-icon">` ,
54+ onClick : async function ( ) {
55+ window . create_file ( { dirname : dirname , append_to_element : append_to_element , name : 'New File.html' } ) ;
56+ }
57+ } ,
58+ // JPG Image
59+ {
60+ html : i18n ( 'jpeg_image' ) ,
61+ icon : `<img src="${ html_encode ( window . icons [ 'file-image.svg' ] ) } " class="ctx-item-icon">` ,
62+ onClick : async function ( ) {
63+ var canvas = document . createElement ( "canvas" ) ;
6564
66- canvas . width = 800 ;
67- canvas . height = 600 ;
68-
69- canvas . toBlob ( ( blob ) => {
70- window . create_file ( { dirname : dirname , append_to_element : append_to_element , name : 'New Image.jpg' , content : blob } ) ;
71- } ) ;
65+ canvas . width = 800 ;
66+ canvas . height = 600 ;
67+
68+ canvas . toBlob ( ( blob ) => {
69+ window . create_file ( { dirname : dirname , append_to_element : append_to_element , name : 'New Image.jpg' , content : blob } ) ;
70+ } ) ;
71+ }
72+ } ,
73+ // divider
74+ '-'
75+ ] ;
76+
77+ //Show file_templates on the lower part of "New"
78+ if ( window . file_templates . length > 0 ) {
79+ baseItems . push ( {
80+ html : "User templates" ,
81+ icon : `<img src="${ html_encode ( window . icons [ 'file-template.svg' ] ) } " class="ctx-item-icon">` ,
82+ items : window . file_templates . map ( template => ( {
83+ html : template . html ,
84+ icon : `<img src="${ html_encode ( window . icons [ `file-${ template . extension } .svg` ] ) } " class="ctx-item-icon">` ,
85+ onClick : function ( ) {
86+ window . create_file ( { dirname : dirname , append_to_element : append_to_element , name : template . name } ) ;
7287 }
73- } ,
74- ]
88+ } ) )
89+ } ) ;
90+ } else {
91+ baseItems . push ( {
92+ html : "No templates found" ,
93+ icon : `<img src="${ html_encode ( window . icons [ 'file-template.svg' ] ) } " class="ctx-item-icon">` ,
94+ //Add function to ask user to create new template folder
95+ // onClick: function() {
96+ // window.create_file({dirname: dirname, append_to_element: append_to_element, name: template.name});
97+ // }
98+ } ) ;
7599 }
100+
101+ //Conditional rendering for the templates
102+ return {
103+ html : i18n ( 'new' ) ,
104+ items : baseItems
105+ } ;
76106}
77107
78108export default new_context_menu_item ;
0 commit comments