Browse Source

Merge pull request #18779 from Chocobo1/webui

WebUI: Add checker for html
adaptive-webui-19844
Chocobo1 2 years ago committed by GitHub
parent
commit
5a3579a3f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 17
      src/webui/www/.htmlvalidate.json
  2. 2
      src/webui/www/.stylelintrc.json
  3. 3
      src/webui/www/package.json
  4. 4
      src/webui/www/private/addpeers.html
  5. 2
      src/webui/www/private/download.html
  6. 2
      src/webui/www/private/downloadlimit.html
  7. 2
      src/webui/www/private/edittracker.html
  8. 6
      src/webui/www/private/shareratio.html
  9. 2
      src/webui/www/private/upload.html
  10. 2
      src/webui/www/private/uploadlimit.html
  11. 4
      src/webui/www/private/views/about.html
  12. 8
      src/webui/www/private/views/filters.html
  13. 4
      src/webui/www/private/views/installsearchplugin.html
  14. 2
      src/webui/www/private/views/log.html
  15. 22
      src/webui/www/private/views/preferences.html
  16. 8
      src/webui/www/private/views/rss.html
  17. 6
      src/webui/www/private/views/rssDownloader.html
  18. 4
      src/webui/www/private/views/search.html
  19. 6
      src/webui/www/private/views/searchplugins.html

17
src/webui/www/.htmlvalidate.json

@ -0,0 +1,17 @@
{
"extends": [
"html-validate:recommended"
],
"rules": {
"empty-heading": "off",
"long-title": "off",
"no-conditional-comment": "off",
"no-inline-style": "off",
"prefer-button": "off",
"prefer-tbody": "off",
"text-content": "off",
"void-style": "off",
"wcag/h63": "off",
"wcag/h71": "off"
}
}

2
src/webui/www/.stylelintrc.json

@ -8,9 +8,7 @@
"color-hex-length": null, "color-hex-length": null,
"comment-empty-line-before": null, "comment-empty-line-before": null,
"comment-whitespace-inside": null, "comment-whitespace-inside": null,
"declaration-colon-newline-after": null,
"function-name-case": null, "function-name-case": null,
"indentation": 4,
"length-zero-no-unit": null, "length-zero-no-unit": null,
"no-descending-specificity": null, "no-descending-specificity": null,
"order/properties-alphabetical-order": true, "order/properties-alphabetical-order": true,

3
src/webui/www/package.json

@ -7,11 +7,12 @@
}, },
"scripts": { "scripts": {
"format": "js-beautify private/*.html private/scripts/*.js private/views/*.html public/*.html public/scripts/*.js && prettier --write **.css", "format": "js-beautify private/*.html private/scripts/*.js private/views/*.html public/*.html public/scripts/*.js && prettier --write **.css",
"lint": "eslint private/*.html private/scripts/*.js private/views/*.html public/*.html public/scripts/*.js && stylelint **/*.css" "lint": "eslint private/*.html private/scripts/*.js private/views/*.html public/*.html public/scripts/*.js && stylelint **/*.css && html-validate private public"
}, },
"devDependencies": { "devDependencies": {
"eslint": "*", "eslint": "*",
"eslint-plugin-html": "*", "eslint-plugin-html": "*",
"html-validate": "*",
"js-beautify": "*", "js-beautify": "*",
"prettier": "*", "prettier": "*",
"stylelint": "*", "stylelint": "*",

4
src/webui/www/private/addpeers.html

@ -62,8 +62,8 @@
<p>QBT_TR(List of peers to add (one IP per line):)QBT_TR[CONTEXT=PeersAdditionDialog]</p> <p>QBT_TR(List of peers to add (one IP per line):)QBT_TR[CONTEXT=PeersAdditionDialog]</p>
<textarea id="peers" rows="10" style="width: 100%;" placeholder="QBT_TR(Format: IPv4:port / [IPv6]:port)QBT_TR[CONTEXT=PeersAdditionDialog]"></textarea> <textarea id="peers" rows="10" style="width: 100%;" placeholder="QBT_TR(Format: IPv4:port / [IPv6]:port)QBT_TR[CONTEXT=PeersAdditionDialog]"></textarea>
<div style="margin-top: 10px; text-align: center;"> <div style="margin-top: 10px; text-align: center;">
<button onclick="parent.closeWindows();">QBT_TR(Cancel)QBT_TR[CONTEXT=PeersAdditionDialog]</button> <button type="button" onclick="parent.closeWindows();">QBT_TR(Cancel)QBT_TR[CONTEXT=PeersAdditionDialog]</button>
<button id="addPeersOk">QBT_TR(Ok)QBT_TR[CONTEXT=PeersAdditionDialog]</button> <button type="button" id="addPeersOk">QBT_TR(Ok)QBT_TR[CONTEXT=PeersAdditionDialog]</button>
</div> </div>
</div> </div>
</body> </body>

2
src/webui/www/private/download.html

@ -13,7 +13,7 @@
</head> </head>
<body> <body>
<iframe id="download_frame" name="download_frame" class="invisible" src="about:blank"></iframe> <iframe id="download_frame" name="download_frame" class="invisible" title="" src="about:blank"></iframe>
<form action="api/v2/torrents/add" enctype="multipart/form-data" method="post" id="downloadForm" style="text-align: center;" target="download_frame" autocorrect="off" autocapitalize="none"> <form action="api/v2/torrents/add" enctype="multipart/form-data" method="post" id="downloadForm" style="text-align: center;" target="download_frame" autocorrect="off" autocapitalize="none">
<div style="text-align: center;"> <div style="text-align: center;">
<br /> <br />

2
src/webui/www/private/downloadlimit.html

@ -14,7 +14,7 @@
<body> <body>
<div style="width: 100%; text-align: center; margin: 0 auto; overflow: hidden"> <div style="width: 100%; text-align: center; margin: 0 auto; overflow: hidden">
<div id="dllimitSlider" class="slider"> <div id="dllimitSlider" class="slider">
<div id="dllimitUpdate" class="update">QBT_TR(Download limit:)QBT_TR[CONTEXT=PropertiesWidget] <input id="dllimitUpdatevalue" size="6" placeholder="∞" style="text-align: center;"> <span id="dlLimitUnit">QBT_TR(KiB/s)QBT_TR[CONTEXT=SpeedLimitDialog]</span></div> <div id="dllimitUpdate" class="update">QBT_TR(Download limit:)QBT_TR[CONTEXT=PropertiesWidget] <input type="text" id="dllimitUpdatevalue" size="6" placeholder="∞" style="text-align: center;"> <span id="dlLimitUnit">QBT_TR(KiB/s)QBT_TR[CONTEXT=SpeedLimitDialog]</span></div>
<div class="sliderWrapper"> <div class="sliderWrapper">
<div id="dllimitSliderknob" class="sliderknob"></div> <div id="dllimitSliderknob" class="sliderknob"></div>
<div id="dllimitSliderarea" class="sliderarea"></div> <div id="dllimitSliderarea" class="sliderarea"></div>

2
src/webui/www/private/edittracker.html

@ -61,7 +61,7 @@
<br /> <br />
<h2 class="vcenter">QBT_TR(Tracker URL:)QBT_TR[CONTEXT=TrackerListWidget]</h2> <h2 class="vcenter">QBT_TR(Tracker URL:)QBT_TR[CONTEXT=TrackerListWidget]</h2>
<div style="text-align: center; padding-top: 10px;"> <div style="text-align: center; padding-top: 10px;">
<input id="trackerUrl" style="width: 90%;" /> <input type="text" id="trackerUrl" style="width: 90%;" />
</div> </div>
<br /> <br />
<input type="button" value="QBT_TR(Edit)QBT_TR[CONTEXT=HttpServer]" id="editTrackerButton" /> <input type="button" value="QBT_TR(Edit)QBT_TR[CONTEXT=HttpServer]" id="editTrackerButton" />

6
src/webui/www/private/shareratio.html

@ -153,9 +153,9 @@
<body> <body>
<div style="padding: 10px 10px 0px 10px;"> <div style="padding: 10px 10px 0px 10px;">
<input type="radio" name="shareLimit" id="default" value="default" onchange="shareLimitChanged()" checked style="margin-bottom: 5px;" />QBT_TR(Use global share limit)QBT_TR[CONTEXT=UpDownRatioDialog]</br> <input type="radio" name="shareLimit" id="default" value="default" onchange="shareLimitChanged()" checked style="margin-bottom: 5px;" />QBT_TR(Use global share limit)QBT_TR[CONTEXT=UpDownRatioDialog]<br />
<input type="radio" name="shareLimit" value="none" onchange="shareLimitChanged()" style="margin-bottom: 5px;" />QBT_TR(Set no share limit)QBT_TR[CONTEXT=UpDownRatioDialog]</br> <input type="radio" name="shareLimit" value="none" onchange="shareLimitChanged()" style="margin-bottom: 5px;" />QBT_TR(Set no share limit)QBT_TR[CONTEXT=UpDownRatioDialog]<br />
<input type="radio" name="shareLimit" value="custom" onchange="shareLimitChanged()" style="margin-bottom: 5px;" />QBT_TR(Set share limit to)QBT_TR[CONTEXT=UpDownRatioDialog]</br> <input type="radio" name="shareLimit" value="custom" onchange="shareLimitChanged()" style="margin-bottom: 5px;" />QBT_TR(Set share limit to)QBT_TR[CONTEXT=UpDownRatioDialog]<br />
<div style="margin-left: 40px; margin-bottom: 5px;"> <div style="margin-left: 40px; margin-bottom: 5px;">
<input type="checkbox" id="setRatio" class="shareLimitInput" onclick="enableInputBoxes()" /> <input type="checkbox" id="setRatio" class="shareLimitInput" onclick="enableInputBoxes()" />

2
src/webui/www/private/upload.html

@ -11,7 +11,7 @@
</head> </head>
<body> <body>
<iframe id="upload_frame" name="upload_frame" class="invisible" src="about:blank"></iframe> <iframe id="upload_frame" name="upload_frame" class="invisible" title="" src="about:blank"></iframe>
<form action="api/v2/torrents/add" enctype="multipart/form-data" method="post" id="uploadForm" style="text-align: center;" target="upload_frame" autocorrect="off" autocapitalize="none"> <form action="api/v2/torrents/add" enctype="multipart/form-data" method="post" id="uploadForm" style="text-align: center;" target="upload_frame" autocorrect="off" autocapitalize="none">
<div style="margin-top: 25px; display: inline-block; border: 1px solid lightgrey; border-radius: 4px;"> <div style="margin-top: 25px; display: inline-block; border: 1px solid lightgrey; border-radius: 4px;">
<input type="file" id="fileselect" accept=".torrent, application/x-bittorrent" name="fileselect[]" multiple /> <input type="file" id="fileselect" accept=".torrent, application/x-bittorrent" name="fileselect[]" multiple />

2
src/webui/www/private/uploadlimit.html

@ -14,7 +14,7 @@
<body> <body>
<div style="width: 100%; text-align: center; margin: 0 auto; overflow: hidden"> <div style="width: 100%; text-align: center; margin: 0 auto; overflow: hidden">
<div id="uplimitSlider" class="slider"> <div id="uplimitSlider" class="slider">
<div id="uplimitUpdate" class="update">QBT_TR(Upload limit:)QBT_TR[CONTEXT=PropertiesWidget] <input id="uplimitUpdatevalue" size="6" placeholder="∞" style="text-align: center;"> <span id="upLimitUnit">QBT_TR(KiB/s)QBT_TR[CONTEXT=SpeedLimitDialog]</span></div> <div id="uplimitUpdate" class="update">QBT_TR(Upload limit:)QBT_TR[CONTEXT=PropertiesWidget] <input type="text" id="uplimitUpdatevalue" size="6" placeholder="∞" style="text-align: center;"> <span id="upLimitUnit">QBT_TR(KiB/s)QBT_TR[CONTEXT=SpeedLimitDialog]</span></div>
<div class="sliderWrapper"> <div class="sliderWrapper">
<div id="uplimitSliderknob" class="sliderknob"></div> <div id="uplimitSliderknob" class="sliderknob"></div>
<div id="uplimitSliderarea" class="sliderarea"></div> <div id="uplimitSliderarea" class="sliderarea"></div>

4
src/webui/www/private/views/about.html

@ -38,7 +38,7 @@
<td><a target="_blank" href="mailto:sledgehammer999@qbittorrent.org">sledgehammer999@qbittorrent.org</a></td> <td><a target="_blank" href="mailto:sledgehammer999@qbittorrent.org">sledgehammer999@qbittorrent.org</a></td>
</tr> </tr>
</table> </table>
</br> <br />
<h3>QBT_TR(Original author)QBT_TR[CONTEXT=HttpServer]</h3> <h3>QBT_TR(Original author)QBT_TR[CONTEXT=HttpServer]</h3>
<table> <table>
<tr> <tr>
@ -75,7 +75,7 @@
<li><u>Armenian:</u> Hrant Ohanyan (hrantohanyan@mail.am)</li> <li><u>Armenian:</u> Hrant Ohanyan (hrantohanyan@mail.am)</li>
<li><u>Basque:</u> Xabier Aramendi (azpidatziak@gmail.com)</li> <li><u>Basque:</u> Xabier Aramendi (azpidatziak@gmail.com)</li>
<li><u>Belarusian:</u> Mihas Varantsou (meequz@gmail.com)</li> <li><u>Belarusian:</u> Mihas Varantsou (meequz@gmail.com)</li>
<li><u>Bulgarian:</u> Tsvetan & Boyko Bankoff (emerge_life@users.sourceforge.net)</li> <li><u>Bulgarian:</u> Tsvetan &amp; Boyko Bankoff (emerge_life@users.sourceforge.net)</li>
<li><u>Catalan:</u> Francisco Luque Contreras (frannoe@ya.com)</li> <li><u>Catalan:</u> Francisco Luque Contreras (frannoe@ya.com)</li>
<li><u>Chinese (Simplified):</u> Guo Yue (yue.guo0418@gmail.com)</li> <li><u>Chinese (Simplified):</u> Guo Yue (yue.guo0418@gmail.com)</li>
<li><u>Chinese (Traditional):</u> Yi-Shun Wang (dnextstep@gmail.com) and 冥王歐西里斯 s8321414(Transifex)</li> <li><u>Chinese (Traditional):</u> Yi-Shun Wang (dnextstep@gmail.com) and 冥王歐西里斯 s8321414(Transifex)</li>

8
src/webui/www/private/views/filters.html

@ -1,6 +1,6 @@
<div class="filterWrapper"> <div class="filterWrapper">
<span class="filterTitle" onclick="toggleFilterDisplay('status');"> <span class="filterTitle" onclick="toggleFilterDisplay('status');">
<img src="images/go-down.svg">QBT_TR(Status)QBT_TR[CONTEXT=TransferListFiltersWidget] <img src="images/go-down.svg" alt="QBT_TR(Collapse/expand)QBT_TR[CONTEXT=TransferListFiltersWidget]">QBT_TR(Status)QBT_TR[CONTEXT=TransferListFiltersWidget]
</span> </span>
<ul class="filterList" id="statusFilterList"> <ul class="filterList" id="statusFilterList">
<li id="all_filter"><a href="#" onclick="setFilter('all');return false;"><img src="images/filter-all.svg" alt="All" />QBT_TR(All (0))QBT_TR[CONTEXT=StatusFilterWidget]</a></li> <li id="all_filter"><a href="#" onclick="setFilter('all');return false;"><img src="images/filter-all.svg" alt="All" />QBT_TR(All (0))QBT_TR[CONTEXT=StatusFilterWidget]</a></li>
@ -20,21 +20,21 @@
</div> </div>
<div class="filterWrapper"> <div class="filterWrapper">
<span class="filterTitle" onclick="toggleFilterDisplay('category');"> <span class="filterTitle" onclick="toggleFilterDisplay('category');">
<img src="images/go-down.svg">QBT_TR(Categories)QBT_TR[CONTEXT=TransferListFiltersWidget] <img src="images/go-down.svg" alt="QBT_TR(Collapse/expand)QBT_TR[CONTEXT=TransferListFiltersWidget]">QBT_TR(Categories)QBT_TR[CONTEXT=TransferListFiltersWidget]
</span> </span>
<ul class="filterList" id="categoryFilterList"> <ul class="filterList" id="categoryFilterList">
</ul> </ul>
</div> </div>
<div class="filterWrapper"> <div class="filterWrapper">
<span class="filterTitle" onclick="toggleFilterDisplay('tag');"> <span class="filterTitle" onclick="toggleFilterDisplay('tag');">
<img src="images/go-down.svg">QBT_TR(Tags)QBT_TR[CONTEXT=TransferListFiltersWidget] <img src="images/go-down.svg" alt="QBT_TR(Collapse/expand)QBT_TR[CONTEXT=TransferListFiltersWidget]">QBT_TR(Tags)QBT_TR[CONTEXT=TransferListFiltersWidget]
</span> </span>
<ul class="filterList" id="tagFilterList"> <ul class="filterList" id="tagFilterList">
</ul> </ul>
</div> </div>
<div class="filterWrapper"> <div class="filterWrapper">
<span class="filterTitle" onclick="toggleFilterDisplay('tracker');"> <span class="filterTitle" onclick="toggleFilterDisplay('tracker');">
<img src="images/go-down.svg">QBT_TR(Trackers)QBT_TR[CONTEXT=TransferListFiltersWidget] <img src="images/go-down.svg" alt="QBT_TR(Collapse/expand)QBT_TR[CONTEXT=TransferListFiltersWidget]">QBT_TR(Trackers)QBT_TR[CONTEXT=TransferListFiltersWidget]
</span> </span>
<ul class="filterList" id="trackerFilterList"> <ul class="filterList" id="trackerFilterList">
</ul> </ul>

4
src/webui/www/private/views/installsearchplugin.html

@ -20,8 +20,8 @@
<div> <div>
<input type="text" id="newPluginPath" placeholder="QBT_TR(URL or local directory)QBT_TR[CONTEXT=PluginSourceDlg]" autocorrect="off" autocapitalize="none" /> <input type="text" id="newPluginPath" placeholder="QBT_TR(URL or local directory)QBT_TR[CONTEXT=PluginSourceDlg]" autocorrect="off" autocapitalize="none" />
<div style="margin-top: 10px; text-align: center;"> <div style="margin-top: 10px; text-align: center;">
<button id="newPluginCancel" onclick="qBittorrent.SearchPlugins.closeSearchWindow('installSearchPlugin');">QBT_TR(Cancel)QBT_TR[CONTEXT=PluginSourceDlg]</button> <button type="button" id="newPluginCancel" onclick="qBittorrent.SearchPlugins.closeSearchWindow('installSearchPlugin');">QBT_TR(Cancel)QBT_TR[CONTEXT=PluginSourceDlg]</button>
<button id="newPluginOk" onclick="qBittorrent.InstallSearchPlugin.newPluginOk();">QBT_TR(Ok)QBT_TR[CONTEXT=PluginSourceDlg]</button> <button type="button" id="newPluginOk" onclick="qBittorrent.InstallSearchPlugin.newPluginOk();">QBT_TR(Ok)QBT_TR[CONTEXT=PluginSourceDlg]</button>
</div> </div>
</div> </div>
</div> </div>

2
src/webui/www/private/views/log.html

@ -94,7 +94,7 @@
</select> </select>
<input type="text" id="filterTextInput" onkeyup="window.qBittorrent.Log.filterTextChanged()" placeholder="QBT_TR(Filter logs)QBT_TR[CONTEXT=ExecutionLogWidget]" autocomplete="off" autocorrect="off" autocapitalize="none" /> <input type="text" id="filterTextInput" onkeyup="window.qBittorrent.Log.filterTextChanged()" placeholder="QBT_TR(Filter logs)QBT_TR[CONTEXT=ExecutionLogWidget]" autocomplete="off" autocorrect="off" autocapitalize="none" />
<button title="Clear input" onclick="javascript:document.querySelector('#filterTextInput').value='';window.qBittorrent.Log.filterTextChanged();">QBT_TR(Clear)QBT_TR[CONTEXT=ExecutionLogWidget]</button> <button type="button" title="Clear input" onclick="javascript:document.querySelector('#filterTextInput').value='';window.qBittorrent.Log.filterTextChanged();">QBT_TR(Clear)QBT_TR[CONTEXT=ExecutionLogWidget]</button>
</div> </div>
<div id="logFilterSummary"> <div id="logFilterSummary">

22
src/webui/www/private/views/preferences.html

@ -20,13 +20,13 @@
<tr> <tr>
<td><input type="checkbox" id="filelog_backup_checkbox" onclick="qBittorrent.Preferences.updateFileLogBackupEnabled();" /></td> <td><input type="checkbox" id="filelog_backup_checkbox" onclick="qBittorrent.Preferences.updateFileLogBackupEnabled();" /></td>
<td><label for="filelog_backup_checkbox">QBT_TR(Backup the log file after:)QBT_TR[CONTEXT=OptionsDialog]</label></td> <td><label for="filelog_backup_checkbox">QBT_TR(Backup the log file after:)QBT_TR[CONTEXT=OptionsDialog]</label></td>
<td><input id="filelog_max_size_input" type=number min="1" max="1024000" value="65" onchange="qBittorrent.Preferences.numberInputLimiter(this);" />QBT_TR(KiB)QBT_TR[CONTEXT=OptionsDialog]</td> <td><input id="filelog_max_size_input" type="number" min="1" max="1024000" value="65" onchange="qBittorrent.Preferences.numberInputLimiter(this);" />QBT_TR(KiB)QBT_TR[CONTEXT=OptionsDialog]</td>
</tr> </tr>
<tr> <tr>
<td><input type="checkbox" id="filelog_delete_old_checkbox" onclick="qBittorrent.Preferences.updateFileLogDeleteEnabled();" /></td> <td><input type="checkbox" id="filelog_delete_old_checkbox" onclick="qBittorrent.Preferences.updateFileLogDeleteEnabled();" /></td>
<td><label for="filelog_delete_old_checkbox">QBT_TR(Delete backup logs older than:)QBT_TR[CONTEXT=OptionsDialog]</label></td> <td><label for="filelog_delete_old_checkbox">QBT_TR(Delete backup logs older than:)QBT_TR[CONTEXT=OptionsDialog]</label></td>
<td> <td>
<input type=number min="1" max="365" value="6" id="filelog_age_input" onchange="qBittorrent.Preferences.numberInputLimiter(this);" /> <input type="number" min="1" max="365" value="6" id="filelog_age_input" onchange="qBittorrent.Preferences.numberInputLimiter(this);" />
<select id="filelog_age_type_select"> <select id="filelog_age_type_select">
<option value="0">QBT_TR(days)QBT_TR[CONTEXT=OptionsDialog]</option> <option value="0">QBT_TR(days)QBT_TR[CONTEXT=OptionsDialog]</option>
<option value="1" selected>QBT_TR(months)QBT_TR[CONTEXT=OptionsDialog]</option> <option value="1" selected>QBT_TR(months)QBT_TR[CONTEXT=OptionsDialog]</option>
@ -303,7 +303,7 @@
<div class="formRow"> <div class="formRow">
<label for="port_value">QBT_TR(Port used for incoming connections:)QBT_TR[CONTEXT=OptionsDialog]</label> <label for="port_value">QBT_TR(Port used for incoming connections:)QBT_TR[CONTEXT=OptionsDialog]</label>
<input type="text" id="port_value" style="width: 4em;" title="QBT_TR(Set to 0 to let your system pick an unused port)QBT_TR[CONTEXT=OptionsDialog]" /> <input type="text" id="port_value" style="width: 4em;" title="QBT_TR(Set to 0 to let your system pick an unused port)QBT_TR[CONTEXT=OptionsDialog]" />
<button style="margin-left: 1em;" onclick="qBittorrent.Preferences.generateRandomPort();">QBT_TR(Random)QBT_TR[CONTEXT=OptionsDialog]</button> <button type="button" style="margin-left: 1em;" onclick="qBittorrent.Preferences.generateRandomPort();">QBT_TR(Random)QBT_TR[CONTEXT=OptionsDialog]</button>
</div> </div>
<div class="formRow"> <div class="formRow">
<input type="checkbox" id="upnp_checkbox" /> <input type="checkbox" id="upnp_checkbox" />
@ -707,7 +707,7 @@
<input type="checkbox" id="enable_auto_downloading_rss_torrents_checkbox" /> <input type="checkbox" id="enable_auto_downloading_rss_torrents_checkbox" />
<label for="enable_auto_downloading_rss_torrents_checkbox">QBT_TR(Enable auto downloading of RSS torrents)QBT_TR[CONTEXT=OptionsDialog]</label> <label for="enable_auto_downloading_rss_torrents_checkbox">QBT_TR(Enable auto downloading of RSS torrents)QBT_TR[CONTEXT=OptionsDialog]</label>
</div> </div>
<button style="margin: 0 1em; width: calc(100% - 2.2em)" onclick="window.qBittorrent.Rss.openRssDownloader();">QBT_TR(Edit auto downloading rules...)QBT_TR[CONTEXT=OptionsDialog]</button> <button type="button" style="margin: 0 1em; width: calc(100% - 2.2em)" onclick="window.qBittorrent.Rss.openRssDownloader();">QBT_TR(Edit auto downloading rules...)QBT_TR[CONTEXT=OptionsDialog]</button>
</fieldset> </fieldset>
<fieldset class="settings"> <fieldset class="settings">
@ -940,7 +940,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
</tr> </tr>
<tr> <tr>
<td> <td>
<label for="memoryWorkingSetLimit">QBT_TR(Physical memory (RAM) usage limit (applied if libtorrent >= 2.0):)QBT_TR[CONTEXT=OptionsDialog]&nbsp;<a href="https://wikipedia.org/wiki/Working_set" target="_blank">(?)</a></label> <label for="memoryWorkingSetLimit">QBT_TR(Physical memory (RAM) usage limit (applied if libtorrent &gt;= 2.0):)QBT_TR[CONTEXT=OptionsDialog]&nbsp;<a href="https://wikipedia.org/wiki/Working_set" target="_blank">(?)</a></label>
</td> </td>
<td> <td>
<input type="text" id="memoryWorkingSetLimit" style="width: 15em;" title="QBT_TR(This option is less effective on Linux)QBT_TR[CONTEXT=OptionsDialog]">&nbsp;&nbsp;QBT_TR(MiB)QBT_TR[CONTEXT=OptionsDialog] <input type="text" id="memoryWorkingSetLimit" style="width: 15em;" title="QBT_TR(This option is less effective on Linux)QBT_TR[CONTEXT=OptionsDialog]">&nbsp;&nbsp;QBT_TR(MiB)QBT_TR[CONTEXT=OptionsDialog]
@ -1043,7 +1043,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
</tr> </tr>
<tr> <tr>
<td> <td>
<label for="hashingThreads">QBT_TR(Hashing threads (requires libtorrent >= 2.0):)QBT_TR[CONTEXT=OptionsDialog]&nbsp;<a href="https://www.libtorrent.org/reference-Settings.html#hashing_threads" target="_blank">(?)</a></label> <label for="hashingThreads">QBT_TR(Hashing threads (requires libtorrent &gt;= 2.0):)QBT_TR[CONTEXT=OptionsDialog]&nbsp;<a href="https://www.libtorrent.org/reference-Settings.html#hashing_threads" target="_blank">(?)</a></label>
</td> </td>
<td> <td>
<input type="text" id="hashingThreads" style="width: 15em;" /> <input type="text" id="hashingThreads" style="width: 15em;" />
@ -1067,7 +1067,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
</tr> </tr>
<tr> <tr>
<td> <td>
<label for="diskCache">QBT_TR(Disk cache (requires libtorrent < 2.0):)QBT_TR[CONTEXT=OptionsDialog]&nbsp;<a href="https://www.libtorrent.org/reference-Settings.html#cache_size" target="_blank">(?)</a></label> <label for="diskCache">QBT_TR(Disk cache (requires libtorrent &lt; 2.0):)QBT_TR[CONTEXT=OptionsDialog]&nbsp;<a href="https://www.libtorrent.org/reference-Settings.html#cache_size" target="_blank">(?)</a></label>
</td> </td>
<td> <td>
<input type="text" id="diskCache" style="width: 15em;" />&nbsp;&nbsp;QBT_TR(MiB)QBT_TR[CONTEXT=OptionsDialog] <input type="text" id="diskCache" style="width: 15em;" />&nbsp;&nbsp;QBT_TR(MiB)QBT_TR[CONTEXT=OptionsDialog]
@ -1075,7 +1075,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
</tr> </tr>
<tr> <tr>
<td> <td>
<label for="diskCacheExpiryInterval">QBT_TR(Disk cache expiry interval (requires libtorrent < 2.0):)QBT_TR[CONTEXT=OptionsDialog]&nbsp;<a href="https://www.libtorrent.org/reference-Settings.html#cache_expiry" target="_blank">(?)</a></label> <label for="diskCacheExpiryInterval">QBT_TR(Disk cache expiry interval (requires libtorrent &lt; 2.0):)QBT_TR[CONTEXT=OptionsDialog]&nbsp;<a href="https://www.libtorrent.org/reference-Settings.html#cache_expiry" target="_blank">(?)</a></label>
</td> </td>
<td> <td>
<input type="text" id="diskCacheExpiryInterval" style="width: 15em;">&nbsp;&nbsp;QBT_TR(s)QBT_TR[CONTEXT=OptionsDialog] <input type="text" id="diskCacheExpiryInterval" style="width: 15em;">&nbsp;&nbsp;QBT_TR(s)QBT_TR[CONTEXT=OptionsDialog]
@ -1091,7 +1091,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
</tr> </tr>
<tr> <tr>
<td> <td>
<label for="diskIOType">QBT_TR(Disk IO type (libtorrent >= 2.0; requires restart):)QBT_TR[CONTEXT=OptionsDialog]&nbsp;<a href="https://www.libtorrent.org/single-page-ref.html#default-disk-io-constructor" target="_blank">(?)</a></label> <label for="diskIOType">QBT_TR(Disk IO type (libtorrent &gt;= 2.0; requires restart):)QBT_TR[CONTEXT=OptionsDialog]&nbsp;<a href="https://www.libtorrent.org/single-page-ref.html#default-disk-io-constructor" target="_blank">(?)</a></label>
</td> </td>
<td> <td>
<select id="diskIOType" style="width: 15em;"> <select id="diskIOType" style="width: 15em;">
@ -1120,13 +1120,13 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
<select id="diskIOWriteMode" style="width: 15em;"> <select id="diskIOWriteMode" style="width: 15em;">
<option value="0">QBT_TR(Disable OS cache)QBT_TR[CONTEXT=OptionsDialog]</option> <option value="0">QBT_TR(Disable OS cache)QBT_TR[CONTEXT=OptionsDialog]</option>
<option value="1">QBT_TR(Enable OS cache)QBT_TR[CONTEXT=OptionsDialog]</option> <option value="1">QBT_TR(Enable OS cache)QBT_TR[CONTEXT=OptionsDialog]</option>
<option value="2">QBT_TR(Write-through (requires libtorrent >= 2.0.6))QBT_TR[CONTEXT=OptionsDialog]</option> <option value="2">QBT_TR(Write-through (requires libtorrent &gt;= 2.0.6))QBT_TR[CONTEXT=OptionsDialog]</option>
</select> </select>
</td> </td>
</tr> </tr>
<tr> <tr>
<td> <td>
<label for="coalesceReadsAndWrites">QBT_TR(Coalesce reads & writes (requires libtorrent < 2.0):)QBT_TR[CONTEXT=OptionsDialog]&nbsp;<a href="https://www.libtorrent.org/reference-Settings.html#coalesce_reads" target="_blank">(?)</a></label> <label for="coalesceReadsAndWrites">QBT_TR(Coalesce reads &amp; writes (requires libtorrent &lt; 2.0):)QBT_TR[CONTEXT=OptionsDialog]&nbsp;<a href="https://www.libtorrent.org/reference-Settings.html#coalesce_reads" target="_blank">(?)</a></label>
</td> </td>
<td> <td>
<input type="checkbox" id="coalesceReadsAndWrites" /> <input type="checkbox" id="coalesceReadsAndWrites" />

8
src/webui/www/private/views/rss.html

@ -89,11 +89,11 @@
QBT_TR(Fetching of RSS feeds is disabled now! You can enable it in application settings.)QBT_TR[CONTEXT=RSSWidget] QBT_TR(Fetching of RSS feeds is disabled now! You can enable it in application settings.)QBT_TR[CONTEXT=RSSWidget]
</div> </div>
<div id="rssButtonBar"> <div id="rssButtonBar">
<button id="newSubscriptionButton" onclick="qBittorrent.Rss.addRSSFeed()">QBT_TR(New subscription)QBT_TR[CONTEXT=RSSWidget]</button> <button type="button" id="newSubscriptionButton" onclick="qBittorrent.Rss.addRSSFeed()">QBT_TR(New subscription)QBT_TR[CONTEXT=RSSWidget]</button>
<button id="markReadButton" onclick="qBittorrent.Rss.markSelectedAsRead()">QBT_TR(Mark items read)QBT_TR[CONTEXT=RSSWidget]</button> <button type="button" id="markReadButton" onclick="qBittorrent.Rss.markSelectedAsRead()">QBT_TR(Mark items read)QBT_TR[CONTEXT=RSSWidget]</button>
<button id="updateAllButton" onclick="qBittorrent.Rss.refreshAllFeeds()">QBT_TR(Update all)QBT_TR[CONTEXT=RSSWidget]</button> <button type="button" id="updateAllButton" onclick="qBittorrent.Rss.refreshAllFeeds()">QBT_TR(Update all)QBT_TR[CONTEXT=RSSWidget]</button>
<button id="rssDownloaderButton" class="alignRight" onclick="qBittorrent.Rss.openRssDownloader()">QBT_TR(RSS Downloader...)QBT_TR[CONTEXT=RSSWidget]</button> <button type="button" id="rssDownloaderButton" class="alignRight" onclick="qBittorrent.Rss.openRssDownloader()">QBT_TR(RSS Downloader...)QBT_TR[CONTEXT=RSSWidget]</button>
</div> </div>
</div> </div>
<div id="rssContentView"> <div id="rssContentView">

6
src/webui/www/private/views/rssDownloader.html

@ -136,8 +136,8 @@
<div id="leftRssDownloaderColumn"> <div id="leftRssDownloaderColumn">
<div id="topMenuBar"> <div id="topMenuBar">
<b id="rulesTableDesc">QBT_TR(Download Rules)QBT_TR[CONTEXT=AutomatedRssDownloader]</b> <b id="rulesTableDesc">QBT_TR(Download Rules)QBT_TR[CONTEXT=AutomatedRssDownloader]</b>
<button id="newRuleButton" class="imageButton" onclick="qBittorrent.RssDownloader.addRule()"></button> <button type="button" id="newRuleButton" class="imageButton" onclick="qBittorrent.RssDownloader.addRule()"></button>
<button id="deleteRuleButton" class="imageButton" onclick="qBittorrent.RssDownloader.removeSelectedRule()"></button> <button type="button" id="deleteRuleButton" class="imageButton" onclick="qBittorrent.RssDownloader.removeSelectedRule()"></button>
</div> </div>
<div id="rulesTable"> <div id="rulesTable">
<div id="rulesSelectionCheckBoxList"> <div id="rulesSelectionCheckBoxList">
@ -285,7 +285,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also
</div> </div>
</div> </div>
</fieldset> </fieldset>
<button disabled id="saveButton" onclick="qBittorrent.RssDownloader.saveSettings()"> <button disabled type="button" id="saveButton" onclick="qBittorrent.RssDownloader.saveSettings()">
QBT_TR(Save)QBT_TR[CONTEXT=HttpServer] QBT_TR(Save)QBT_TR[CONTEXT=HttpServer]
</button> </button>
</div> </div>

4
src/webui/www/private/views/search.html

@ -83,7 +83,7 @@
<input type="text" id="searchPattern" class="searchInputField" placeholder="QBT_TR(Search)QBT_TR[CONTEXT=SearchEngineWidget]" autocorrect="off" autocomplete="off" autocapitalize="none" /> <input type="text" id="searchPattern" class="searchInputField" placeholder="QBT_TR(Search)QBT_TR[CONTEXT=SearchEngineWidget]" autocorrect="off" autocomplete="off" autocapitalize="none" />
<select id="categorySelect" class="searchInputField" onchange="qBittorrent.Search.categorySelected()"></select> <select id="categorySelect" class="searchInputField" onchange="qBittorrent.Search.categorySelected()"></select>
<select id="pluginsSelect" class="searchInputField" onchange="qBittorrent.Search.pluginSelected()"></select> <select id="pluginsSelect" class="searchInputField" onchange="qBittorrent.Search.pluginSelected()"></select>
<button id="startSearchButton" class="searchInputField" onclick="qBittorrent.Search.startStopSearch()">QBT_TR(Search)QBT_TR[CONTEXT=SearchEngineWidget]</button> <button type="button" id="startSearchButton" class="searchInputField" onclick="qBittorrent.Search.startStopSearch()">QBT_TR(Search)QBT_TR[CONTEXT=SearchEngineWidget]</button>
</div> </div>
</div> </div>
@ -167,7 +167,7 @@
</div> </div>
<div style="height: 30px; padding-top: 10px;"> <div style="height: 30px; padding-top: 10px;">
<button id="manageSearchPlugins" onclick="qBittorrent.Search.manageSearchPlugins()">QBT_TR(Search plugins...)QBT_TR[CONTEXT=SearchEngineWidget]</button> <button type="button" id="manageSearchPlugins" onclick="qBittorrent.Search.manageSearchPlugins()">QBT_TR(Search plugins...)QBT_TR[CONTEXT=SearchEngineWidget]</button>
</div> </div>
</div> </div>

6
src/webui/www/private/views/searchplugins.html

@ -65,9 +65,9 @@
<span>QBT_TR(Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines.)QBT_TR[CONTEXT=PluginSelectDlg]</span> <span>QBT_TR(Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines.)QBT_TR[CONTEXT=PluginSelectDlg]</span>
<span style="font-style: italic;">QBT_TR(You can get new search engine plugins here:)QBT_TR[CONTEXT=PluginSelectDlg] <a href="http://plugins.qbittorrent.org" target="_blank">http://plugins.qbittorrent.org</a></span> <span style="font-style: italic;">QBT_TR(You can get new search engine plugins here:)QBT_TR[CONTEXT=PluginSelectDlg] <a href="http://plugins.qbittorrent.org" target="_blank">http://plugins.qbittorrent.org</a></span>
<div style="width: 100%; margin-top: 10px;"> <div style="width: 100%; margin-top: 10px;">
<button style="width: 33%; line-height: 1.4em;" onclick="qBittorrent.SearchPlugins.installPlugin();">QBT_TR(Install new plugin)QBT_TR[CONTEXT=PluginSelectDlg]</button> <button type="button" style="width: 33%; line-height: 1.4em;" onclick="qBittorrent.SearchPlugins.installPlugin();">QBT_TR(Install new plugin)QBT_TR[CONTEXT=PluginSelectDlg]</button>
<button style="width: 33%; line-height: 1.4em;" onclick="qBittorrent.SearchPlugins.checkForUpdates();">QBT_TR(Check for updates)QBT_TR[CONTEXT=PluginSelectDlg]</button> <button type="button" style="width: 33%; line-height: 1.4em;" onclick="qBittorrent.SearchPlugins.checkForUpdates();">QBT_TR(Check for updates)QBT_TR[CONTEXT=PluginSelectDlg]</button>
<button style="width: 32%; line-height: 1.4em;" onclick="qBittorrent.SearchPlugins.closeSearchWindow('searchPlugins');">QBT_TR(Close)QBT_TR[CONTEXT=PluginSelectDlg]</button> <button type="button" style="width: 32%; line-height: 1.4em;" onclick="qBittorrent.SearchPlugins.closeSearchWindow('searchPlugins');">QBT_TR(Close)QBT_TR[CONTEXT=PluginSelectDlg]</button>
</div> </div>
</div> </div>

Loading…
Cancel
Save