@@ -58,5 +58,9 @@
 | 
			
		||||
  "excerpt": {
 | 
			
		||||
    "message": "Add content",
 | 
			
		||||
    "description": "Option to add the webpage content into the email"
 | 
			
		||||
  },
 | 
			
		||||
  "selectDomToSend": {
 | 
			
		||||
    "message": "Select DOM To Send",
 | 
			
		||||
    "description": "Select DOM To Send"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -58,5 +58,9 @@
 | 
			
		||||
  "excerpt": {
 | 
			
		||||
    "message": "Ajouter le contenu",
 | 
			
		||||
    "description": "Option to add the webpage content into the email"
 | 
			
		||||
  },
 | 
			
		||||
  "selectDomToSend": {
 | 
			
		||||
    "message": "Partie à envoyer par email",
 | 
			
		||||
    "description": "Select DOM To Send"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,46 @@
 | 
			
		||||
import ext from "./utils/ext";
 | 
			
		||||
import storage from "./utils/storage";
 | 
			
		||||
 | 
			
		||||
let onMenuAdded = function() {
 | 
			
		||||
  if (ext.browser.runtime.lastError) {
 | 
			
		||||
    console.log(`Error: ${ext.browser.runtime.lastError}`);
 | 
			
		||||
  } else {
 | 
			
		||||
    console.log("Readlater menu created successfully");
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
ext.contextMenus.create(
 | 
			
		||||
  {
 | 
			
		||||
    id: "dom-selection",
 | 
			
		||||
    title: ext.i18n.getMessage("selectDomToSend"),
 | 
			
		||||
    contexts: ["all"]
 | 
			
		||||
  },
 | 
			
		||||
  onMenuAdded
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
ext.contextMenus.onClicked.addListener(function(info, tab) {
 | 
			
		||||
  if ("dom-selection" === info.menuItemId) {
 | 
			
		||||
    var page_data = {
 | 
			
		||||
      title: "",
 | 
			
		||||
      description: "",
 | 
			
		||||
      image: "",
 | 
			
		||||
      comment: "",
 | 
			
		||||
      url: document.location.href
 | 
			
		||||
    };
 | 
			
		||||
    ext.tabs.sendMessage(tab.id, { action: "process-page" }, function(data) {
 | 
			
		||||
      ext.tabs.sendMessage(tab.id, { action: "DOM", data: data }, function(
 | 
			
		||||
        response
 | 
			
		||||
      ) {
 | 
			
		||||
        if (response && response.action === "saved") {
 | 
			
		||||
          console.log(ext.i18n.getMessage("savedSuccessfully"));
 | 
			
		||||
        } else {
 | 
			
		||||
          console.log(response.error + " (" + response.status + ")");
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
ext.runtime.onMessage.addListener(function(request, sender, sendResponse) {
 | 
			
		||||
  if (request.action === "perform-save") {
 | 
			
		||||
    var data = request.data;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,35 +1,67 @@
 | 
			
		||||
import ext from "./utils/ext";
 | 
			
		||||
import storage from "./utils/storage";
 | 
			
		||||
 | 
			
		||||
var extractTags = () => {
 | 
			
		||||
  var url = document.location.href;
 | 
			
		||||
let extractDOM = () => {
 | 
			
		||||
  let indexInParent = node => {
 | 
			
		||||
    let children = node.parentNode.childNodes;
 | 
			
		||||
    let num = 0;
 | 
			
		||||
    for (let i = 0; i < children.length; i++) {
 | 
			
		||||
      if (children[i] === node) return num;
 | 
			
		||||
      if (children[i].nodeType === 1) num++;
 | 
			
		||||
    }
 | 
			
		||||
    return -1;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  let gx = el => {
 | 
			
		||||
    let xp = "";
 | 
			
		||||
    for (; el && el.nodeType === 1; el = el.parentNode) {
 | 
			
		||||
      let id = indexInParent(el) + 1; // jQuery(el.parentNode).children(el.tagName).index(el)+1;
 | 
			
		||||
      id = id > 1 ? "[" + id + "]" : "";
 | 
			
		||||
      xp = "/" + el.tagName.toLowerCase() + id + xp;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return xp;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  document.addEventListener("click", function(evt) {
 | 
			
		||||
    let tar = evt.target;
 | 
			
		||||
    while (tar && tar !== this) {
 | 
			
		||||
      if (tar.matches(".shikihover")) {
 | 
			
		||||
        let data = extractTags();
 | 
			
		||||
        data.xpath = gx(tar);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
let extractTags = () => {
 | 
			
		||||
  let url = document.location.href;
 | 
			
		||||
  if (!url || !url.match(/^http/)) {
 | 
			
		||||
    console.error("Invalid URL : " + url);
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  var data = {
 | 
			
		||||
  let data = {
 | 
			
		||||
    title: "",
 | 
			
		||||
    description: "",
 | 
			
		||||
    image: "",
 | 
			
		||||
    url: url
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  var ogTitle = document.querySelector("meta[property='og:title']");
 | 
			
		||||
  let ogTitle = document.querySelector("meta[property='og:title']");
 | 
			
		||||
  if (ogTitle) {
 | 
			
		||||
    data.title = ogTitle.getAttribute("content");
 | 
			
		||||
  } else {
 | 
			
		||||
    data.title = document.title;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  var descriptionTag =
 | 
			
		||||
  let descriptionTag =
 | 
			
		||||
    document.querySelector("meta[property='og:description']") ||
 | 
			
		||||
    document.querySelector("meta[name='description']");
 | 
			
		||||
  if (descriptionTag) {
 | 
			
		||||
    data.description = descriptionTag.getAttribute("content");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  var imgTag =
 | 
			
		||||
  let imgTag =
 | 
			
		||||
    document.querySelector("meta[property='og:image']") ||
 | 
			
		||||
    document.querySelector("meta[property='twitter-image']");
 | 
			
		||||
  if (imgTag) {
 | 
			
		||||
@@ -50,6 +82,10 @@ function onRequest(request, sender, sendResponse) {
 | 
			
		||||
  if (request.action === "process-page") {
 | 
			
		||||
    sendResponse(extractTags());
 | 
			
		||||
  }
 | 
			
		||||
  if (request.action === "DOM") {
 | 
			
		||||
    console.log("DOM");
 | 
			
		||||
    sendResponse(extractDOM());
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ext.runtime.onMessage.addListener(onRequest);
 | 
			
		||||
 
 | 
			
		||||
@@ -20,8 +20,7 @@ storage.get("extract", function(resp) {
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
var renderMessage = message => {
 | 
			
		||||
  var displayContainer = document.getElementById("display-container");
 | 
			
		||||
  displayContainer.textContent = message;
 | 
			
		||||
  document.getElementById("display-container").textContent = message;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
var renderBookmark = data => {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								src/styles/contentstyle.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/styles/contentstyle.css
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
div:hover,
 | 
			
		||||
section:hover {
 | 
			
		||||
  border: 3px solid yellow;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div,
 | 
			
		||||
section {
 | 
			
		||||
  border: none;
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user