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+ ] ;
74+
75+ //Show file_templates on the lower part of "New"
76+ if ( window . file_templates . length > 0 ) {
77+ // divider
78+ baseItems . push ( '-' ) ;
79+
80+ // User templates
81+ baseItems . push ( {
82+ html : "User templates" ,
83+ icon : `<img src="${ html_encode ( window . icons [ 'file-template.svg' ] ) } " class="ctx-item-icon">` ,
84+ items : window . file_templates . map ( template => ( {
85+ html : template . html ,
86+ icon : `<img src="${ html_encode ( window . icons [ `file-${ template . extension } .svg` ] ) } " class="ctx-item-icon">` ,
87+ onClick : function ( ) {
88+ window . create_file ( { dirname : dirname , append_to_element : append_to_element , name : template . name } ) ;
7289 }
73- } ,
74- ]
90+ } ) )
91+ } ) ;
92+ } else {
93+ // baseItems.push({
94+ // html: "No templates found",
95+ // icon: `<img src="${html_encode(window.icons['file-template.svg'])}" class="ctx-item-icon">`,
96+ // });
7597 }
98+
99+ //Conditional rendering for the templates
100+ return {
101+ html : i18n ( 'new' ) ,
102+ items : baseItems
103+ } ;
76104}
77105
78106export default new_context_menu_item ;
0 commit comments