Plugin Directory

Changeset 1907796


Ignore:
Timestamp:
07/11/2018 05:17:07 PM (8 years ago)
Author:
perfecttense
Message:

Added better error reporting

Location:
perfect-tense/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • perfect-tense/trunk/perfect_tense.php

    r1907346 r1907796  
    314314      else{
    315315          // all same
     316        $prev_app_key = get_option('perfect_tense_app_key');
     317
     318        if ($prev_app_key && $prev_app_key != "") {
     319          update_option('ptense_api_key_valid', 'yes'); // make sure this is set
     320        }
    316321      }
    317322     
    318323      $perfect_tense_api_key = get_option('perfect_tense_api_key');
    319324     
    320 
    321 
    322 
    323325      if($_POST['ptense_save_post'] == 'none')
    324326      {
     
    430432                  <legend class="screen-reader-text"><span>Comments</span></legend>
    431433                  <label for="ptense_comment_mark_spam">
    432                     <input name="ptense_comment_mark_spam" type="checkbox" id="ptense_comment_mark_spam" value="1" <?php echo $ptense_comment_mark_spam;?>>
     434                    <input name="ptense_comment_mark_spam" type="checkbox" id="ptense_comment_mark_spam" value="1" <?php echo $ptense_comment_mark_spam;?> >
    433435                    Automatically mark new comments as spam with a grammar score of <input name="ptense_comment_min_score" type="number" min="0" max="100" id="ptense_comment_min_score" value="<?php echo $ptense_comment_min_score; ?>" class="small-text"> or lower.
    434436                  </label>
     
    447449                  <legend class="screen-reader-text"><span>Check Posts</span></legend>
    448450                  <label for="ptense_save_post_none">
    449                     <input type="radio" name="ptense_save_post"  id="ptense_save_post_none" value="none" <?php echo $ptense_save_post_none; ?>>
     451                    <input type="radio" name="ptense_save_post"  id="ptense_save_post_none" value="none" <?php echo $ptense_save_post_none; ?> >
    450452                    Do nothing
    451453                  </label>
     
    460462                  <legend class="screen-reader-text"><span>Save post as draft</span></legend>
    461463                  <label for="ptense_save_post_draft">
    462                     <input type="radio" name="ptense_save_post"  id="ptense_save_post_draft" value="draft" <?php echo $ptense_save_post_draft; ?>>
     464                    <input type="radio" name="ptense_save_post"  id="ptense_save_post_draft" value="draft" <?php echo $ptense_save_post_draft; ?> >
    463465                    Move new posts to draft and require admin approval if they have a grammar score of <input name="ptense_save_post_draft_score" type="number" min="0" max="100" id="ptense_save_post_draft_score" value="<?php echo $ptense_save_post_draft_score; ?>" class="small-text"> or lower
    464466                  </label>
     
    472474                  <legend class="screen-reader-text"><span>Correct the post.</span></legend>
    473475                  <label for="ptense_save_post_correct">
    474                     <input name="ptense_save_post" type="radio" id="ptense_save_post_correct" value="correct" <?php echo $ptense_save_post_correct; ?>>
     476                    <input name="ptense_save_post" type="radio" id="ptense_save_post_correct" value="correct" <?php echo $ptense_save_post_correct; ?> >
    475477                    Proofread and correct new posts before publishing.
    476478                  </label>
  • perfect-tense/trunk/ptense_functionality_1.php

    r1906657 r1907796  
    134134        }
    135135      }
     136
     137      function ptense_format_report_url(error) {
     138        var supportUrlWithParams = "https://www.perfecttense.com/contact";
     139        supportUrlWithParams += `?subject=${encodeURIComponent("WordPress Error")}`;
     140
     141        var message
     142
     143        if (error.stack) {
     144          message = `Stack trace:\n${error.stack.slice(0, 200)}...`;
     145        } else {
     146          message = error.toString().slice(0, 100);
     147        }
     148
     149        supportUrlWithParams += `&message=${encodeURIComponent(message)}`;
     150
     151        return supportUrlWithParams;
     152      }
     153
     154      function ptense_handle_error(e) {
     155        console.log(e)
     156        jQuery('#ptense_dialog').html(`Oops, it looks like there was an error and we can\'t process your text.<br><br><a href=${ptense_format_report_url(e)} target='_blank'>Contact Support</a>`);
     157        jQuery('#ptense_dialog').dialog('open');
     158      }
     159
    136160
    137161      var lastJobText = null;
     
    338362
    339363
    340           jQuery.post(ajaxurl, {action: 'ptense_get_usage'}, function(response) {
    341               if(response == 'Api key is not defined')
    342               {
    343                   jQuery('#ptense_dialog').html('Oops, looks like you have not set a valid Perfect Tense API key yet.');
    344               jQuery('#ptense_dialog').dialog('open');
    345                   return;
    346               }
    347             if( response > 0)
    348             {
    349               jQuery.post(ajaxurl, {action: 'ptense_get_job', data: get_tinyMce_content() }, function(response2) {
    350                 if(response2 == '') {
    351                   //console.log("Empty response!")
    352                   return;
     364          try {
     365
     366              jQuery.post(ajaxurl, {action: 'ptense_get_usage'}, function(response) {
     367                if(response == 'Api key is not defined')
     368                {
     369                    jQuery('#ptense_dialog').html('Oops, looks like you have not set a valid Perfect Tense API key yet.');
     370                jQuery('#ptense_dialog').dialog('open');
     371                    return;
    353372                }
    354 
    355                 try {
    356 
    357                   response2 = JSON.parse(response2);
    358 
    359                   var job_details = response2.job_detail;
    360                   var score = response2.score;
    361                   var cnt = job_details.length;
    362                   var bug_list = [];
    363  
    364                   for(var i = 0 ; i < job_details.length; i++)
    365                   {
    366                       if(job_details[i].isSuggestion) {
    367                         continue;
     373                if( response > 0)
     374                {
     375
     376                  try {
     377                    jQuery.post(ajaxurl, {action: 'ptense_get_job', data: get_tinyMce_content() }, function(response2) {
     378                     
     379                      try {
     380
     381                        if(response2 == '') {
     382                          //console.log("Empty response!")
     383                          throw "Unable to correct article. Please contact support.";
     384                          return;
     385                        }
     386
     387                        response2 = JSON.parse(response2);
     388
     389                        var job_details = response2.job_detail;
     390                        var score = response2.score;
     391                        var cnt = job_details.length;
     392                        var bug_list = [];
     393
     394                        for(var i = 0 ; i < job_details.length; i++)
     395                        {
     396                            if(job_details[i].isSuggestion) {
     397                              continue;
     398                            }
     399                               
     400                            bug_list.push({
     401                                sentenceIndex : job_details[i].sentenceIndex,
     402                                index         : job_details[i].transformIndex,
     403                                result        : job_details[i].sentAfterTransform,
     404                                off           : job_details[i].off,
     405                                original_word : job_details[i].getAffectedText,
     406                                new_word      : job_details[i].getAddedText,
     407                                current_sent  : job_details[i].currentSentText,
     408                                docOffset     : job_details[i].documentOffset
     409                            })
     410                        }
     411                        cnt = bug_list.length;
     412
     413                        //console.log("Doing bug list!");
     414                        doBugList(bug_list, cnt, score);
     415
     416                        // cache to re-use on apply
     417                        lastJobText = response2.job_text;
     418                        lastBugList = bug_list;
     419                      } catch (e) {
     420                        ptense_handle_error(e)
    368421                      }
    369                          
    370                       bug_list.push({
    371                           sentenceIndex : job_details[i].sentenceIndex,
    372                           index         : job_details[i].transformIndex,
    373                           result        : job_details[i].sentAfterTransform,
    374                           off           : job_details[i].off,
    375                           original_word : job_details[i].getAffectedText,
    376                           new_word      : job_details[i].getAddedText,
    377                           current_sent  : job_details[i].currentSentText,
    378                           docOffset     : job_details[i].documentOffset
    379                       })
     422                     
     423                    });
     424                  } catch (e) {
     425                    ptense_handle_error(e)
    380426                  }
    381                   cnt = bug_list.length;
    382 
    383                   //console.log("Doing bug list!");
    384                   doBugList(bug_list, cnt, score);
    385 
    386                   // cache to re-use on apply
    387                   lastJobText = response2.job_text;
    388                   lastBugList = bug_list;
     427                }else{
     428                  jQuery('#ptense_dialog').html('Oops, it looks like you have no more usage left for today. If you would like to upgrade your usage, contact us.');
     429                  jQuery('#ptense_dialog').dialog('open');
    389430                }
    390                  catch (e) {
    391                       //console.log(e)
    392                       jQuery('#ptense_dialog').html('Oops, it looks like there is an error and we can\'t process your text.');
    393             jQuery('#ptense_dialog').dialog('open');
    394                  }
    395 
    396               });
    397 
    398             }else{
    399               jQuery('#ptense_dialog').html('Oops, it looks like you have no more usage left for today. If you would like to upgrade your usage, contact us.');
    400               jQuery('#ptense_dialog').dialog('open');
    401             }
    402           });
    403 
     431            });
     432          } catch (e) {
     433            ptense_handle_error(e)
     434          }
    404435        });
    405436      });
  • perfect-tense/trunk/ptense_functions.php

    r1906657 r1907796  
    33
    44function ptense_get_all_settings(){
     5
    56  $settings = array(
    67    'ptense_api_key_valid' => null,
     
    4950
    5051  $usage = $ptClient->getUsage($api_key);
     52
    5153  if( isset( $usage['apiRemainToday'] ) )
    5254  {
Note: See TracChangeset for help on using the changeset viewer.