Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/aimogen-pro/scripts/elementor-editor.js
Keine Baseline-Datei – Diff nur gegen leer.
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> </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> </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
+
}