Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/aimogen-pro/scripts/elementor-editor.js

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1
2 + 'use strict';
3 + if (typeof ( jQuery ) != 'undefined')
4 + {
5 + ( function ( $ )
6 + {
7 + var Aiomatic_Content_Generator;
8 + var Aiomatic_Headline_Generator;
9 +
10 + Aiomatic_Content_Generator = function ( controlView )
11 + {
12 + this.init( controlView );
13 + };
14 +
15 + Aiomatic_Content_Generator.prototype =
16 + {
17 + controls: '',
18 + editor: '',
19 + settings: '',
20 + init: function ( controlView )
21 + {
22 + this.controls = $( controlView ).get( 0 ).$el.parentsUntil( '.elementor-controls-stack' );
23 + this.editor = elementor.getPanelView().currentPageView.getControlViewByName( 'editor' )
24 + this.settings = controlView.container.settings.attributes;
25 + },
26 + handleGenerateEvent: function ()
27 + {
28 + var self = this;
29 + self.editor.trigger( 'change' );
30 + const promptControl = self.controls.find( '.elementor-control-type-textarea textarea[data-setting="aiomatic_prompt"]' );
31 + const siblingDiv = promptControl.next('.elementor-dynamic-cover');
32 + promptControl.css( { borderColor: 'inherit' } );
33 + if (siblingDiv.length === 0 && promptControl.val().trim().length == 0) {
34 + promptControl.css( { borderColor: '#93003c' } );
35 + alert( 'You need to add a prompt to generate content' );
36 + return;
37 + }
38 + self.postGenerateRequest();
39 + },
40 + prepareForGenerate: function ()
41 + {
42 + var generateButton = this.controls.find( '.elementor-button-default[data-event="aiomatic:content:generate"]' );
43 + generateButton.prop( "disabled", true );
44 + generateButton.before( '<span class="elementor-control-spinner" style="display: inline;"><i class="eicon-spinner eicon-animation-spin" style="font-size: 16px; color: #930b3c;"></i>&nbsp;&nbsp;</span>' );
45 + },
46 + doneWithGenerate: function ()
47 + {
48 + var generateButton = this.controls.find( '.elementor-button-default[data-event="aiomatic:content:generate"]' );
49 + generateButton.siblings( '.elementor-control-spinner' ).remove();
50 + generateButton.prop( "disabled", false );
51 + },
52 + postGenerateRequest: function ()
53 + {
54 + var self = this;
55 + var titleContent;
56 + if (typeof tinymce !== 'undefined')
57 + {
58 + var activeEditor = tinymce.editors.find(editor => editor && editor.id.startsWith('elementorwpeditorview') && !editor.isHidden());
59 + if (activeEditor)
60 + {
61 + titleContent = activeEditor.getContent();
62 + }
63 + else
64 + {
65 + titleContent = self.controls.find('textarea.elementor-wp-editor').val();
66 + }
67 + }
68 + else
69 + {
70 + titleContent = self.controls.find('textarea.elementor-wp-editor').val();
71 + }
72 + console.log(titleContent);
73 + if(titleContent)
74 + {
75 + self.settings['aiomatic_prompt'] = self.settings['aiomatic_prompt'].replace("%%content%%", titleContent);
76 + }
77 + else
78 + {
79 + self.settings['aiomatic_prompt'] = self.settings['aiomatic_prompt'].replace("%%content%%", '');
80 + }
81 + var requestData = {
82 + 'action': 'aiomatic_generate_content',
83 + 'prompt': self.settings['aiomatic_prompt'],
84 + 'assistant': self.settings['aiomatic_assistant'],
85 + 'model': self.settings['aiomatic_model'],
86 + 'temperature': self.settings['aiomatic_temperature'].size,
87 + 'topp': self.settings['aiomatic_topp'].size,
88 + 'presencePenalty': self.settings['aiomatic_presence_penalty'].size,
89 + 'frequencyPenalty': self.settings['aiomatic_frequency_penalty'].size,
90 + '_ajax_nonce-aiomatic-assistant': aiomatic_ajax_object.assistant_nonce
91 + };
92 +
93 + $.ajax( {
94 + url: aiomatic_ajax_object.ajax_url,
95 + type: 'POST',
96 + data: requestData,
97 + beforeSend: function ()
98 + {
99 + self.prepareForGenerate();
100 + },
101 + success: function ( response )
102 + {
103 + self.handleGenerateResponse( response );
104 + },
105 + complete: function ()
106 + {
107 + self.doneWithGenerate();
108 + }
109 + } )
110 + },
111 + handleGenerateResponse: function ( response )
112 + {
113 + var self = this;
114 + if (!response.success)
115 + {
116 + alert( response.data );
117 + }
118 + else
119 + {
120 + var activeEditor = self.editor.editor;
121 + var content = response.data.trim().replace( /\r?\n/g, '<br />' );
122 + activeEditor.setContent( content, { format: 'html' } );
123 + activeEditor.fire( 'change' );
124 + }
125 + }
126 + };
127 +
128 + Aiomatic_Headline_Generator = function ( controlView )
129 + {
130 + this.init( controlView );
131 + };
132 +
133 + Aiomatic_Headline_Generator.prototype =
134 + {
135 + controls: '',
136 + editor: '',
137 + settings: '',
138 + init: function ( controlView )
139 + {
140 + this.controls = $( controlView ).get( 0 ).$el.parentsUntil( '.elementor-controls-stack' );
141 + this.editor = elementor.getPanelView().currentPageView.getControlViewByName( 'title' )
142 + this.settings = controlView.container.settings.attributes;
143 + },
144 + handleGenerateEvent: function ()
145 + {
146 + var self = this;
147 + self.editor.trigger( 'change' );
148 + const promptControl = self.controls.find( '.elementor-control-type-textarea textarea[data-setting="aiomatic_prompt"]' );
149 + promptControl.css( { borderColor: 'inherit' } );
150 + if (promptControl.val().trim().length == 0)
151 + {
152 + promptControl.css( { borderColor: '#93003c' } );
153 + alert( 'You need to add a prompt to generate headlines' );
154 + return;
155 + }
156 + self.postGenerateRequest();
157 + },
158 + prepareForGenerate: function ()
159 + {
160 + var generateButton = this.controls.find( '.elementor-button-default[data-event="aiomatic:headline:generate"]' );
161 + generateButton.prop( "disabled", true );
162 + generateButton.before( '<span class="elementor-control-spinner" style="display: inline;"><i class="eicon-spinner eicon-animation-spin" style="font-size: 16px; color: #930b3c;"></i>&nbsp;&nbsp;</span>' );
163 + },
164 + doneWithGenerate: function ()
165 + {
166 + var generateButton = this.controls.find( '.elementor-button-default[data-event="aiomatic:headline:generate"]' );
167 + generateButton.siblings( '.elementor-control-spinner' ).remove();
168 + generateButton.prop( "disabled", false );
169 + },
170 + postGenerateRequest: function ()
171 + {
172 + var self = this;
173 + var titleContent = self.controls.find('.elementor-control-type-textarea textarea[data-setting="title"]').val();
174 + if(titleContent)
175 + {
176 + self.settings['aiomatic_prompt'] = self.settings['aiomatic_prompt'].replace("%%content%%", titleContent);
177 + }
178 + else
179 + {
180 + self.settings['aiomatic_prompt'] = self.settings['aiomatic_prompt'].replace("%%content%%", '');
181 + }
182 + var requestData = {
183 + 'action': 'aiomatic_generate_headline',
184 + 'prompt': self.settings['aiomatic_prompt'],
185 + 'assistant': self.settings['aiomatic_assistant'],
186 + 'model': self.settings['aiomatic_model'],
187 + 'temperature': self.settings['aiomatic_temperature'].size,
188 + 'topp': self.settings['aiomatic_topp'].size,
189 + 'presencePenalty': self.settings['aiomatic_presence_penalty'].size,
190 + 'frequencyPenalty': self.settings['aiomatic_frequency_penalty'].size,
191 + '_ajax_nonce-aiomatic-assistant': aiomatic_ajax_object.assistant_nonce
192 + };
193 + $.ajax( {
194 + url: aiomatic_ajax_object.ajax_url,
195 + type: 'POST',
196 + data: requestData,
197 + beforeSend: function ()
198 + {
199 + self.prepareForGenerate();
200 + },
201 + success: function ( response )
202 + {
203 + self.handleGenerateResponse( response );
204 + },
205 + complete: function ()
206 + {
207 + self.doneWithGenerate();
208 + }
209 + } )
210 +
211 + },
212 + handleGenerateResponse: function ( response )
213 + {
214 + var self = this;
215 + if (!response.success)
216 + {
217 + alert( response.data );
218 + }
219 + else
220 + {
221 + self.editor.setValue( response.data );
222 + self.editor.applySavedValue();
223 + }
224 + },
225 + };
226 + $( window ).on( "elementor/init", function ()
227 + {
228 + elementor.channels.editor.on( 'aiomatic:content:generate', function ( controlView )
229 + {
230 + var handler = new Aiomatic_Content_Generator( controlView );
231 + handler.handleGenerateEvent();
232 + } );
233 + elementor.channels.editor.on( 'aiomatic:headline:generate', function ( controlView )
234 + {
235 + var handler = new Aiomatic_Headline_Generator( controlView );
236 + handler.handleGenerateEvent();
237 + } );
238 + } );
239 + } )( jQuery );
240 + }