| | 1 | This page is to track the proposed Theme Downloader. This involves three |
| | 2 | components: mythfrontend (Theme chooser), mythbackend (downloader), and |
| | 3 | services.mythtv.org (hosts Themes available for download). |
| | 4 | |
| | 5 | {{{ |
| | 6 | Components |
| | 7 | - Services webpage - http://services.mythtv.org/themes/ |
| | 8 | - Hosts an 'index generator' that generates static html pages for each aspect |
| | 9 | ratio for each version of MythTV. These are 'index.html' files put into |
| | 10 | subdirectories for the aspect ratio with a parent dir of the MythTV version |
| | 11 | number. The Frontend will reference these via the subdirectory without |
| | 12 | specifying the 'index.html' portion. This will allow us the future option of |
| | 13 | switching to a dynamic page such as index.php without breaking existing |
| | 14 | frontends already deployed. These pages are nothing fancy, they return just |
| | 15 | a list of theme names that are of the given aspect ratio and compatible with |
| | 16 | the given MythTV version. The index generator also modifies the themeinfo.xml |
| | 17 | files to add a downloadurl tag to tell mythfrontend where to download the |
| | 18 | theme tarball from. This gives us the flexibility of moving the download |
| | 19 | location or changing the tarball file naming convention at any time. These |
| | 20 | downloads will probably come directly off the OSUOSL mirrors, so this index |
| | 21 | generator script will run after the OSUOSL rsync. |
| | 22 | |
| | 23 | This index generator may also optionally generate a 'details.html' in each |
| | 24 | subdirectory which can be viewed in a web browser to view details about the |
| | 25 | the themes compatible with that version/aspect. This detail includes |
| | 26 | information from the themeinfo.xml file and also shows the preview image |
| | 27 | and a link to the download URL. This is for people who want to manually |
| | 28 | browse the themes rather than using the Frontend theme browser. |
| | 29 | |
| | 30 | - Serves up static index pages listing what themes are available for a given |
| | 31 | MythTV version. |
| | 32 | |
| | 33 | Example full URLs: |
| | 34 | http://services.mythtv.org/themes/repository/0.23/index/All/index.html |
| | 35 | http://services.mythtv.org/themes/repository/0.23/index/4:3/index.html |
| | 36 | http://services.mythtv.org/themes/repository/0.23/index/16:9/index.html |
| | 37 | http://services.mythtv.org/themes/repository/0.23/index/16:10/index.html |
| | 38 | |
| | 39 | Frontend will access like this: |
| | 40 | http://services.mythtv.org/themes/repository/0.23/index/All/ |
| | 41 | http://services.mythtv.org/themes/repository/0.23/index/4:3/ |
| | 42 | http://services.mythtv.org/themes/repository/0.23/index/16:9/ |
| | 43 | http://services.mythtv.org/themes/repository/0.23/index/16:10/ |
| | 44 | |
| | 45 | Example Result for /themes/repository/0.23/16:9/: |
| | 46 | Arclight |
| | 47 | Graphite |
| | 48 | LCARS |
| | 49 | Mythbuntu |
| | 50 | |
| | 51 | - Serves up static themeinfo.xml files for the above-named themes. These |
| | 52 | have been modified by the index generator to include a downloadurl tag |
| | 53 | to specify where to download the theme from. |
| | 54 | |
| | 55 | Query: |
| | 56 | http://services.mythtv.org/themes/repository/0.23/Graphite/themeinfo.xml |
| | 57 | |
| | 58 | Example: |
| | 59 | http://mythtv.bc2va.org/themes/repository/0.23/Graphite/themeinfo.xml |
| | 60 | |
| | 61 | - Serves up static preview images for the above-named themes. |
| | 62 | |
| | 63 | Query: |
| | 64 | http://services.mythtv.org/themes/repository/0.23/Arclight/preview.png |
| | 65 | |
| | 66 | Example: |
| | 67 | http://mythtv.bc2va.org/themes/repository/0.23/Arclight/preview.png |
| | 68 | |
| | 69 | - Optionally Serve up static tarballs for the above-named themes. We could |
| | 70 | include an alternate download url in the themeinfo.xml file for use when |
| | 71 | the rsync process had not completed yet and a tarball was not available from |
| | 72 | the mirrors. This might come in handy once we have a theme uploader UI on |
| | 73 | the website which allows people to upload and/or update their own themes |
| | 74 | on the website. |
| | 75 | |
| | 76 | Query: |
| | 77 | http://services.mythtv.org/themes/downloads/Graphite/Graphite-1.1_0.23.tar.gz |
| | 78 | |
| | 79 | Example: |
| | 80 | http://mythtv.bc2va.org/themes/download/Graphite/Graphite-1.1_0.23.tar.gz |
| | 81 | |
| | 82 | - Installing a new theme on the services website is as simple as: |
| | 83 | - Copy tarball to .../themes/download/THEMENAME/THEMENAME-THEMEVERSION_MYTHVERSION.tgz |
| | 84 | (NOTE: this location may change or their may need to be a script which puts the files |
| | 85 | in the proper location for the OSUOSL rsync job) |
| | 86 | ie, .../themes/download/Graphite/Graphite-1.1_0.23.tgz |
| | 87 | - Theme tarball should included a versioned subdir (ie, 'Graphite-1.1_0.23', not 'Graphite') |
| | 88 | - Unpack themeinfo.xml and preview images into repository dir for correct MythTV version |
| | 89 | .../themes/repository/0.23/Graphite/themeinfo.xml |
| | 90 | .../themes/repository/0.23/Graphite/preview.png |
| | 91 | - Run the 'index generator' script. |
| | 92 | |
| | 93 | - The sample services page above parses the themeinfo.xml files to check the aspect ratio as |
| | 94 | well as to display the Theme information on the human-readable version of the webpage. |
| | 95 | |
| | 96 | - mythfrontend |
| | 97 | - Theme chooser |
| | 98 | - Gets list of theme names from services webpage |
| | 99 | - downloads themeinfo.xml file for each theme. |
| | 100 | downloaded to temp directory under GetConfDir() ~/.mythtv/themedownloader/Graphite-1.1_0.23/themeinfo.xml |
| | 101 | - parses themeinfo.xml using existing ThemeInfo class to allow displaying theme info on screen. |
| | 102 | - downloads preview(s) for each theme |
| | 103 | - presents user with a screen to download/install one or multiple themes |
| | 104 | - Requests backend to download theme tarball when user picks a theme |
| | 105 | - Can use a remote theme from the master BE over mythproto or D/L theme from MBE and install locally. |
| | 106 | |
| | 107 | - mythbackend (master backend only) |
| | 108 | - Downloads theme tarballs when requested by the frontend |
| | 109 | - Sends out myth event when theme is downloaded |
| | 110 | - Extracts downloaded themes to GetConfDir()/themes |
| | 111 | - Serves up themes in GetConfDir()/themes subdir via normal mythproto file serving |
| | 112 | - Serves up theme tarballs over myth proto for any FE to download locally and install. |
| | 113 | |
| | 114 | }}} |