Skip to content

Commit

Permalink
Merge pull request #181 from xbmc/develop
Browse files Browse the repository at this point in the history
Update to 2.3.7
  • Loading branch information
jez500 authored Dec 24, 2016
2 parents 5ba3e57 + 6bc030f commit ebae502
Show file tree
Hide file tree
Showing 87 changed files with 1,789 additions and 376 deletions.
14 changes: 14 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
Version 2.3.7
-------------
* Added ability to sort and remove items in local playlists
* Added context link to season from TV episode #169
* Added ability to thumbs up tv episodes
* Added ability to clean audio and video library and add actions to Kodi settings form #177
* Added ability to select multiple items with CTRL+click and perform bulk actions eg. play, queue and add to playlist
* Fixed dropdown menu closing on click #173
* Added Kodi saved and smart playlists to the Chorus browser #167
* Added support for exporting and downloading local playlists to m3u
* Fixed issue with addon enable/disable not saving #162
* String updates and addition of many more translatables that were previously missing
* Merged Polish translation update #166

Version 2.3.6
-------------
* Added filtering by thumbs up to movies, tv, artists and albums
Expand Down
2 changes: 1 addition & 1 deletion dist/addon.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="webinterface.default"
version="2.3.6"
version="2.3.7"
name="Kodi web interface - Chorus2"
provider-name="jez500, Team Kodi">
<requires>
Expand Down
869 changes: 686 additions & 183 deletions dist/js/kodi-webinterface.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/lang/_strings/en.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/lang/_strings/pl.json

Large diffs are not rendered by default.

14 changes: 14 additions & 0 deletions dist/lang/en/app-changelog.html
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
<h2 id="version-2-3-7">Version 2.3.7</h2>
<ul>
<li>Added ability to sort and remove items in local playlists</li>
<li>Added context link to season from TV episode #169</li>
<li>Added ability to thumbs up tv episodes</li>
<li>Added ability to clean audio and video library and add actions to Kodi settings form #177</li>
<li>Added ability to select multiple items with CTRL+click and perform bulk actions eg. play, queue and add to playlist</li>
<li>Fixed dropdown menu closing on click #173</li>
<li>Added Kodi saved and smart playlists to the Chorus browser #167</li>
<li>Added support for exporting and downloading local playlists to m3u</li>
<li>Fixed issue with addon enable/disable not saving #162</li>
<li>String updates and addition of many more translatables that were previously missing</li>
<li>Merged Polish translation update #166</li>
</ul>
<h2 id="version-2-3-6">Version 2.3.6</h2>
<ul>
<li>Added filtering by thumbs up to movies, tv, artists and albums</li>
Expand Down
21 changes: 19 additions & 2 deletions dist/lang/pl/app-changelog.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,24 @@
<h2 id="wersja-2-3-6">Wersja 2.3.6</h2>
<ul>
<li>Dodano filtrowanie po polubieniach dla filmów, seriali, wykonawców i albumach</li>
<li>Naprawiono błąd dla nowo polubionych pozycji, które nie pojawiały się na stronie Lubię to!</li>
<li>Dodano możliwość wyświetlania nazwy urządzenia jako tytułu strony #98</li>
<li>Ulepszono style i interfejs użytkownika dla funkcji zaznaczania obejrzanych pozycji</li>
<li>Poprawiono panel informacji o filmie, dodano kategorię wiekową i możliwości przełączenia stanu obejrzenia</li>
<li>Ulepszono i przebudowano listę oraz panel informacji o serialu, sezonie i odcinku</li>
<li>Dodano możliwość oznaczenia serialu i sezonu jako obejrzane, a także dodanie ich do kolejki odtwarzania #74</li>
<li>Dodano aktualne tłumaczenie na język francuski i polski #160 i #161</li>
<li>Poprawiono działanie przycisku odtwarzania w zależności od stanu odtwarzacza #157</li>
<li>Poprawiono style w przeglądarce plików/dodatków</li>
<li>Dodano możliwość dodania za pomocą menu kontekstowego, do kolejki odtwarzania mediów, z poziomu przeglądarki plików/dodatków</li>
<li>Poprawiono wyrównanie kolumn na liście utworów albumu #37</li>
<li>Dodano możliwość filtrowania po roku dla albumów i utworów</li>
<li>Poprawiono błąd powodujący zawieszanie się przeglądarki, w przypadku przekazania do wirtualnej listy - pustej kolekcji</li>
</ul>
<h2 id="wersja-2-3-5">Wersja 2.3.5</h2>
<ul>
<li>Scalone zmiany tłumaczenia na język niemiecki #139</li>
<li>Scalone zmiany tłumaczenia język litewski #141</li>
<li>Zaktualizowano tłumaczenie na język niemiecki #139</li>
<li>Zaktualizowano tłumaczenie na język litewski #141</li>
<li>Usunięto część kodu diagnostycznego</li>
<li>Dodano poziom Ekspercki do ustawień Kodi</li>
<li>Dodano sortowanie albumów po dacie dodania #21</li>
Expand Down
20 changes: 10 additions & 10 deletions dist/lang/pl/app-readme.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<h1 id="chorus-2-0-interfejs-webowy-kodi">Chorus 2.0 - interfejs webowy Kodi</h1>
<p>Domyślny interfejs webowy dla Kodi.</p>
<p>Domyślny interfejs webowy Kodi.</p>
<p>Nowoczesny webowy interfejs użytkownika dla programu Kodi. Umożliwia komfortowe przeglądanie biblioteki
Muzyki, Filmów i Seriali przy pomocy przeglądarki internetowej.
Umożliwia odtwarzanie mediów bezpośrednio w Kodi lub ich transmisję do przeglądarki.
Expand Down Expand Up @@ -62,7 +62,7 @@ <h3 id="t-umaczenia">Tłumaczenia</h3>
wielu języków. Z tego powodu, tłumaczenie interfejsu użytkownika nie powinno nastręczać problemów.</p>
<p>Aktualnie dostępne są tłumaczenia dla 5 języków (angielskiego, francuskiego, niemieckiego, holenderskiego, chińskiego), ale nowe
mogą zostać z łatwością dodane. Jeśli chcesz dodać własne tłumaczenie, stwórz dla niego nową gałąź, a następnie skorzystaj
z funkcji Pull Request do gałęzi <code>develop</code>. Jeśli nie potrafisz posługiwać się GITem, prześlij mi łącze z plikiem tłumaczenia.</p>
z funkcji Pull Request do gałęzi <code>develop</code>. Jeśli nie potrafisz posługiwać się GITem, prześlij mi łącze do plików z tłumaczeniem.</p>
<p>Pliki tłumaczeń są dostępne <a href="https://github.com/xbmc/chorus2/tree/master/src/lang">tutaj</a>.
Pliki języka angielskiego są jedynymi kompletnymi źródłami, które powinieneś używać w trakcie tłumaczenia na inny język.</p>
<h3 id="kompilowanie">Kompilowanie</h3>
Expand All @@ -84,17 +84,17 @@ <h2 id="wsparcie">Wsparcie</h2>
<p>Jesteś fanem Chorusa? Możesz <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&amp;business=ZCGV976794JHE&amp;lc=AU&amp;item_name=Chorus%20Beer%20Fund&amp;currency_code=AUD&amp;bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted">zasponsorować</a> Jeremy&#39;iemu piwo, aby okazać swoją wdzięczność. :)</p>
<h2 id="zrzuty-ekranu">Zrzuty ekranu</h2>
<h3 id="strona-startowa-teraz-odtwarzane-">Strona startowa (Teraz odtwarzane)</h3>
<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/now-playing.jpg" alt="alt text" title="Homepage/Now Playing"></p>
<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/now-playing.jpg" alt="alt text" title="Strona startowa/Teraz odtwarzane"></p>
<h3 id="wyniki-wyszukiwania">Wyniki wyszukiwania</h3>
<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/search.jpg" alt="alt text" title="Search"></p>
<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/search.jpg" alt="alt text" title="Wyszukiwanie"></p>
<h3 id="wykonawcy">Wykonawcy</h3>
<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/artists.jpg" alt="alt text" title="Artists"></p>
<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist//screenshots/artist.jpg" alt="alt text" title="Artist"></p>
<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/artists.jpg" alt="alt text" title="Wykonawcy"></p>
<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist//screenshots/artist.jpg" alt="alt text" title="Wykonawca"></p>
<h3 id="biblioteka-wideo">Biblioteka wideo</h3>
<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/tv.jpg" alt="alt text" title="TV"></p>
<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/tv.jpg" alt="alt text" title="Seriale"></p>
<h3 id="filtrowanie">Filtrowanie</h3>
<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/movie.jpg" alt="alt text" title="Movies"></p>
<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/movie.jpg" alt="alt text" title="Filmy"></p>
<h3 id="ustawienia">Ustawienia</h3>
<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/settings.jpg" alt="alt text" title="Settings"></p>
<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/settings.jpg" alt="alt text" title="Ustawienia"></p>
<h3 id="dodatki">Dodatki</h3>
<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/addons.jpg" alt="alt text" title="Add-ons"></p>
<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/addons.jpg" alt="alt text" title="Dodatki"></p>
4 changes: 2 additions & 2 deletions dist/lang/pl/help-overview.html
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,5 @@ <h3 id="nowe-pomys-y">Nowe pomysły</h3>
przesłać gotowe modyfikacje do repozytorium <a href="https://github.com/xbmc/chorus2/issues">GitHuba</a>, wykorzystując
funkcji Pull Request.</p>
<h2 id="powiedz-mi-wi-cej">Powiedz mi więcej</h2>
<p>Na początku zajrzyj do <a href="#help/app-readme">readme</a>, przejrzyj listę zmian pomiędzy wersjami w <a href="#help/app-changelog">changelog</a>
albo pomóż w procesie tłumaczenia <a href="#help/app-changelog">translations</a>.</p>
<p>Na początku zajrzyj do <a href="#help/app-readme">dokumentacji</a>, przejrzyj listę zmian pomiędzy wersjami w <a href="#help/app-changelog">dzienniku zmian</a>
albo pomóż w procesie <a href="#help/lang-readme">tłumaczenia</a>.</p>
57 changes: 57 additions & 0 deletions dist/lang/pl/lang-readme.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<h1 id="t-umaczenia">Tłumaczenia</h1>
<p>Mechanizm aktualizacji plików tłumaczeń, wymaga odrobiny wiedzy na temat systemu
kontroli wersji GIT. Ta strona zawiera informacje o strukturze plików tłumaczeń.</p>
<h2 id="gdzie-znajduj-si-pliki-dla-danego-j-zyka-">Gdzie znajdują się pliki dla danego języka?</h2>
<p>Pliki tłumaczeń znadują się w dwóch miejscach. LANG_CODE - dwuliterowy, niepowtarzalny
kod dla każdego języka. Np.: en, fr, de, pl</p>
<h3 id="wyra-enia">Wyrażenia</h3>
<p><code>src/lang/_strings/LANG_CODE.po</code></p>
<ul>
<li>Powyższe wyrażenia są używane w całej aplikacji. Należy przetłumaczyć tylko tekst
znajdujący się w cudzysłowie, za słowem kluczowym <code>msgstr</code>.</li>
<li>W przypadku, gdy brakuje linijki z wyrażeniem <code>msgstr</code>, skopiuj ją z pliku en.po
i przetłumacz treść w cudzysłowie. Np. pl.po.<pre><code>msgctxt <span class="hljs-string">""</span>
msgid <span class="hljs-string">"Select a filter"</span>
msgstr <span class="hljs-string">"Wybierz filtr"</span>
</code></pre></li>
</ul>
<h3 id="strony">Strony</h3>
<p><code>src/lang/LANG_CODE/PAGE.md</code></p>
<ul>
<li>W tym miejscu znajdują się całe strony, które wymagają tłumaczenia.</li>
<li>Strony te zostały stworzone w języku znaczników <a href="https://pl.wikipedia.org/wiki/Markdown">Markdown</a>.</li>
<li>W przypadku, gdy nie istnieje jeszcze strona <em>PAGE</em>.md dla Twojego języka, to należy ją skopiować
z folderu <code>en</code>, a następnie zmodyfikować.</li>
<li>Twórz tylko strony <em>PAGE</em>.md dla kompleksowych tłumaczeń</li>
</ul>
<h2 id="dodawanie-nowego-j-zyka">Dodawanie nowego języka</h2>
<p><strong>Przykład:</strong> Jeśli nowym językiem tłumaczenia jest język <code>polski</code> to jego <em>LANG_CODE</em> jest równy <code>pl</code>.</p>
<h3 id="poinformuj-aplikacj-o-zmianach">Poinformuj aplikację o zmianach</h3>
<p>Wymagane jest poinformowanie aplikacji o dostępności nowego języka. W tym celu musisz
wydedytować plik <code>/src/js/helpers/translate.js.coffee</code> i dodać <code>pl: &quot;Polski&quot;</code> do listy
języków w funkcji <code>getLanguages</code>.</p>
<h3 id="powielanie-struktury-folderu-plik-w-z-j-zyka-angielskiego">Powielanie struktury folderu/plików z języka angielskiego</h3>
<p>Skopiuj pliki, które chcesz pretłumaczyć na nowy język:</p>
<ul>
<li><strong>Wyrażenia:</strong> skopiuj <code>/src/_strings/en.po</code> do <code>/src/_strings/pl.po</code></li>
<li><strong>Strony:</strong> skopiuj <code>/src/en/readme.md</code> do <code>/src/pl/readme.md</code></li>
</ul>
<h2 id="testowanie">Testowanie</h2>
<p>Testowanie zmiany wymaga zbudowania aplikacji, aczkolwiek w przypadku postępowania w ramach
istniejącej struktury, nie powinno to być potrzebne.</p>
<p>Jeśli naprawdę chcesz przetestować zmiany w aplikacji, możesz to zrobić następująco:</p>
<ol>
<li>Upewnij się, że <code>nodejs</code>, <code>npm</code> są zainstalowane</li>
<li>Przejdź do folderu Chorusa<code>cd /chorus/folder</code></li>
<li>Uruchom <code>npm install</code> (tylko za pierwszym razem)</li>
<li>Wykonaj <code>grunt lang</code> (to polecenie przebuduje tylko tłumaczenia w folderze <code>dist/lang</code>)</li>
<li>Odśwież interfejs Chorusa</li>
</ol>
<h2 id="dzia-anie-awaryjne">Działanie awaryjne</h2>
<p>Mechanizm obsługi języków powinien awaryjnie wyświetlać wyrażenia w języku angielskim
chyba, że w pliku dla aktywnego języka znajduje się już wyrażenie dla danego <code>msgid</code>
albo strona dla danego kodu języka <code>LANG_CODE/PAGE.md</code> istnieje.</p>
<h2 id="przesy-anie-aktualizacji">Przesyłanie aktualizacji</h2>
<p>Najlepszym sposobem na przesłanie aktualizacji, jest wykorzystanie funkcji Pull Request, dla zmianach
znajdujących się w dedykowanej gałęzi repozytorium <a href="https://github.com/jez500/chorus2">GitHuba</a>.
Aczkolwiek dopuszczam przesyłanie aktualizacji za pomocą innych metod, np. łączą do plików z tłumaczeniem.</p>
12 changes: 6 additions & 6 deletions dist/themes/base/css/base.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "kodi-webinterface",
"version": "2.3.6",
"version": "2.3.7",
"dependencies": {},
"devDependencies": {
"grunt": "~0.4.2",
Expand Down
2 changes: 1 addition & 1 deletion src/js/apps/album/album_app.js.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -45,5 +45,5 @@
App.reqres.setHandler 'album:action:items', ->
{
actions: {thumbs: 'Thumbs up'}
menu: {add: 'Add to Kodi playlist', localadd: 'Add to local playlist', divider: '', localplay: 'Play in browser'}
menu: {add: 'Queue in Kodi', localadd: 'Add to playlist', divider: '', localplay: 'Play in browser'}
}
2 changes: 1 addition & 1 deletion src/js/apps/artist/artist_app.js.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,5 @@
App.reqres.setHandler 'artist:action:items', ->
{
actions: {thumbs: 'Thumbs up'}
menu: {add: 'Add to Kodi playlist', localadd: 'Add to local playlist', divider: '', localplay: 'Play in browser'}
menu: {add: 'Queue in Kodi', localadd: 'Add to playlist', divider: '', localplay: 'Play in browser'}
}
2 changes: 1 addition & 1 deletion src/js/apps/browser/list/list_view.js.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
events:
"click .dropdown > i": "menuPopulate"
initialize: ->
menu = {'queue': 'Add to Kodi playlist'}
menu = {'queue': 'Queue in Kodi'}
this.model.set({menu: menu})


Expand Down
13 changes: 13 additions & 0 deletions src/js/apps/command/command_app.js.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -64,5 +64,18 @@
kodiVideo = App.request "command:kodi:controller", 'video', 'GUI'
kodiVideo.setFullScreen true, callback

###
Commands that are generally used by settings pages.
###

## Clean audio library.
App.commands.setHandler "command:kodi:audio:clean", () ->
App.request("command:kodi:controller", 'auto', 'AudioLibrary').clean()

## Clean audio library.
App.commands.setHandler "command:kodi:video:clean", () ->
App.request("command:kodi:controller", 'auto', 'VideoLibrary').clean()


## Startup tasks.
App.addInitializer ->
5 changes: 5 additions & 0 deletions src/js/apps/command/kodi/helpers/audiolibrary.js.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,9 @@
## Scan library
scan: (callback) ->
@singleCommand @getCommand('Scan'), (resp) =>
@doCallback callback, resp

## Clean library
clean: (callback) ->
@singleCommand @getCommand('Clean'), {showdialogs: false}, (resp) =>
@doCallback callback, resp
47 changes: 30 additions & 17 deletions src/js/apps/command/kodi/helpers/playlist.js.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -10,32 +10,45 @@
## If resume > 0 will resume from that point.
play: (type, value, model, resume = 0, callback) ->
stateObj = App.request "state:kodi"
if stateObj.isPlaying()
## If playing, queue up next.
if stateObj.isPlaying(@getPlayerName())
@insertAndPlay type, value, (stateObj.getPlaying('position') + 1), resume, callback
else
@clear =>
@insertAndPlay type, value, 0, resume, callback

## Add a collection of models
## Add a collection of models wrapper, will clear if not playing
addCollection: (collection, position = 0, callback) ->
@clear =>
models = collection.getRawCollection()
player = @getPlayer()
commands = []
## build a set of commands so we can add all the models with one request.
for i, model of models
pos = parseInt(position) + parseInt(i)
type = if model.type is 'file' then 'file' else model.type + 'id'
params = [player, pos, @paramObj(type, model[type])]
commands.push {method: @getCommand('Insert'), params: params}
@multipleCommands commands, (resp) =>
@doCallback callback, resp
@refreshPlaylistView()
stateObj = App.request "state:kodi"
## If playing, queue up next.
if stateObj.isPlaying(@getPlayerName())
position = (stateObj.getPlaying('position') + 1)
@addCollectionItems collection, position, callback
else
@clear =>
@addCollectionItems collection, position, callback
position

## Add a collection of models
addCollectionItems: (collection, position = 0, callback) ->
App.execute "notification:show", t.gettext("Adding items to the queue")
models = collection.getRawCollection()
player = @getPlayer()
commands = []
## build a set of commands so we can add all the models with one request.
for i, model of models
pos = parseInt(position) + parseInt(i)
type = if model.type is 'file' then 'file' else model.type + 'id'
params = [player, pos, @paramObj(type, model[type])]
commands.push {method: @getCommand('Insert'), params: params}
@multipleCommands commands, (resp) =>
@doCallback callback, resp
@refreshPlaylistView()

# Add a collection of models.
playCollection: (collection, position = 0) ->
@addCollection collection, position, (resp) =>
@playEntity 'position', parseInt(position), {}, =>
pos = @addCollection collection, position, (resp) =>
@playEntity 'position', parseInt(pos), {}, =>
@refreshPlaylistView()

## Add a item to the end of the playlist
Expand Down
5 changes: 5 additions & 0 deletions src/js/apps/command/kodi/helpers/videolibrary.js.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@
@singleCommand @getCommand('Scan'), (resp) =>
@doCallback callback, resp

## Clean library
clean: (callback) ->
@singleCommand @getCommand('Clean'), {showdialogs: false}, (resp) =>
@doCallback callback, resp

## Toggle watched on a collection. op is 'watched' or 'unwatched'
toggleWatchedCollection: (collection, op, callback) ->
for i, model of collection.models
Expand Down
Loading

0 comments on commit ebae502

Please sign in to comment.