danny0838 / webscrapbook

A browser extension that captures web pages to local device or backend server for future retrieval, organization, annotation, and edit. This project inherits from legacy Firefox add-on ScrapBook X.
Mozilla Public License 2.0
908 stars 121 forks source link

Some additions for the capturings methods? #324

Closed nik-gr closed 1 year ago

nik-gr commented 1 year ago

I have a tree structure with several folders and subfolders that goes deep and I rarely capture something on the root folder. As it is now there is not realy an easy way to capture something and choose the folder where it must be placed.

*1 Can you provide a setting so that when we choose capture/capture(source) instead of the default (=capture page and place it under the root folder) to pop up a window with the tree (the same window that opens when you click "Select" from the "Capture tabs as..." tab) and choose from there the parent folder?

2 Can you add a text field in the "Capture tabs as..." window, at the end of the "Target item:" line, where someone can give target's item ID instead of getting it using "Select" button? Sometimes happen to have following captures that will endup in same folder or some sibling one. Instead of choosing the folder path each time from the popup window with the tree, it could save time to be able to choose it from sidebar where you can get its ID with ctrl-c and paste it in that text field (at sidebar focus remains and even if you want to choose a sibling it will still be just a couple of key strokes)

3 Is it possible to have options for both capture and capture(source) when dragging from the url, the one with left button dragging and the other with the right? It is similar with the dragging from the menu option but with one less click and also with a better consistency (some times it takes me several attempts to achive dragging from the menu, I didn't manage to figure out why)

4 Also I think it will be a welcome addition if from the popup window with the tree someone could also choose the position where prefers to place the captured page: After selecting the item that wants to be before/next of the new one, can use ctrl-up/down with an according visual effect (like when dragging) to show where he wants to place it.

danny0838 commented 1 year ago

I have a tree structure with several folders and subfolders that goes deep and I rarely capture something on the root folder. As it is now there is not realy an easy way to capture something and choose the folder where it must be placed.

*1 Can you provide a setting so that when we choose capture/capture(source) instead of the default (=capture page and place it under the root folder) to pop up a window with the tree (the same window that opens when you click "Select" from the "Capture tabs as..." tab) and choose from there the parent folder?

There is already a command for a quick capture and one for a detailed capture. We are unlikely going to implement more trivial options.

2 Can you add a text field in the "Capture tabs as..." window, at the end of the "Target item:" line, where someone can give target's item ID instead of getting it using "Select" button? Sometimes happen to have following captures that will endup in same folder or some sibling one. Instead of choosing the folder path each time from the popup window with the tree, it could save time to be able to choose it from sidebar where you can get its ID with ctrl-c and paste it in that text field (at sidebar focus remains and even if you want to choose a sibling it will still be just a couple of key strokes)

You can do this by entering the advanced mode (from the Capture As...) and pasting the ID to the "parentID" field. As there is the advanced mode for a very detailed text-based configuration, we are unlikely going to implement more trivial possible UI combinations.

3 Is it possible to have options for both capture and capture(source) when dragging from the url, the one with left button dragging and the other with the right? It is similar with the dragging from the menu option but with one less click and also with a better consistency (some times it takes me several attempts to achive dragging from the menu, I didn't manage to figure out why)

No. The related browser and extension API knows nothing but the URL when dragging the URL icon. It is impossible unless the browser vendors (and possibly the Ecmascript spec) have changed them.

4 Also I think it will be a welcome addition if from the popup window with the tree someone could also choose the position where prefers to place the captured page: After selecting the item that wants to be before/next of the new one, can use ctrl-up/down with an according visual effect (like when dragging) to show where he wants to place it.

I don't get you. You mean the sidebar or the tree popup from the choose button of the target item in the Capture As popup?

nik-gr commented 1 year ago

There is already a command for a quick capture and one for a detailed capture. We are unlikely going to implement more trivial options.

I was having in mind a setting in the general settings of the extension that will allow for the quick capture instead of capturing at root to do it in a folder that user will choose from a window that will popup before starting capturing. For those who use folders and I believe most users do, they won't want to leave captures unorganised in the root folder. That can be the easiest way to do it

You can do this by entering the advanced mode (from the Capture As...) and pasting the ID to the "parentID" field.

Yes I know, I was part of the discussion about it when it was 1st introduced, since then more convenient ways have been implemented. My suggestion above was for a way of doing captures in a faster way. For someone who is working mostly with keyboard like me it can improve much the time to complete captures under specific conditions. I only suggested it because I don't think it changes much the overall experience for the non keyboard users and (I'm guessing) it doesn't need much coding

The related browser and extension API knows nothing but the URL when dragging the URL icon

Isn't it possible to get the active tabs for each window? if it is then it is possible to locate the tab to be captured, in the very rare case where the same url is open in the active tab of more than one window there can be a related message and abort of the procedure (or just getting the one from the active window)

You mean the sidebar or the tree popup from the choose button of the target item in the Capture As popup?

About the popup from the choose button of the target item (for me on Firefox is "Select..." button)

danny0838 commented 1 year ago

There is already a command for a quick capture and one for a detailed capture. We are unlikely going to implement more trivial options.

I was having in mind a setting in the general settings of the extension that will allow for the quick capture instead of capturing at root to do it in a folder that user will choose from a window that will popup before starting capturing. For those who use folders and I believe most users do, they won't want to leave captures unorganised in the root folder. That can be the easiest way to do it

  1. Many people are OK with getting newly captured items put under the root and organize them someday.
  2. There is already a way to quickly perform a capture to a desired position by dragging and dropping.
  3. This design is the same as legacy ScrapBook (X).

As such, we consider this trivial.

You can do this by entering the advanced mode (from the Capture As...) and pasting the ID to the "parentID" field.

Yes I know, I was part of the discussion about it when it was 1st introduced, since then more convenient ways have been implemented. My suggestion above was for a way of doing captures in a faster way. For someone who is working mostly with keyboard like me it can improve much the time to complete captures under specific conditions. I only suggested it because I don't think it changes much the overall experience for the non keyboard users and (I'm guessing) it doesn't need much coding

We used to consider using a pure text input for the selected item. Unfortunately showing ID rather than title is probably bad for user confirmation. The HTML standard does not support a select element that can input manually, and adding an extra textbox may confuse the user. A more elegant approach would probably need a good design and be a relatively large code work.

The related browser and extension API knows nothing but the URL when dragging the URL icon

Isn't it possible to get the active tabs for each window? if it is then it is possible to locate the tab to be captured, in the very rare case where the same url is open in the active tab of more than one window there can be a related message and abort of the procedure (or just getting the one from the active window)

The dropped data is just a URL and there is no guarantee that the source is the current tab. It can be a tab from another window or another browser, or a hyperlink from a webpage or another application. The only safe way is to interpret it as a URL; otherwise it will be unreliable and break the functionality of capturing a linked page through dragging a hyperlink.

You mean the sidebar or the tree popup from the choose button of the target item in the Capture As popup?

About the popup from the choose button of the target item (for me on Firefox is "Select..." button)

The popup is designed to return an item. Further addition would complicate many things and need a large redesign.

Although there is a Target position: option for customizing where to place the captured item, it is probably not easy enough to calculate the correct number. Basically the easiest way to position a capture is through DnD. This is also what legacy ScrapBook (X) is designed.

nik-gr commented 1 year ago

The dropped data is just a URL and there is no guarantee that the source is the current tab. It can be a tab from another window or another browser, or a hyperlink from a webpage or another application. The only safe way is to interpret it as a URL; otherwise it will be unreliable and break the functionality of capturing a linked page through dragging a hyperlink.

But that comes to how a user acts. Let's say an implementation where a dragging with left click will trigger a capture(source) while a right click will trigger a capture and will do that only if the current tab of the current window has the same url otherwise it will proceed with a capture(source). This way capture will happen only if the user intentionally acts as he is supposed to in order to trigger that and in all other cases it will proceed with capture(source) as with what is happening now

This design is the same as legacy ScrapBook (X).

it's almost the same, you cannot drag inside closed folders (with scrapbook, folders were opening automatically when kept for a while the dragging above them). for someone who wants to capture a page and place it in a folder using keyboard it would be: pressing shortcut for capturing, navigate in the popup, done vs pressing shortcut for capture as, navigate to the button to select folder, navigate in the popup, navigate to capture button, close the tab and navigate back to the tab where he was before I don't see any disadvantage to have one more option in the general settings that can make things easier if it isn't too much work to implement it ( which I cannot know)

adding an extra textbox may confuse the user

That could be solved with a tooltip but in the end is about what you think is best for the project. Thanks for considering it and for the explanations

danny0838 commented 1 year ago

The dropped data is just a URL and there is no guarantee that the source is the current tab. It can be a tab from another window or another browser, or a hyperlink from a webpage or another application. The only safe way is to interpret it as a URL; otherwise it will be unreliable and break the functionality of capturing a linked page through dragging a hyperlink.

But that comes to how a user acts. Let's say an implementation where a dragging with left click will trigger a capture(source) while a right click will trigger a capture and will do that only if the current tab of the current window has the same url otherwise it will proceed with a capture(source). This way capture will happen only if the user intentionally acts as he is supposed to in order to trigger that and in all other cases it will proceed with capture(source) as with what is happening now

First, left/right clicking is not applicable as it's a drop instead of a click event.

Second, we already have that. When dropping a tab-like, the user can hold Shift for "Capture source", hold Ctrl for "Capture as", and hold Alt for "Capture bookmark". When dropping a URL-like, the user can hold Shift for "Capture tab" (auto opens a temporary new tab for capturing), hold Ctrl for "Capture as", and hold Alt for "Capture bookmark".

As previously mentioned, dropping the URL icon is exactly same as dropping a hyperlink for the browser, and will always fall into the latter case.

This design is the same as legacy ScrapBook (X).

it's almost the same, you cannot drag inside closed folders (with scrapbook, folders were opening automatically when kept for a while the dragging above them). for someone who wants to capture a page and place it in a folder using keyboard it would be: pressing shortcut for capturing, navigate in the popup, done vs pressing shortcut for capture as, navigate to the button to select folder, navigate in the popup, navigate to capture button, close the tab and navigate back to the tab where he was before

I don't think you have provided a good reasoning to refute my argument, that the design is same for WSB and legacy SB in the aspect that there is only a command for instant capturing and another for detailed capturing.

I don't see any disadvantage to have one more option in the general settings that can make things easier if it isn't too much work to implement it ( which I cannot know)

The added burden of code reworking/testing and future maintenance is always a big issue we have to consider. And this is the disadvantage.

nik-gr commented 1 year ago

I meant left/right button dragging or are you saying it's not possible/trivial to trace if it is a a left/right button dragging?

I agree there is a way to do it, it requires an additional click and as I wrote not 100% reliable (sometimes menu items are not dragable for whatever reason and there is a need to close and reopen menu) but it is there and it is a good option. The only reason I suggested this (small) improvement is because the functionality is there, I cannot imagine the need of more than a couple of lines of code to implement and it changes totally nothing for the users who won't want to use it.


I don't think you have provided a good reasoning to refute my argument, that the design is same for WSB and legacy SB in the aspect that there is only a command for instant capturing and another for detailed capturing.

What I said was that unlike with scrapbook wsb doesn't provide a complete solution for capture to specific folder using dragging (unless all folders and subfolders are already open in the sidebar).

There is already a way to quickly perform a capture to a desired position by dragging and dropping. This design is the same as legacy ScrapBook (X).

The added burden of code reworking/testing and future maintenance is always a big issue we have to consider.

As a I said since the basic functionality exist (the popup with the tree) I assumed it won't need much work but you develop the project you know better what it takes to do something (if it brings additional burden of course it's something to consider)

danny0838 commented 1 year ago

I meant left/right button dragging or are you saying it's not possible/trivial to trace if it is a a left/right button dragging?

I agree there is a way to do it, it requires an additional click and as I wrote not 100% reliable (sometimes menu items are not dragable for whatever reason and there is a need to close and reopen menu) but it is there and it is a good option. The only reason I suggested this (small) improvement is because the functionality is there, I cannot imagine the need of more than a couple of lines of code to implement and it changes totally nothing for the users who won't want to use it.

There is NO so called "right button dragging" supported in all current modern browsers, period.

I don't think you have provided a good reasoning to refute my argument, that the design is same for WSB and legacy SB in the aspect that there is only a command for instant capturing and another for detailed capturing.

What I said was that unlike with scrapbook wsb doesn't provide a complete solution for capture to specific folder using dragging (unless all folders and subfolders are already open in the sidebar).

The issue is minor enough and should be a separated issue. And it's unlikely fixed as the behavior of legacy ScrapBook is automatically controlled by XUL, which is not supported in the modern browser.

There is already a way to quickly perform a capture to a desired position by dragging and dropping. This design is the same as legacy ScrapBook (X).

The added burden of code reworking/testing and future maintenance is always a big issue we have to consider.

As a I said since the basic functionality exist (the popup with the tree) I assumed it won't need much work but you develop the project you know better what it takes to do something (if it brings additional burden of course it's something to consider)

We always evaluate how much code work is required before deciding whether to go on for anything. And our conclusion is that it's too costy for this trivial addition.

nik-gr commented 1 year ago

There is NO so called "right button dragging" supported in all current modern browsers, period.

Why this tone? I'm just asking something and gave some suggestions. If you want you are considering them if not you don't. You have made a great job in this project I still want to express my thanks with a donation regardless of anything. If you are against suggestions that's also your right just let me know/post it in the repository and I will respect it.

Web development is not my field, I don't see any point to check if it's possible, I am not here to debate, you don't want to do it/can't be done ok fine. What I had in mind was that since you can know when a mouse button is pressed and released, to use that knowledge in the code that handles the dragging event.If you find it dificult/cannot be done fair enough end of discussion.

The issue is minor enough

(it depends of the usage, with 10gbs+ data and 1K+ folders it's not a minnor, it basically eliminates the feature of choosing a saving folder with dragging - and it is to the point of my suggestion: an easy way to capture page at a chosen folder)


Thank you for taking the time to consider and explain on all the suggestions

danny0838 commented 1 year ago

There is NO so called "right button dragging" supported in all current modern browsers, period.

Why this tone? I'm just asking something and gave some suggestions. If you want you are considering them if not you don't. You have made a great job in this project I still want to express my thanks with a donation regardless of anything. If you are against suggestions that's also your right just let me know/post it in the repository and I will respect it.

Web development is not my field, I don't see any point to check if it's possible, I am not here to debate, you don't want to do it/can't be done ok fine. What I had in mind was that since you can know when a mouse button is pressed and released, to use that knowledge in the code that handles the dragging event.If you find it dificult/cannot be done fair enough end of discussion.

This is the THIRD time we are talking about a known impossible approach, which is unlikely productive.

If you are confident on your hypothesis, write a working code to prove it. Otherwise, try another approach if you're still constructive. Thank you.

nik-gr commented 1 year ago

Drop event can be triggered with pressing of the right button. The main reason for the suggestion was to have a way to use this dragging utility to provide both capture pages and capture(source) pages. Now that I did endup checking the event properties, there is also the possibility to do it by having a key pressed while dropping.