Explorar el Código

Adding logic to work with Heartbeat comments

logicp hace 7 años
padre
commit
e1def131b7
Se han modificado 3 ficheros con 50 adiciones y 56 borrados
  1. 8 48
      js/statusmessage.js
  2. 33 1
      src/Form/StatusForm.php
  3. 9 7
      src/StatusHeartPost.php

+ 8 - 48
js/statusmessage.js

@@ -49,54 +49,14 @@
         }
       }
 
-      // function buildPreview(doc) {
-      //   var imgs = doc.querySelectorAll('img');
-      //   var metaTags = doc.querySelectorAll('meta');
-      //   var title = doc.querySelector('title');
-      //   var markup;
-      //   var description;
-      //   var previewImage = null;
-      //
-      //   imgs.forEach(function (img) {
-      //     if (previewImage === null) {
-      //       var imgClasses = img.classList;
-      //
-      //       if (imgClasses.value.toLowerCase().indexOf('logo') || img.alt.toLowerCase().indexOf('logo') || img.title.toLowerCase().indexOf('logo') || img.src.toLowerCase().indexOf('logo')) {
-      //         previewImage = img;
-      //       }
-      //     }
-      //   });
-      //
-      //   metaTags.forEach(function (metaTag) {
-      //     if (metaTag.name == 'description') {
-      //       description = metaTag.content;
-      //
-      //     }
-      //   });
-      //
-      //   console.dir(description);
-      //   console.dir(previewImage.src);
-      //   var outer = document.createElement('div');
-      //   outer.className = 'statusmessage-preview';
-      //   // var closeButton = document.createElement('button');
-      //   // closeButton.className('statusmessage-preview-close');
-      //   // closeButton.innerHTML('✖');
-      //   var titlemarkup = document.createElement('h4');
-      //   titlemarkup.innerHTML = title.innerHTML;
-      //   var descmarkup = document.createElement('p');
-      //   descmarkup.innerText = description;
-      //   var imgmarkup = document.createElement('img');
-      //   imgmarkup.src = previewImage.src;
-      //
-      //
-      //   var wrapper = document.createElement('div');
-      //   wrapper.appendChild(titlemarkup);
-      //   wrapper.appendChild(descmarkup);
-      //   wrapper.appendChild(imgmarkup);
-      //   // wrapper.appendChild(closeButton);
-      //
-      //   return wrapper;
-      // }
+      Drupal.AjaxCommands.prototype.clearPreview = function(ajax, response, status) {
+        if (response.clear == true) {
+          let oldPreviewIframe = document.querySelector('.statusmessage-preview-iframe');
+          if (oldPreviewIframe !== null) {
+            oldPreviewIframe.parentNode.removeChild(oldPreviewIframe);
+          }
+        }
+      }
 
     }
   };

+ 33 - 1
src/Form/StatusForm.php

@@ -4,8 +4,8 @@ namespace Drupal\statusmessage\Form;
 
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\heartbeat\Ajax\ClearPreviewCommand;
 use Drupal\statusmessage\Entity\Status;
-use Drupal\statusmessage\ClientGeneratorService;
 use Drupal\statusmessage\MarkupGenerator;
 use Drupal\statusmessage\StatusService;
 use Drupal\statusmessage\StatusTypeService;
@@ -284,6 +284,11 @@ $stophere = null;
 //              $feedConfig = $feedConfig = $configManager->get('heartbeat_feed.settings');
         $response = new AjaxResponse();
         $response->addCommand(new SelectFeedCommand($feedConfig->get('message')));
+        $response->addCommand(new ClearPreviewCommand(true));
+
+        $this->clearFormInput($form_state);
+        $form['message']['#default'] = '';
+        $form['message']['#value'] = '';
 
         return $response;
       }
@@ -302,5 +307,32 @@ $stophere = null;
   public function submitForm(array &$form, FormStateInterface $form_state) {
 
   }
+
+  /**
+   * Clears form input.
+   *
+   * @param array $form
+   *   The form.
+   * @param \Drupal\Core\Form\FormStateInterface $form_state
+   *   The form state.
+   */
+  protected function clearFormInput(FormStateInterface $form_state) {
+    // Replace the form entity with an empty instance.
+    // Clear user input.
+    $input = $form_state->getUserInput();
+    // We should not clear the system items from the user input.
+    $clean_keys = $form_state->getCleanValueKeys();
+    $clean_keys[] = 'ajax_page_state';
+    foreach ($input as $key => $item) {
+      if (!in_array($key, $clean_keys) && substr($key, 0, 1) !== '_') {
+        unset($input[$key]);
+      }
+    }
+    $form_state->setUserInput($input);
+    // Rebuild the form state values.
+    $form_state->setRebuild();
+    $form_state->setStorage([]);
+  }
+
 }
 

+ 9 - 7
src/StatusHeartPost.php

@@ -98,8 +98,7 @@ class StatusHeartPost implements SharedContentInterface {
         'value' => '<div class="status-heartpost-description"> ' . $this->generator->getDescription() . '</div>',
         'format' => 'full_html'
       ]);
-    }
-    else {
+    } else {
       $append = TRUE;
     }
 
@@ -121,8 +120,13 @@ class StatusHeartPost implements SharedContentInterface {
   private function getMedia() {
 
     if ($this->generator->getImage()) {
-      $mainImage = file_get_contents($this->generator->getImage());
-      $file = file_save_data($mainImage, 'public://' . substr($this->generator->getImage(), strrpos($this->generator->getImage(), '/') + 1), FILE_EXISTS_REPLACE);
+
+      $ext = strtolower(pathinfo($this->generator->getImage(), PATHINFO_EXTENSION));
+      $ext = strpos($ext, '?') ? substr($ext, 0, strpos($ext, '?')) : $ext;
+      $fileUrl = strlen($ext) > 0 ? substr($this->generator->getImage(), 0, strpos($this->generator->getImage(), $ext)) . $ext : $this->generator->getImage();
+
+      $mainImage = file_get_contents($fileUrl);
+      $file = file_save_data($mainImage, 'public://' . substr($fileUrl, strrpos($this->generator->getImage(), '/') + 1), FILE_EXISTS_REPLACE);
 
       return $file->id();
     }
@@ -138,9 +142,7 @@ class StatusHeartPost implements SharedContentInterface {
     $tagsArray = explode('#', $message);
     $num = count($tagsArray);
 
-    if ($num > 1) {
-      unset($tagsArray[0]);
-    }
+    unset($tagsArray[0]);
 
     foreach ($tagsArray as $hashtag) {
       if ($i === $num - 1) {