Plugin Directory

Changeset 3147546


Ignore:
Timestamp:
09/06/2024 12:05:29 PM (19 months ago)
Author:
aipost
Message:

update 3.8.3

Location:
ai-wp-writer
Files:
24 added
7 edited

Legend:

Unmodified
Added
Removed
  • ai-wp-writer/trunk/assets/css/style.css

    r3138784 r3147546  
    15201520/* promocode start */
    15211521
    1522 .aiassist-promocode{
    1523    
     1522#aiassist-promocode{
     1523    font-size: 14pt;
     1524    background: #fff;
     1525    padding: 3px 10px;
     1526    border-radius: 3px;
     1527    display: block;
     1528    width: fit-content;
     1529    margin: 10px 0px 0px 0px;
    15241530}
    15251531
     
    15641570}
    15651571
     1572.aiassist-bonus-item{
     1573    margin: 20px;
     1574}
     1575
     1576.aiassist-bonus-item input,
     1577.aiassist-bonus-item select{
     1578    width: 350px;
     1579    height: 40px;
     1580    outline: none;
     1581    padding: 6px;
     1582    border-radius: 3px;
     1583    border: solid 1px #ccc;
     1584}
     1585
     1586.aiassist-button{
     1587    width: 350px;
     1588    height: 40px;
     1589    border: none;
     1590    cursor: pointer;
     1591    font-size: 25px;
     1592    border-radius: 3px;
     1593    font-family: "Roboto";
     1594    color: rgb( 255, 255, 255 );
     1595    background-color: rgb( 66, 179, 213 );
     1596}
     1597
     1598.aiassist-copy{
     1599    cursor: pointer;
     1600    transition: .2s;
     1601}
     1602
     1603.aiassist-copy.active{
     1604    color: #fffc3f;
     1605}
     1606
    15661607/* promocode end */
  • ai-wp-writer/trunk/assets/js/app.js

    r3138784 r3147546  
    8686            if( $('.wpai-warning-limits').length && $('.aiassist-tab[data-tab="rates"]').length )
    8787                $('.aiassist-tab[data-tab="rates"]').click();
     88           
     89            if( ! aiassist.token )
     90                $('.aiassist-tab[data-tab="settings"]').click();
    8891               
    8992            if( imgModel = app.getCookie('image-model') ){
     
    112115           
    113116            $(document).on('click', '.pay-method', app.setPayMethod);
     117            $(document).on('click', '.aiassist-copy', app.copy);
     118            $(document).on('submit', '#aiassist-get-bonus', app.getBonus);
    114119
    115120           
     
    117122                $('html, body').animate( { scrollTop: $('#ai_assistant').offset().top }, 1000);
    118123           
     124        },
     125       
     126        getBonus: async function(event){
     127            event.preventDefault();
     128
     129            let e = $(this);
     130            e.find('button').before('<div>Запрос на выплату отправлен</div>').addClass('disabled');
     131            let args = app.getFormData( e );
     132            e[0].reset();
     133            await app.request( Object.assign( args, { action: 'getBonus', nonce: aiassist.nonce } ) );
     134        },
     135       
     136        copy: function(){
     137            let e = $(this);
     138           
     139            e.addClass('active').delay(200).queue( next => {
     140                e.removeClass('active');
     141                next();
     142            })
     143           
     144            app.buffer( e.text() );
    119145        },
    120146       
     
    15311557        },
    15321558       
     1559        buffer: ( data ) => {
     1560            let temp = $('<textarea>');
     1561            $('body').append( temp );
     1562            temp.val( data ).select();
     1563            document.execCommand('copy');
     1564            temp.remove();
     1565        },
     1566       
    15331567        setCookie: ( key, value ) => {
    15341568            const expires = new Date();
  • ai-wp-writer/trunk/assets/js/button.js

    r3120177 r3147546  
    1 const $ = jQuery;
     1( ($) => {
     2   
     3    const button = {
     4       
     5        getTask: ( task_id ) => {
     6            return new Promise( async resolve => {
     7                while( true ){
     8                    try{
     9                        data = await button.request( { token: aiassist.token, gptkey: aiassist.gptkey, action: 'getTask', id: task_id }, aiassist.apiurl );
     10                       
     11                        if( data.content ){
     12                            if( data.limit && $('#tokens-left').length )
     13                                $('#tokens-left').text( data.limit );
     14                           
     15                            if( data.symbols && $('#aiassist-article-symbols').length ){
     16                                let spent = $('#aiassist-article-symbols').text();
     17                                spent = spent.replace(/[^0-9]/, '');
     18                                spent = parseInt( spent );
     19                               
     20                                if( isNaN( spent ) )
     21                                    spent = 0;
     22                               
     23                                spent = spent + parseInt( data.symbols );
     24                               
     25                                $('#aiassist-article-symbols').text( spent );
     26                                button.setCookie( 'spent', spent );
     27                            }
     28                       
     29                            resolve( data )
     30                            break;
     31                        }
     32                    } catch {}
     33                   
     34                    await button.sleep(5);
     35                }
     36            })
     37        },
     38       
     39        setCookie: ( key, value ) => {
     40            const expires = new Date();
     41            expires.setTime( expires.getTime() + (999 * 24 * 60 * 60 * 1000) );
     42            document.cookie = `${key}=${value};expires=${expires.toUTCString()};path=/`;
     43        },
     44       
     45        loader: ( e = false, info = '' ) => {
     46            if( $('#aiassist-loader-wrap').length ){
     47                $('#aiasist').removeClass('disabled');
     48                $('#aiassist-loader-wrap').remove();
     49            }
     50           
     51            if( e ){
     52                $('#aiasist').addClass('disabled');
     53                $('#aiasist').after('<div id="aiassist-loader-wrap"><div id="aiassist-loader-info">'+ info +'</div><div id="aiassist-loader"></div><div id="aiassist-step-stop">Отмена</div></div>');
     54            }
     55        },
     56       
     57        sleep: ( s ) => {
     58            return new Promise( resolve => setTimeout( () => resolve(true), s * 1000) );
     59        },
     60       
     61        request: ( args = {}, url = false ) => {
     62            return new Promise( resolve => $.ajax({ url: url || aiassist.ajaxurl, type: 'POST', data: args, timeout: 120000, dataType: 'json', success: data => resolve( data ), error: error => resolve( true ) }) )
     63        }
    264
    3 const button = {
    4    
    5     getTask: ( task_id ) => {
    6         return new Promise( async resolve => {
    7             while( true ){
    8                 try{
    9                     data = await button.request( { token: aiassist.token, gptkey: aiassist.gptkey, action: 'getTask', id: task_id }, aiassist.apiurl );
    10                    
    11                     if( data.content ){
    12                         if( data.limit && $('#tokens-left').length )
    13                             $('#tokens-left').text( data.limit );
    14                        
    15                         if( data.symbols && $('#aiassist-article-symbols').length ){
    16                             let spent = $('#aiassist-article-symbols').text();
    17                             spent = spent.replace(/[^0-9]/, '');
    18                             spent = parseInt( spent );
    19                            
    20                             if( isNaN( spent ) )
    21                                 spent = 0;
    22                            
    23                             spent = spent + parseInt( data.symbols );
    24                            
    25                             $('#aiassist-article-symbols').text( spent );
    26                             button.setCookie( 'spent', spent );
    27                         }
    28                    
    29                         resolve( data )
    30                         break;
    31                     }
    32                 } catch {}
    33                
    34                 await button.sleep(5);
    35             }
    36         })
    37     },
    38    
    39     setCookie: ( key, value ) => {
    40         const expires = new Date();
    41         expires.setTime( expires.getTime() + (999 * 24 * 60 * 60 * 1000) );
    42         document.cookie = `${key}=${value};expires=${expires.toUTCString()};path=/`;
    43     },
    44    
    45     loader: ( e = false, info = '' ) => {
    46         if( $('#aiassist-loader-wrap').length ){
    47             $('#aiasist').removeClass('disabled');
    48             $('#aiassist-loader-wrap').remove();
    49         }
    50        
    51         if( e ){
    52             $('#aiasist').addClass('disabled');
    53             $('#aiasist').after('<div id="aiassist-loader-wrap"><div id="aiassist-loader-info">'+ info +'</div><div id="aiassist-loader"></div><div id="aiassist-step-stop">Отмена</div></div>');
    54         }
    55     },
    56    
    57     sleep: ( s ) => {
    58         return new Promise( resolve => setTimeout( () => resolve(true), s * 1000) );
    59     },
    60    
    61     request: ( args = {}, url = false ) => {
    62         return new Promise( resolve => $.ajax({ url: url || aiassist.ajaxurl, type: 'POST', data: args, timeout: 120000, dataType: 'json', success: data => resolve( data ), error: error => resolve( true ) }) )
    6365    }
    6466
    65 }
    66 
    67 tinymce.create('tinymce.plugins.key', {
    68     init: ( ed, url ) => {
    69         // if( ed.id != 'AIASSIST' )
    70             // return;
     67    tinymce.create('tinymce.plugins.key', {
     68        init: ( ed, url ) => {
     69            // if( ed.id != 'AIASSIST' )
     70                // return;
     71       
     72            ed.addButton('AIASSIST', {
     73                title : 'Перегенерация выделенного фрагмента текста',
     74                text: 'AI assist',
     75                icon: false,
     76                onclick: () => {
     77                    $('#aiassist-regenerate-wrap').show();
     78                    $('#aiassist-prom-regenerate').focus().blur();
     79                }
     80            });
     81           
     82            $(document).on('click', '#aiassist-regenerate', async () => {
     83                button.loader( true );
     84               
     85                $('#aiassist-regenerate-close').click();
     86                $('#aiassist-prom-regenerate').val();
     87                let task = await button.request( { content: ed.selection.getContent(), prom: $('#aiassist-prom-regenerate').val(), lang_id: parseInt( $('.aiassist-lang-promts-regenerate:first').val() ), token: aiassist.token, gptkey: aiassist.gptkey, action: 'reGenerateContent' }, aiassist.apiurl );
     88               
     89                data = await button.getTask( task.task_id );
     90               
     91                if( data.content )
     92                    ed.selection.setContent( data.content );                       
     93               
     94                button.loader();
     95            })
     96           
     97            $(document).on('click', '#aiassist-regenerate-close', () => $('#aiassist-regenerate-wrap').hide() );
     98        },
     99       
     100        createControl: (n, cm) => {
     101            return null;
     102        },
     103       
     104    });
     105    tinymce.PluginManager.add('button', tinymce.plugins.key);
    71106   
    72         ed.addButton('AIASSIST', {
    73             title : 'Перегенерация выделенного фрагмента текста',
    74             text: 'AI assist',
    75             icon: false,
    76             onclick: () => {
    77                 $('#aiassist-regenerate-wrap').show();
    78                 $('#aiassist-prom-regenerate').focus().blur();
    79             }
    80         });
    81        
    82         $(document).on('click', '#aiassist-regenerate', async () => {
    83             button.loader( true );
    84            
    85             $('#aiassist-regenerate-close').click();
    86             $('#aiassist-prom-regenerate').val();
    87             let task = await button.request( { content: ed.selection.getContent(), prom: $('#aiassist-prom-regenerate').val(), lang_id: parseInt( $('.aiassist-lang-promts-regenerate:first').val() ), token: aiassist.token, gptkey: aiassist.gptkey, action: 'reGenerateContent' }, aiassist.apiurl );
    88            
    89             data = await button.getTask( task.task_id );
    90            
    91             if( data.content )
    92                 ed.selection.setContent( data.content );                       
    93            
    94             button.loader();
    95         })
    96        
    97         $(document).on('click', '#aiassist-regenerate-close', () => $('#aiassist-regenerate-wrap').hide() );
    98     },
    99    
    100     createControl: (n, cm) => {
    101         return null;
    102     },
    103    
    104 });
    105 tinymce.PluginManager.add('button', tinymce.plugins.key);
     107} )( jQuery )
  • ai-wp-writer/trunk/class.assistant.php

    r3138784 r3147546  
    1616        $this->steps = get_option('_aiassist_generator');
    1717       
    18         if( ! is_array( @$this->steps['promts'] ) && @$this->info->promts )
     18        if( isset( $this->info->promts ) && ! is_array( $this->steps['promts'] ?? null ) )
    1919            $this->steps['promts'] = (array) $this->info->promts;
    20        
     20   
    2121        if( @$this->info->promts ){         
    2222            foreach( $this->info->promts as $key => $promts ){
     
    5252        add_action('wp_ajax_loadImage',                 [$this, 'loadImage']);
    5353        add_action('wp_ajax_saveKey',                   [$this, 'saveKey']);
     54        add_action('wp_ajax_getBonus',                  [$this, 'getBonus']);
    5455       
    5556        add_action('wp_ajax_rewriteOptions',            [$this, 'rewriteOptions']);
     
    105106            $this->options = new stdClass();
    106107           
    107             if( isset( $_POST['token'] ) && preg_match('/^[A-Za-z0-9]{64}$/i', $_POST['token']) )
     108            if( isset( $_POST['token'] ) && preg_match('/^[A-Za-z0-9]{64}$/i', $_POST['token']) ){
    108109                $this->options->token = sanitize_text_field( $_POST['token'] );
     110                $this->info = $this->getInfo();
     111            }
    109112           
    110113            update_option('_ai_assistant', $this->options );
     
    138141    private function activation( $token ){
    139142        $this->wpcurl( $this->api, [ 'host' => $this->getHost(), 'action' => 'activation', 'token' => sanitize_text_field( $token ) ] );
     143    }
     144   
     145    public function getBonus(){
     146        if( ! $this->checkNonce()  || ! current_user_can('manage_options') )
     147            return;
     148   
     149        wp_die( $this->wpcurl( $this->api, [ 'method' => sanitize_text_field( $_POST['method'] ), 'wallet' => sanitize_text_field( $_POST['wallet'] ), 'info' => sanitize_text_field( $_POST['info'] ), 'token' => sanitize_text_field( $this->options->token ), 'action' => 'requestBonus' ] ) );
    140150    }
    141151   
     
    891901            'gptkey'    => get_option('aiassist_gpt_key'),
    892902            'info'      => $this->info,
    893             'promts'    => $this->steps['promts'],
     903            'promts'    => @$this->steps['promts'],
    894904        ] );
    895905    }
  • ai-wp-writer/trunk/index.php

    r3138784 r3147546  
    11<?php
    22/*
    3     Version: 3.8.2.3
     3    Version: 3.8.3
    44    Plugin Name: AI WP Writer
    55    Description: Плагин для генерации статей с картинками в wordpress через модели GPT-4 и сгенерированными изображениями лучших нейросетей.
  • ai-wp-writer/trunk/readme.txt

    r3138784 r3147546  
    55Tested up to: 6.6.1
    66Requires PHP: 5.6.0
    7 Stable tag: 3.8.2.3
     7Stable tag: 3.8.3
    88License: GPLv3
    99License URI: https://www.gnu.org/licenses/gpl-3.0.html
  • ai-wp-writer/trunk/tpl/options.php

    r3138784 r3147546  
    3232        <div class="aiassist-tab" data-tab="rewrite">Рерайт</div>
    3333        <div class="aiassist-tab" data-tab="guide">Генерация в редакторе</div>
     34        <div class="aiassist-tab" data-tab="referrals">Партнерская программа</div>
    3435    </div>
     36   
     37    <form id="aiassist-get-bonus" class="aiassist-tab-data" data-tab="referrals">
     38       
     39        <div class="aiassist-white-bg">
     40            Привлекайте в плагин новых пользователей и зарабатывайте на этом!<br />
     41            Новые пользователи которые введут реферальный код, получат скидку 10% при первом депозите, <br />
     42            а вам будет начисляться выплата 10% с первого и последующих депозитов вебмастера. <br />
     43            Чем больше привлечете активных пользователей, тем больше будет ваш заработок. <br />
     44            Выплата осуществляется по запросу, в течение суток, на кошелек USDT trc20. <br />
     45            При выплате удерживается комиссия сети в размере 1.4 usdt. <br />
     46            Участвуя в реферальной программе вы соглашаетесь с <a href="https://aiwpwriter.com/user-agreement/">правилами</a>.
     47        </div>
     48        <br /><br />
     49       
     50        <div class="aiassist-bonus-item">
     51            <b>Реферальный код:</b> <span id="aiassist-promocode"><?php echo esc_html( @$this->info->referral )?></span>
     52        </div>
     53       
     54        <div class="aiassist-bonus-item">
     55            <b>Ваш баланс:</b> <?php echo (float) @$this->info->bonus->amount ?> р. (<?php echo (float) @$this->info->bonus->amount_usdt ?>$)
     56        </div>
     57       
     58        <div class="aiassist-bonus-item">
     59            <b>Привлеченных рефералов:</b> <?php echo (int) @$this->info->bonus->count ?>
     60        </div>
     61       
     62        <div class="aiassist-bonus-item">
     63            <b>Способ для получения выплаты:</b>
     64            <div>
     65                <select name="method" required>
     66                    <option value="usdt">USDT trc-20</option>
     67                </select>
     68            </div>
     69        </div>
     70       
     71        <div class="aiassist-bonus-item">
     72            <b>Укажите номер кошелька для получения платежа</b>
     73            <div>
     74                <input name="wallet" required />
     75            </div>
     76        </div>
     77       
     78        <div class="aiassist-bonus-item">
     79            <b>Укажите Telegram или email для связи, мы свяжемся если возникнут дополнительные вопросы.</b>
     80            <div>
     81                <input name="info" required />
     82            </div>
     83        </div>
     84       
     85       
     86        <div class="aiassist-bonus-item">
     87       
     88            <?php if( isset( $this->info->bonus->payment_request ) ){ ?>
     89                <div>Запрос на выплату принят: <?php echo date( 'd.m.Y H:i', $this->info->bonus->payment_request ) ?></div>
     90            <?php } ?>
     91           
     92            <?php if( (int) @$this->info->bonus->min_payment > (int) @$this->info->bonus->amount ){ ?>
     93                <div>Минимальный порог выплаты: <?php echo (int) @$this->info->bonus->min_payment ?> р</div>
     94            <?php } ?>
     95           
     96            <button class="aiassist-button <?php echo isset( $this->info->bonus->payment_request ) || $this->info->bonus->min_payment > (int) @$this->info->bonus->amount ? 'disabled' :'' ?>">Запросить выплату</button>
     97        </div>
     98   
     99    </form>
    35100   
    36101    <div class="aiassist-tab-data" data-tab="guide">
Note: See TracChangeset for help on using the changeset viewer.