diff options
32 files changed, 1778 insertions, 0 deletions
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..bd84632 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,28 @@ +--- +name: Bug Report +about: Create a report to help me improve + +--- + +**Describe The Bug:** +A clear and concise description of what the bug is. +Please do not post questions or `how do I`'s here. Contact/DM [@sukarodo](http://twitter.com/sukarodo) on Twitter. + +**How To Reproduce:** +Steps to reproduce the behavior: + +**Expected Behaviour:** +A clear and concise description of what you expected to happen. + +**Screenshots:** +If applicable, add screenshots to help explain your problem. + +**Platform:** +Where does the error occurs? + - Mobile Browser [e.g Mobile Safari, Chrome] + - Cydia + - Sileo + - Desktop Browser [e.g. Safari, Firefox] + +**Any Additional Context:** +Add any other context about the problem here. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Jay. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Packages b/Packages new file mode 100644 index 0000000..992b680 --- /dev/null +++ b/Packages @@ -0,0 +1,16 @@ +Package: AUTOMATICALLY ENTERED BY SCRIPT / DPKG-SCANPACKAGES.py +Version: AUTOMATICALLY ENTERED BY SCRIPT / DPKG-SCANPACKAGES.py +Architecture: AUTOMATICALLY ENTERED BY SCRIPT / DPKG-SCANPACKAGES.py +Maintainer: AUTOMATICALLY ENTERED BY SCRIPT / DPKG-SCANPACKAGES.py +Filename: AUTOMATICALLY ENTERED BY SCRIPT / DPKG-SCANPACKAGES.py +Size: AUTOMATICALLY ENTERED BY SCRIPT / DPKG-SCANPACKAGES.py +MD5sum: AUTOMATICALLY ENTERED BY SCRIPT / DPKG-SCANPACKAGES.py +SHA1: AUTOMATICALLY ENTERED BY SCRIPT / DPKG-SCANPACKAGES.py +SHA256: AUTOMATICALLY ENTERED BY SCRIPT / DPKG-SCANPACKAGES.py +Section: AUTOMATICALLY ENTERED BY SCRIPT / DPKG-SCANPACKAGES.py +Description: AUTOMATICALLY ENTERED BY SCRIPT / DPKG-SCANPACKAGES.py +SileoDepiction: AUTOMATICALLY ENTERED BY SCRIPT / DPKG-SCANPACKAGES.py or Manually Entered if Not In Tweaks `control` file. +Depiction: AUTOMATICALLY ENTERED BY SCRIPT / DPKG-SCANPACKAGES.py or Manually Entered if Not In Tweaks `control` file. +Installed-Size: AUTOMATICALLY ENTERED BY SCRIPT / DPKG-SCANPACKAGES.py +Name: AUTOMATICALLY ENTERED BY SCRIPT / DPKG-SCANPACKAGES.py +Priority: AUTOMATICALLY ENTERED BY SCRIPT / DPKG-SCANPACKAGES.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..a5faabf --- /dev/null +++ b/README.md @@ -0,0 +1,164 @@ +# Sidia (Based On Reposi3) +A Sileo / Cydia repository template. This template contains samples on how you can easily make depiction pages without replicating your html pages. The pages are styled using [Bootsrap](http://getbootstrap.com/) which is really easy to use (for Cydia), and the Sileo pages are styled using JavaScript Object Notation. + +This guide does NOT cover creating .deb files but will briefly cover assiging depictions. + +#### CREDITS TO: @Supermamon, @EssentialisRepo, Saurik, and the Sileo Team + +## How to use this template +If you are *not* hosting your repo on [Github Pages](https://pages.github.com/), you can download the zip file [here](https://github.com/sukarodo/Sidia/archive/master.zip) and extract to a subfolder on your website. + +**Release File** + +Edit `Release` file. Modify the items pointed by `<--` + + Origin: Sidia <-- + Label: Sidia <-- + Suite: stable + Version: 1.0 + Codename: ios + Architectures: iphoneos-arm + Components: main + Description: Sidia - a modern cydia / sileo apt repository template <-- + +**Branding** + +Open `index.html` +Change <title>Sidia</title> to whatever you wish. +Change lines 54 - 63 to whatever you wish. +Change line 71 into your own URL. +Note: YOU DO NOT NEED THIS. YOU CAN ALSO MAKE YOUR OWN. DO WHAT YOU WISH. + +Add "CydiaIcon.png" for your Cydia / Sileo Repository Logo. + + +**Page Footers** + +This data are the links that appear at the bottom of every **Cydia Depiction**. The data is stored in `repo.xml` at the root folder of your repo. + +```xml +<repo> + <footerlinks> + <link> + <name>Follow me on Twitter</name> + <url>https://twitter.com/Sukarodo</url> + <iconclass>glyphicon glyphicon-user</iconclass> + </link> + <link> + <name>I want this depiction template</name> + <url>https://github.com/sukarodo/sidia</url> + <iconclass>glyphicon glyphicon-thumbs-up</iconclass> + </link> + </footerlinks> +</repo> +``` + + +### Adding a simple depiction page (Cydia) + +Go to the depictions folder and duplicate the folder `com.sukarodo.oldpackage`. +Rename the duplicate with the same name as your package name. +There are 2 files inside the folder - `info.xml` and `changelog.xml`. +Update the 2 files with information regading your package. +The tags are pretty much self-explanatory. +Contact [@sukarodo](https://twitter.com/sukarodo) for questions. + +`info.xml`. +```xml +<package> + <id>com.sukarodo.oldpackage</id> + <name>Old Package</name> + <version>1.0.0-1</version> + <compatibility> + <firmware> + <miniOS>5.0</miniOS> + <maxiOS>7.0</maxiOS> + <otherVersions>unsupported</otherVersions> + <!-- + for otherVersions, you can put either unsupported or unconfirmed + --> + </firmware> + </compatibility> + <dependencies></dependencies> + <descriptionlist> + <description>This is an old package. Requires iOS 7 and below..</description> + </descriptionlist> + <screenshots></screenshots> + <changelog> + <change>Initial release</change> + </changelog> + <links></links> +</package> +``` + +`changelog.xml`. +```xml +<changelog> + <changes> + <version>1.0.0-1</version> + <change>Initial release</change> + </changes> +</changelog> +``` +### Adding a simple depiction page (Sileo) + +Go to the /sileodepictions/com.sukarodo.samplepackage and copy the file `depiction.json`. +Move into a folder labeled as your package name. +Edit The Labeled Parts (i.e. VERSION_NUMBER, TWEAK_NAME, etc.) +Contact [@sukarodo](https://twitter.com/sukarodo) for questions. + +#### Link the depiction page in your tweak's `control` file + +You can add the depictions url at the end of your package's `control` file before compiling it. +The depiction line should look like this: + +```text +Depiction: https://username.github.io/repo/depictions/?p=[idhere] +``` + +Replace `[idhere]` with your actual package name. + +```text +Depiction: https://username.github.io/repo/depictions/?p=com.sukarodo.oldpackage +``` +For Sileo Depictions, add the SileoDepiction key in your `control` file before compiling it. + +```text +SileoDepiction: https://username.github.io/repo/sileodepictions/com.sukarodo.samplepackage/depiction.json.json +```` + +#### Rebuilding the `Packages` file + +With your updated `control` file, build your tweak. +*REMOVE THE PACKAGES FILE WITHIN FIRST* +Store the resulting `.deb.` file into the `/debs/` folder of your repo. +Build your `Packages` file and compress with `bzip2`. + +``` +run update.sh on Mac. (Move update & clean.sh from /assets/ to /*) +Remove "update.sh" and "clean.sh" on Windows. +``` + +_Windows users, see [dpkg-scanpackages-py](https://github.com/supermamon/dpkg-scanpackages-py) or [scanpkg](https://github.com/mstg/scanpkg)._ + +#### Cydia / Sileo at last! + +If you haven't done yet, go ahead and add your repo to Cydia / Sileo. +You should now be able to install your tweak into your own repo. + +### Cleanup + +Just a cleanup step, remove the debs that came with this template and re-run the commands on step 3. You can keep the sample depictions for reference but they're not needed for your repo. + +## Sileo Extras + +These are some extra things that can make your repository look even better on Sileo. + +### Featured Packages (`sileo-featured.json`) + +Change The Following Lines: +``` + "url": "https://raw.githubusercontent.com/sukarodo/Sidia/master/assets/Banners/RepoHeader.png", <---- The Package Banner + "title": "Sample Package", <---- Your Package Name + "package": "com.sukarodo.newpackage", <---- The Actual Package +``` @@ -0,0 +1,8 @@ +Origin: Struggling Doge Test Repo +Label: Struggling Doge Test Repo +Suite: stable +Version: 1.0 +Codename: ios +Architectures: iphoneos-arm +Components: main +Description: A small test repository to hold tweaks
\ No newline at end of file diff --git a/assets/Banners/RepoHeader.png b/assets/Banners/RepoHeader.png Binary files differnew file mode 100644 index 0000000..f3caf18 --- /dev/null +++ b/assets/Banners/RepoHeader.png diff --git a/assets/Screenshots/screenshot.png b/assets/Screenshots/screenshot.png Binary files differnew file mode 100644 index 0000000..97d3f7a --- /dev/null +++ b/assets/Screenshots/screenshot.png diff --git a/assets/Screenshots/screenshot2.png b/assets/Screenshots/screenshot2.png Binary files differnew file mode 100644 index 0000000..11baacd --- /dev/null +++ b/assets/Screenshots/screenshot2.png diff --git a/assets/clean.sh b/assets/clean.sh new file mode 100644 index 0000000..12a8d57 --- /dev/null +++ b/assets/clean.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +echo "Cleaning..." + +echo "removing .DS_Store files" +find . -name '.DS_Store' -delete + +echo "done." diff --git a/assets/update.sh b/assets/update.sh new file mode 100644 index 0000000..5435628 --- /dev/null +++ b/assets/update.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +echo + +./clean.sh + +echo +echo "Rebuilding package list..." +echo "--------------------------" + +rm -f Packages* +dpkg-scanpackages -m ./debs /dev/null > Packages +bzip2 -k Packages +./dpkg-scanpackages -m ./debians/ /dev/null > Packages + +echo "--------------------------" +echo "Done." +echo diff --git a/depictions/changelog.html b/depictions/changelog.html new file mode 100644 index 0000000..9fbe709 --- /dev/null +++ b/depictions/changelog.html @@ -0,0 +1,120 @@ + <!DOCTYPE html> +<html lang="en"> +<head> + <title>Changelog</title> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> + <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> + <link rel="stylesheet" href="style.css"> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> + + <script type="text/javascript" src="js/jquery.querystring.js"></script> + <script type="text/javascript" src="js/data-loader-engine.js"></script> + <script type="text/javascript" src="js/ios_version_check.js"></script> + <style> + @media (max-width: 767px) { + body{background:#efeff4!important;margin:0;padding:0;border:0;outline:0;box-sizing:border-box} + } + </style> + <script type="text/javascript"> + + bundleid = $.QueryString['p']; + + var contentBlocks = { + "#changeLogList" : + {"type":"articles" + ,"source" :"changelog" + ,"titleSource" :"version" + ,"paragraphSource" :"change" + ,"titleElement" : "<h5>" + ,"paragraphContainer": "<ul class='list-group'>" + ,"paragraphElement" : "<li class='list-group-item'>" + + } + } + $( document ).ready(function() { + $.ajax({ + type : "GET", + dataType: "xml", + url : (bundleid+"/changelog.xml"), + success : function(xml){ + data_loader_engine(contentBlocks,xml) + }, + cache : false, + error: function() { + $("#packageError").show(); + $("#packageInformation").hide(); + } + }); //ajax + + }); // ready + </script> +</head> +<body> +<br /> + +<div id="packageInformation"> + <div class="container" id="changeLogList"> + </div> +</div> +<div id="packageError" style="display:none"> + <div class="container"> + <div class="alert alert-danger"> + <strong>Oh snap!</strong> The package you are tying to view is not hosted on this repository. + </div> + </div> +</div> +<!-- REPO FOOTER --> +<script type="text/javascript"> + var repoContents = { + "#repoFooterLinks" : + {"type":"custom" + ,"source":"repo>footerlinks>link" + ,"render":function(element,source) { + $.each(source, function(index,data) { + var a = $("<a class='link-item list-group-item'>"); + a.attr("href",$(data).find('url').text()); + if ($(data).find('iconclass')) { + var i = $("<span>") + i.attr("class",$(data).find('iconclass').text()); + console.log(i); + $(a).append(i); + } + $(a).append($(data).find('name').text()); + $(element).append(a); + }); //each + } //render + } + } + $( document ).ready(function() { + $.ajax({type: "GET", dataType: "xml",url : ("../repo.xml"),cache: false, + success : function(xml){ + data_loader_engine(repoContents,xml); + if (navigator.userAgent.search(/Cydia/) != -1) { + $("a").each(function() { + console.log($(this).text()); + $(this).attr("target","_blank"); + }); + } + }, + + error: function() {$("#contactInfo").hide()} + }); //ajax + + + }); // ready + +</script> + +<div id="contactInfo"> + <div class="container"> + <h5>CONTACT</h5> + <ul class="list-group" id="repoFooterLinks"> + </ul> + </div> +</div> +<!-- REPO FOOTER ENDS --> + +</body> +</html> diff --git a/depictions/com.sukarodo.samplepackage/changelog.xml b/depictions/com.sukarodo.samplepackage/changelog.xml new file mode 100644 index 0000000..d736af0 --- /dev/null +++ b/depictions/com.sukarodo.samplepackage/changelog.xml @@ -0,0 +1,6 @@ +<changelog> + <changes> + <version>1.0.0</version> + <change>Initial Release</change> + </changes> +</changelog> diff --git a/depictions/com.sukarodo.samplepackage/info.xml b/depictions/com.sukarodo.samplepackage/info.xml new file mode 100644 index 0000000..e7bed58 --- /dev/null +++ b/depictions/com.sukarodo.samplepackage/info.xml @@ -0,0 +1,45 @@ +<package> + <id>com.sukarodo.samplepackage</id> + <name>Sample Package</name> + <version>1.0</version> + <compatibility> + <firmware> + <miniOS>7.0</miniOS> + </firmware> + </compatibility> + <dependencies> + <package>mobilesubstrate</package> + </dependencies> + <shortDescription>This is a sample new package. Firmware should be greater than 7.0</shortDescription> + <descriptionlist> + <description>This is an package will full depictions.</description> + <description>It has more description lines.</description> + <description><![CDATA[ + You can also have<br/> + a multi-line item. + ]]> + </description> + </descriptionlist> + <screenshots> + <screenshot> + <description>This is a description for screenshot 1. It's Cydia!</description> + <image>cydia.jpg</image> + </screenshot> + <screenshot> + <description>This is a description for screenshot 2. It's another Cydia!</description> + <image>cydia.jpg</image> + </screenshot> + </screenshots> + <changelog> + <change>Second release</change> + <change>It has feature 1</change> + <change>It has feature 2</change> + </changelog> + <links> + <link> + <name>/r/jailbreak</name> + <url>https://www.reddit.com/r/jailbreak</url> + <iconclass>fa fa-reddit</iconclass> + </link> + </links> +</package> diff --git a/depictions/com.sukarodo.samplepackage/screenshots/.ignore b/depictions/com.sukarodo.samplepackage/screenshots/.ignore new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/depictions/com.sukarodo.samplepackage/screenshots/.ignore @@ -0,0 +1 @@ + diff --git a/depictions/com.sukarodo.samplepackage/screenshots/cydia.jpg b/depictions/com.sukarodo.samplepackage/screenshots/cydia.jpg Binary files differnew file mode 100644 index 0000000..29c8801 --- /dev/null +++ b/depictions/com.sukarodo.samplepackage/screenshots/cydia.jpg diff --git a/depictions/com.sukarodo.samplepackage/screenshots/shot1-thumb.jpg b/depictions/com.sukarodo.samplepackage/screenshots/shot1-thumb.jpg Binary files differnew file mode 100644 index 0000000..da0197b --- /dev/null +++ b/depictions/com.sukarodo.samplepackage/screenshots/shot1-thumb.jpg diff --git a/depictions/com.sukarodo.samplepackage/screenshots/shot1.jpg b/depictions/com.sukarodo.samplepackage/screenshots/shot1.jpg Binary files differnew file mode 100644 index 0000000..5c55f6b --- /dev/null +++ b/depictions/com.sukarodo.samplepackage/screenshots/shot1.jpg diff --git a/depictions/index.html b/depictions/index.html new file mode 100644 index 0000000..0ea4024 --- /dev/null +++ b/depictions/index.html @@ -0,0 +1,263 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <title>PackageName</title> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> + <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> + <link rel="stylesheet" href="style.css"> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> + <script type="text/javascript" src="js/jquery.querystring.js"></script> + <script type="text/javascript" src="js/data-loader-engine.js"></script> + <script type="text/javascript" src="js/ios_version_check.js"></script> + <style> + @media (max-width: 767px) { + body{background:#efeff4!important;margin:0;padding:0;border:0;outline:0;box-sizing:border-box} + } + .jumbotron-bg { + background: green + } + </style> + <script type="text/javascript"> + + bundleid = $.QueryString['p']; + + var contentBlocks = { + "#packageName" : + {"type":"text","source":"package>name"} + ,"#packageHeader" : + {"type":"custom" + ,"source":"package>name" + ,"render":function(element,source){ + if (navigator.userAgent.search(/Cydia/) == -1) { + $(element).show(); + } + } + } + ,"#packageVersion" : + {"type":"text","source":"package>version"} + ,"#packageShortDesc" : + {"type":"text","source":"package>shortDescription"} + ,"#compatibilityCheck" : + {"type":"custom" + ,"source":"package>compatibility>firmware" + ,"render":function(element,source){ + var res = ios_version_check( + $(source).find("miniOS").text(), + $(source).find("maxiOS").text(), + $(source).find("otherVersions").text(), + function(message,isBad) { + $(element).html(message) + .addClass( (isBad?'alert-danger':'alert-success')); + } + ); + if(res==0) {$(element).hide()} + } + } + ,"#descriptionList" : + {"type":"list" + ,"source" :"package>descriptionlist>description" + ,"paragraphElement" : "<li class='list-group-item'>" + ,"emptyListCallback":function(e){$("#descriptionPanel").hide()} + } + ,"#screenshotsLink" : + {"type":"custom" + ,"source" :"package>screenshots>screenshot" + ,"render":function(element, source){ + $("#screenshotsLink").remove(); + if ($(source).size() == 0) { + return + } + // create screenshots link + $("#descriptionList").append( + $("<a class='link-item list-group-item'>") + .attr("href","screenshots.html?p="+bundleid) + .text("Screenshots") + ); + } + } + ,"#versionBadge" : {"type":"text","source":"package>version"} + ,"#changesList" : + {"type":"list" + ,"source" :"package>changelog>change" + ,"reverseRender" : true + ,"paragraphElement" : "<li class='list-group-item'>" + ,"emptyListCallback":function(e){$("#changesList").hide()} + } + ,"#changelogLink" : + {"type":"custom" + ,"source" :"package>changelog>change" + ,"render":function(element, source){ + $("#changelogLink").remove(); + if ($(source).size() == 0) { + return + } + // create changelog link + $("#changesList").append( + $("<a class='link-item list-group-item'>") + .attr("href","changelog.html?p="+bundleid) + .text("Full Changelog") + ); + } + } + ,"#dependencyList" : + {"type":"list" + ,"source" :"package>dependencies>package" + ,"paragraphElement" : "<li class='list-group-item'>" + ,"emptyListCallback":function(e){$("#dependenciesContainer").remove()} + } + ,"#externalLinksList" : + {"type":"custom" + ,"source" :"package>links>link" + ,"paragraphElement" : "<li class='list-group-item'>" + ,"render":function(element,source){ + if ($(source).size()==0){ + $('#externalLinksContainer').remove() + } + + $.each(source, function(index,data) { + var a = $("<a class='link-item list-group-item'>"); + a.attr("href",$(data).find('url').text()); + if ($(data).find('iconclass')) { + var i = $("<span>") + i.attr("class",$(data).find('iconclass').text()); + console.log(i); + $(a).append(i); + } + $(a).append($(data).find('name').text()); + $(element).append(a); + }); //each + + } + + } + } + $( document ).ready(function() { + $.ajax({ + type : "GET", + dataType: "xml", + url : (bundleid+"/info.xml"), + success : function(xml){ + document.title = $(xml).find("package>name").text(); + data_loader_engine(contentBlocks,xml) + + }, + cache : false, + error: function() { + $("#packageError").show(); + $("#packageInformation").hide(); + } + }); //ajax + + }); // ready + </script> +</head> +<body> +<br /> + +<div id="packageInformation"> + + <div id="packageHeader" class="container" style="display:none"> + <div class="jumbotron"> + <h1 id="packageName"></h1> + <p id="packageShortDesc">brought to you by Reposi3</p> + </div> + </div> + + <div class="container"> + <div id="compatibilityCheck" class="alert"></div> + </div> + + <div class="container"> + <h5>DESCRIPTION</h5> + <ul id="descriptionList" class="list-group"> + <li id="screenshotsLink" /> + </ul> + </div> + + <div class="container"> + <h5>IN THIS VERSION <span id="versionBadge" class="badge" /></h5> + <ul id="changesList" class="list-group"> + <li id="changelogLink" /> + </ul> + </div> + <div class="container" id="dependenciesContainer"> + <h5>DEPENDENCIES</h5> + <ul id="dependencyList" class="list-group"> + </ul> + </div> + + <div class="container" id="externalLinksContainer"> + <h5>LINKS</h5> + <ul id="externalLinksList" class="list-group"> + </ul> + </div> + +</div> +<div id="packageError" style="display:none"> + <div class="container"> + <div class="alert alert-danger"> + <strong>Oh snap!</strong> The package you are tying to view is not hosted on this repository. + </div> + </div> +</div> + +<script type="text/javascript"> + function setAnchorTargets() { + // if on Cydia, set link targets to _blank + if (navigator.userAgent.search(/Cydia/) != -1) { + $("a").each(function() { + $(this).attr("target","_blank"); + }); + } + } + + var repoContents = { + "#repoFooterLinks" : + {"type":"custom" + ,"source":"repo>footerlinks>link" + ,"render":function(element,source) { + $.each(source, function(index,data) { + var a = $("<a class='link-item list-group-item'>"); + a.attr("href",$(data).find('url').text()); + if ($(data).find('iconclass')) { + var i = $("<span>") + i.attr("class",$(data).find('iconclass').text()); + console.log(i); + $(a).append(i); + } + $(a).append($(data).find('name').text()); + $(element).append(a); + }); //each + } //render + } + } + $( document ).ready(function() { + $.ajax({type: "GET", dataType: "xml",url : ("../repo.xml"),cache: false, + success : function(xml){ + data_loader_engine(repoContents,xml); + setAnchorTargets(); + }, + error: function() { + $("#contactInfo").hide(); + setAnchorTargets(); + } + }); //ajax + + + }); // ready + +</script> + +<div id="contactInfo"> + <div class="container"> + <h5>CONTACT</h5> + <ul class="list-group" id="repoFooterLinks"> + </ul> + </div> +</div> + + +</body> +</html> diff --git a/depictions/js/data-loader-engine.js b/depictions/js/data-loader-engine.js new file mode 100644 index 0000000..723b728 --- /dev/null +++ b/depictions/js/data-loader-engine.js @@ -0,0 +1,78 @@ +function data_loader_engine(contentBlocks,xml) { + + /* Loop through each if the contentBlocks */ + $.each(contentBlocks, function (key,contentInfo){ + + console.log('Processing '+key); + console.log(' type= '+contentInfo.type); + + // go out if key element does not exits + if (!($(key).length)) {return} + + switch(contentInfo.type) { + case "text": + var content = $(xml).find(contentInfo.source).text(); + $(key).html(content) + break; + case "link": + console.log(' url= '+contentInfo.url); + console.log(' text= '+contentInfo.text); + + var url = contentInfo.url; + var params = []; + if (contentInfo.params) { + $.each(contentInfo.params, function(){ + this[1] = escape(this[1]); + params[params.length] = this.join('='); + }); + } + url = url+'?'+params.join('&'); + $(key).append( $("<a></a>") + .attr("href",url) + .text(contentInfo.text) + ); + break; + case "list": + var list = $(xml).find(contentInfo.source); + + + if (list.size()==0) { + if (contentInfo.emptyListCallback) { + contentInfo.emptyListCallback($(key)) + } + } else { + if (!!contentInfo.reverseRender) { + list = $(list).get().reverse(); + } + $.each(list, function(index,value){ + var item = $(value).text() + + if (!!contentInfo.reverseRender) { + $(key).prepend( $(contentInfo.paragraphElement).html("<p>"+item+"</p>") ) + } else { + $(key).append( $(contentInfo.paragraphElement).html("<p>"+item+"</p>") ) + } + }); + } + break; + case "articles": + var articles = $(xml).find(contentInfo.source).children(); + var titleID = 0; + $.each(articles,function(index,article){ + var articleTitle = $(article).find(contentInfo.titleSource).text() + $(key).append( $(contentInfo.titleElement).html(articleTitle)); + var container = $(contentInfo.paragraphContainer).attr("id",++titleID); + $(key).append($(container)); + $.each( $(article).find(contentInfo.paragraphSource), function(index,paragraph){ + $(container).append( $(contentInfo.paragraphElement).html("<p>"+$(paragraph).text()+"</p>") ) + }) //paragraph + }) //article + + break; + case "custom": + if (!key) {return} + contentInfo.render( $(key), $(xml).find(contentInfo.source) ) + break; + }//switch + }); //each +} diff --git a/depictions/js/ios_version_check.js b/depictions/js/ios_version_check.js new file mode 100644 index 0000000..d6c0d8e --- /dev/null +++ b/depictions/js/ios_version_check.js @@ -0,0 +1,126 @@ +/* +most of the code here is writen by Timon Olsthoorn +Follow him on - +Github - https://github.com/tmnlsthrn +Twitter - @TimonOlsthoorn +*/ + +/* Lotus - iosver.js + * Copyright (C) 2014-2015 Timon Olsthoorn (tmnlsthrn) + */ + +/* + * Redistribution and use in source and binary + * forms, with or without modification, are permitted + * provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the + * above copyright notice, this list of conditions + * and the following disclaimer. + * 2. Redistributions in binary form must reproduce the + * above copyright notice, this list of conditions + * and the following disclaimer in the documentation + * and/or other materials provided with the + * distribution. + * 3. The name of the author may not be used to endorse + * or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// Adapted from https://github.com/tmnlsthrn/Lotus/blob/master/js/iosver.js + + +// changed const to var for IE9/10 compatibity. +var VERSION_CHECK_SUPPORTED = "Your iOS version is supported! 😊"; +var VERSION_CHECK_NEEDS_UPGRADE = "Requires at least iOS %s 😕"; +var VERSION_CHECK_UNCONFIRMED = "Not yet tested on iOS %s 😁"; +var VERSION_CHECK_UNSUPPORTED = "Only compatible with iOS %s to %s 😞"; + +function ios_version_check(minIOS,maxIOS,otherIOS,callBack) { + "use strict"; + + + function parseVersionString(version) { + var bits = version.split("."); + return [ + parseInt(bits[0], 10), + parseInt(bits[1] ? bits[1] : 0, 10), + parseInt(bits[2] ? bits[2] : 0, 10) + ]; + } + + function compareVersions(one, two) { + // https://gist.github.com/TheDistantSea/8021359 + for (var i = 0; i < one.length; ++i) { + if (two.length == i) { + return 1; + } + + if (one[i] == two[i]) { + continue; + } else if (one[i] > two[i]) { + return 1; + } else { + return -1; + } + } + + if (one.length != two.length) { + return -1; + } + + return 0; + } + + var version = navigator.appVersion.match(/CPU( iPhone)? OS (\d+)_(\d+)(_(\d+))? like/i); + if (!version) { + return 0; + } + + var osVersion = [ + parseInt(version[2], 10), + parseInt(version[3], 10), + parseInt(version[4] ? version[5] : 0, 10) + ], + + osString = osVersion[0] + "." + osVersion[1] + (osVersion[2] && osVersion[2] != 0 ? "." + osVersion[2] : ""), + minString = minIOS, + maxString = maxIOS, + + minVersion = parseVersionString(minString), + maxVersion = maxString ? parseVersionString(maxString) : null, + + message = VERSION_CHECK_SUPPORTED, + isBad = false; + + if (compareVersions(minVersion, osVersion) == 1) { + message = VERSION_CHECK_NEEDS_UPGRADE.replace("%s", minString); + isBad = true; + } else if (maxVersion && compareVersions(maxVersion, osVersion) == -1) { + if ("unsupported" == otherIOS) { + message = VERSION_CHECK_UNSUPPORTED.replace("%s", minString).replace("%s", maxString); + } else { + message = VERSION_CHECK_UNCONFIRMED.replace("%s", osString); + } + + isBad = true; + } + callBack(message,isBad); + + return (isBad?-1:1); +} diff --git a/depictions/js/jquery.querystring.js b/depictions/js/jquery.querystring.js new file mode 100644 index 0000000..507d005 --- /dev/null +++ b/depictions/js/jquery.querystring.js @@ -0,0 +1,13 @@ +(function($) { + $.QueryString = (function(a) { + if (a == "") return {}; + var b = {}; + for (var i = 0; i < a.length; ++i) + { + var p=a[i].split('='); + if (p.length != 2) continue; + b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " ")); + } + return b; + })(window.location.search.substr(1).split('&')) +})(jQuery); diff --git a/depictions/screenshots.html b/depictions/screenshots.html new file mode 100644 index 0000000..28b9739 --- /dev/null +++ b/depictions/screenshots.html @@ -0,0 +1,135 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <title>Screenshots</title> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> + <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> + <link rel="stylesheet" href="style.css"> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> + + <script type="text/javascript" src="js/jquery.querystring.js"></script> + <script type="text/javascript" src="js/data-loader-engine.js"></script> + <script type="text/javascript" src="js/ios_version_check.js"></script> + <style> + @media (max-width: 767px) { + body{background:#efeff4!important;margin:0;padding:0;border:0;outline:0;box-sizing:border-box} + } + </style> + <script type="text/javascript"> + + bundleid = $.QueryString['p']; + + var contentBlocks = { + "#screenshotsList" : + {"type":"custom" + ,"source" :"package>screenshots>screenshot" + ,"render" : function(element,source){ + console.log($(source).size()); + if ($(source).size()==0) { + $(element).append( $("<div class='alert alert-danger'>The aren't any screenshots for this package</div>") ); + return; + } + $.each(source, function(index,data) { + var th = $("<div class='thumbnail'>"); + th.append($("<p>") + .text($(data).find('description').text()) + ) + th.append($("<img>") + .attr("src",bundleid+'/screenshots/'+$(data).find('image').text()) + ) + $(element).append(th); + }); + + } + } + } + $( document ).ready(function() { + $.ajax({ + type : "GET", + dataType: "xml", + url : (bundleid+"/info.xml"), + success : function(xml){ + document.title = $(xml).find("package>name").text(); + data_loader_engine(contentBlocks,xml) + }, + cache : false, + error: function() { + $("#packageError").show(); + $("#packageInformation").hide(); + } + }); //ajax + + }); // ready + </script> +</head> +<body> +<br /> + +<div id="packageInformation"> + <div class="container"> + <h5>SCREENSHOTS</h5> + <ul id="screenshotsList" class="list-group"> + </ul> + </div> +</div> +<div id="packageError" style="display:none"> + <div class="container"> + <div class="alert alert-danger"> + <strong>Oh snap!</strong> The package you are tying to view is not hosted on this repository. + </div> + </div> +</div> +<!-- REPO FOOTER --> +<script type="text/javascript"> + var repoContents = { + "#repoFooterLinks" : + {"type":"custom" + ,"source":"repo>footerlinks>link" + ,"render":function(element,source) { + $.each(source, function(index,data) { + var a = $("<a class='link-item list-group-item'>"); + a.attr("href",$(data).find('url').text()); + if ($(data).find('iconclass')) { + var i = $("<span>") + i.attr("class",$(data).find('iconclass').text()); + console.log(i); + $(a).append(i); + } + $(a).append($(data).find('name').text()); + $(element).append(a); + }); //each + } //render + } + } + $( document ).ready(function() { + $.ajax({type: "GET", dataType: "xml",url : ("../repo.xml"),cache: false, + success : function(xml){ + data_loader_engine(repoContents,xml); + if (navigator.userAgent.search(/Cydia/) != -1) { + $("a").each(function() { + console.log($(this).text()); + $(this).attr("target","_blank"); + }); + } + }, + error: function() {$("#contactInfo").hide()} + }); //ajax + + + }); // ready + +</script> + +<div id="contactInfo"> + <div class="container"> + <h5>CONTACT</h5> + <ul class="list-group" id="repoFooterLinks"> + </ul> + </div> +</div> +<!-- REPO FOOTER ENDS --> + +</body> +</html> diff --git a/depictions/style.css b/depictions/style.css new file mode 100644 index 0000000..0bb6513 --- /dev/null +++ b/depictions/style.css @@ -0,0 +1,30 @@ +.disable-hover { + pointer-events: none; +} + +.link-item { + list-style-type: none; + padding: 17px 15px; + display: block; + color: #337ab7 !important; + text-align: left; +} + +.link-item:hover { + border: 1px solid #ddd; + background-color: #f5f5f5; +} + +html.can-touch .link-item:hover{ /* disable hover effect when input is touch */ + background-color: #fff; +} + +html.can-touch .link-item:active{ /* disable hover effect when input is touch */ + background-color: #f5f5f5; +} + +.fa { + font-size: 16px; + margin-left: 5px; + margin-right: 10px; +} diff --git a/dpkg-scanpackages b/dpkg-scanpackages new file mode 100644 index 0000000..b5d98e8 --- /dev/null +++ b/dpkg-scanpackages @@ -0,0 +1,295 @@ +#!/usr/bin/perl +# +# dpkg-scanpackages +# +# Copyright © 2006-2015 Guillem Jover <guillem@debian.org> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. + +use warnings; +use strict; + +use Getopt::Long qw(:config posix_default bundling no_ignorecase); +use File::Find; + +use Dpkg (); +use Dpkg::Gettext; +use Dpkg::ErrorHandling; +use Dpkg::Util qw(:list); +use Dpkg::Control; +use Dpkg::Version; +use Dpkg::Checksums; +use Dpkg::Compression::FileHandle; + +textdomain('dpkg-dev'); + +# Do not pollute STDOUT with info messages +report_options(info_fh => \*STDERR); + +my (@samemaint, @changedmaint); +my @spuriousover; +my %packages; +my %overridden; +my %hash; + +my %options = (help => sub { usage(); exit 0; }, + version => sub { version(); exit 0; }, + type => undef, + arch => undef, + hash => undef, + multiversion => 0, + 'extra-override'=> undef, + medium => undef, + ); + +my @options_spec = ( + 'help|?', + 'version', + 'type|t=s', + 'arch|a=s', + 'hash|h=s', + 'multiversion|m!', + 'extra-override|e=s', + 'medium|M=s', +); + +sub version { + printf g_("Debian %s version %s.\n"), $Dpkg::PROGNAME, $Dpkg::PROGVERSION; +} + +sub usage { + printf g_( +"Usage: %s [<option>...] <binary-path> [<override-file> [<path-prefix>]] > Packages + +Options: + -t, --type <type> scan for <type> packages (default is 'deb'). + -a, --arch <arch> architecture to scan for. + -h, --hash <hash-list> only generate hashes for the specified list. + -m, --multiversion allow multiple versions of a single package. + -e, --extra-override <file> + use extra override file. + -M, --medium <medium> add X-Medium field for dselect multicd access method + -?, --help show this help message. + --version show the version. +"), $Dpkg::PROGNAME; +} + +sub load_override +{ + my $override = shift; + my $comp_file = Dpkg::Compression::FileHandle->new(filename => $override); + + while (<$comp_file>) { + s/\#.*//; + s/\s+$//; + next unless $_; + + my ($p, $priority, $section, $maintainer) = split(/\s+/, $_, 4); + + if (not defined($packages{$p})) { + push(@spuriousover, $p); + next; + } + + for my $package (@{$packages{$p}}) { + if ($maintainer) { + if ($maintainer =~ m/(.+?)\s*=\>\s*(.+)/) { + my $oldmaint = $1; + my $newmaint = $2; + my $debmaint = $$package{Maintainer}; + if (none { $debmaint eq $_ } split m{\s*//\s*}, $oldmaint) { + push(@changedmaint, + sprintf(g_(' %s (package says %s, not %s)'), + $p, $$package{Maintainer}, $oldmaint)); + } else { + $$package{Maintainer} = $newmaint; + } + } elsif ($$package{Maintainer} eq $maintainer) { + push(@samemaint, " $p ($maintainer)"); + } else { + warning(g_('unconditional maintainer override for %s'), $p); + $$package{Maintainer} = $maintainer; + } + } + $$package{Priority} = $priority; + $$package{Section} = $section; + } + $overridden{$p} = 1; + } + + close($comp_file); +} + +sub load_override_extra +{ + my $extra_override = shift; + my $comp_file = Dpkg::Compression::FileHandle->new(filename => $extra_override); + + while (<$comp_file>) { + s/\#.*//; + s/\s+$//; + next unless $_; + + my ($p, $field, $value) = split(/\s+/, $_, 3); + + next unless defined($packages{$p}); + + for my $package (@{$packages{$p}}) { + $$package{$field} = $value; + } + } + + close($comp_file); +} + +sub process_deb { + my ($pathprefix, $fn) = @_; + + my $fields = Dpkg::Control->new(type => CTRL_INDEX_PKG); + + open my $output_fh, '-|', 'dpkg-deb', '-I', $fn, 'control' + or syserr(g_('cannot fork for %s'), 'dpkg-deb'); + $fields->parse($output_fh, $fn) + or error(g_("couldn't parse control information from %s"), $fn); + close $output_fh; + if ($?) { + warning(g_("'dpkg-deb -I %s control' exited with %d, skipping package"), + $fn, $?); + return; + } + + my $p = $fields->{'Package'}; + error(g_('no Package field in control file of %s'), $fn) + if not defined $p; + + if (defined($packages{$p}) and not $options{multiversion}) { + foreach my $pkg (@{$packages{$p}}) { + if (version_compare_relation($fields->{'Version'}, REL_GT, + $pkg->{'Version'})) + { + warning(g_('package %s (filename %s) is repeat but newer ' . + 'version; used that one and ignored data from %s!'), + $p, $fn, $pkg->{Filename}); + $packages{$p} = []; + } else { + warning(g_('package %s (filename %s) is repeat; ' . + 'ignored that one and using data from %s!'), + $p, $fn, $pkg->{Filename}); + return; + } + } + } + + warning(g_('package %s (filename %s) has Filename field!'), $p, $fn) + if defined($fields->{'Filename'}); + $fields->{'Filename'} = "$pathprefix$fn"; + + my $sums = Dpkg::Checksums->new(); + $sums->add_from_file($fn); + foreach my $alg (checksums_get_list()) { + next if %hash and not $hash{$alg}; + + if ($alg eq 'md5') { + $fields->{'MD5sum'} = $sums->get_checksum($fn, $alg); + } else { + $fields->{$alg} = $sums->get_checksum($fn, $alg); + } + } + $fields->{'Size'} = $sums->get_size($fn); + $fields->{'X-Medium'} = $options{medium} if defined $options{medium}; + + push @{$packages{$p}}, $fields; +} + +{ + local $SIG{__WARN__} = sub { usageerr($_[0]) }; + GetOptions(\%options, @options_spec); +} + +if (not (@ARGV >= 1 and @ARGV <= 3)) { + usageerr(g_('one to three arguments expected')); +} + +my $type = $options{type} // 'deb'; +my $arch = $options{arch}; +%hash = map { $_ => 1 } split /,/, $options{hash} // ''; + +foreach my $alg (keys %hash) { + if (not checksums_is_supported($alg)) { + usageerr(g_('unsupported checksum \'%s\''), $alg); + } +} + +my ($binarypath, $override, $pathprefix) = @ARGV; + +if (not -e $binarypath) { + error(g_('binary path %s not found'), $binarypath); +} +if (defined $override and not -e $override) { + error(g_('override file %s not found'), $override); +} + +$pathprefix //= ''; + +my $find_filter; +if ($options{arch}) { + $find_filter = qr/_(?:all|${arch})\.$type$/; +} else { + $find_filter = qr/\.$type$/; +} +my @archives; +my $scan_archives = sub { + push @archives, $File::Find::name if m/$find_filter/; +}; + +find({ follow => 1, follow_skip => 2, wanted => $scan_archives}, $binarypath); +foreach my $fn (@archives) { + process_deb($pathprefix, $fn); +} + +load_override($override) if defined $override; +load_override_extra($options{'extra-override'}) if defined $options{'extra-override'}; + +my @missingover=(); + +my $records_written = 0; +for my $p (sort keys %packages) { + if (defined($override) and not defined($overridden{$p})) { + push @missingover, $p; + } + for my $package (sort { $a->{Version} cmp $b->{Version} } @{$packages{$p}}) { + print("$package\n") or syserr(g_('failed when writing stdout')); + $records_written++; + } +} +close(STDOUT) or syserr(g_("couldn't close stdout")); + +if (@changedmaint) { + warning(g_('Packages in override file with incorrect old maintainer value:')); + warning($_) foreach (@changedmaint); +} +if (@samemaint) { + warning(g_('Packages specifying same maintainer as override file:')); + warning($_) foreach (@samemaint); +} +if (@missingover) { + warning(g_('Packages in archive but missing from override file:')); + warning(' %s', join(' ', @missingover)); +} +if (@spuriousover) { + warning(g_('Packages in override file but not in archive:')); + warning(' %s', join(' ', @spuriousover)); +} + +info(g_('Wrote %s entries to output Packages file.'), $records_written); diff --git a/index.html b/index.html new file mode 100644 index 0000000..e07586d --- /dev/null +++ b/index.html @@ -0,0 +1,73 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <title>Sidia</title> <!-- Change Sidia To Whatever You'd Like --> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> +</head> + +<style> +html { + height: 100%; +} + +body { + /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#87e0fd+0,53cbf1+40,05abe0+100;Blue+3D+%23+16 */ +background: #87e0fd; /* Old browsers */ +background: -moz-linear-gradient(top, #87e0fd 0%, #53cbf1 40%, #05abe0 100%); /* FF3.6-15 */ +background: -webkit-linear-gradient(top, #87e0fd 0%,#53cbf1 40%,#05abe0 100%); /* Chrome10-25,Safari5.1-6 */ +background: linear-gradient(to bottom, #87e0fd 0%,#53cbf1 40%,#05abe0 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ +filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#87e0fd', endColorstr='#05abe0',GradientType=0 ); /* IE6-9 */ +height: 100%; + margin: 0; + background-repeat: no-repeat; + background-attachment: fixed; + color: white; +} + +.container { + position: absolute; + top: 50%; + left: 50%; + -moz-transform: translateX(-50%) translateY(-50%); + -webkit-transform: translateX(-50%) translateY(-50%); + transform: translateX(-50%) translateY(-50%); + text-align: center; +} + +.obsolete_cydia { + position: absolute; + top: 97%; + left: 50%; + -moz-transform: translateX(-50%) translateY(-50%); + -webkit-transform: translateX(-50%) translateY(-50%); + transform: translateX(-50%) translateY(-50%); + text-align: center; + opacity: 0.5; +} +</style> + +<body> + + <div class="container"> +<h1>Huoooooh</h1> + +<h3> Seems like you did a little Oopsie</h3> + +<h3> Add to Sileo Here: <a href="sileo://source/REPLACETHIS">REPLACETHIS</a></h3> + +</div> + + + + + +<div class="obsolete_cydia"> <!-- This is Using Essentialis' "index.html", they added "obsolete_cydia" bullshit. Not Me (Sukarodo) --> + + <h6> Still using Cydia? Tap <a href="cydia://url/https://cydia.saurik.com/api/share#?source=REPLACETHIS">here to add to Cydia</a></h6> + +</div> +</body> +</html> diff --git a/repo.xml b/repo.xml new file mode 100644 index 0000000..0a5abb2 --- /dev/null +++ b/repo.xml @@ -0,0 +1,14 @@ +<repo> + <footerlinks> + <link> + <name>Follow me on Twitter</name> + <url>https://twitter.com/Sukarodo</url> + <iconclass>glyphicon glyphicon-user</iconclass> + </link> + <link> + <name>I want this depiction template</name> + <url>https://github.com/sukarodo/sidia</url> + <iconclass>glyphicon glyphicon-thumbs-up</iconclass> + </link> + </footerlinks> +</repo> diff --git a/sileo-featured.json b/sileo-featured.json new file mode 100644 index 0000000..3b268aa --- /dev/null +++ b/sileo-featured.json @@ -0,0 +1,13 @@ +{ + "class": "FeaturedBannersView", + "itemSize": "{296, 148}", + "itemCornerRadius": 10, + "banners": [ + { + "url": "https://raw.githubusercontent.com/sukarodo/Sidia/master/assets/Banners/RepoHeader.png", + "title": "Sample Package", + "package": "com.sukarodo.samplepackage", + "hideShadow": false + } + ] +} diff --git a/sileodepictions/com.sukarodo.samplepackage/depiction.json b/sileodepictions/com.sukarodo.samplepackage/depiction.json new file mode 100644 index 0000000..7404c6f --- /dev/null +++ b/sileodepictions/com.sukarodo.samplepackage/depiction.json @@ -0,0 +1,85 @@ +{ + "minVersion": "0.1", + "headerImage": "https://raw.githubusercontent.com/sukarodo/Sidia/master/assets/Banners/RepoHeader.png", + "tintColor": "#ffae8e", + "tabs": [ + { + "tabname": "Details", + "views": [ + { + "class": "DepictionMarkdownView", + "markdown": "## TWEAK_NAME\nSHORT_DESCRIPTION" + }, + { + "class": "DepictionSeparatorView" + }, + { + "title": "Latest Version", + "class": "DepictionHeaderView" + }, + { + "title": "Version", + "text": "VERSION_NUMBER", + "class": "DepictionTableTextView" + }, + { + "title": "Released", + "text": "RELEASE_DATE", + "class": "DepictionTableTextView" + }, + { + "title": "Price", + "text": "PRICE", + "class": "DepictionTableTextView" + }, + { + "title": "Developer", + "text": "DEVELOPER_NAME", + "class": "DepictionTableTextView" + }, + { + "title": "Website", + "action": "WEBSITE_HERE", + "class": "DepictionTableButtonView" + }, + { + "title": "Use This Template", + "action": "https://github.com/sukarodo/Sidia", + "class": "DepictionTableButtonView" + }, + { + "spacing": 16, + "class": "DepictionSpacerView" + }, + { + "spacing": 20, + "class": "DepictionSpacerView" + } + ], + "class": "DepictionStackView" + }, + { + "tabname": "Changelog", + "views": [ + { + "title": "VERSION_NUMBER", + "useBoldText": true, + "useBottomMargin": true, + "class": "DepictionSubheaderView" + }, + { + "markdown": "\t\n\u2022 UPDATE_DESCRIPTION", + "useSpacing": false, + "class": "DepictionMarkdownView" + }, + { + "markdown": "<small style=\"color: #999; margin-top: -8px;\">Released RELEASE_DATE</small>", + "useRawFormat": true, + "class": "DepictionMarkdownView" + } + ], + "class": "DepictionStackView" + } + ], + "class": "DepictionTabView" +} diff --git a/sileodepictions/js/data-loader-engine.js b/sileodepictions/js/data-loader-engine.js new file mode 100644 index 0000000..723b728 --- /dev/null +++ b/sileodepictions/js/data-loader-engine.js @@ -0,0 +1,78 @@ +function data_loader_engine(contentBlocks,xml) { + + /* Loop through each if the contentBlocks */ + $.each(contentBlocks, function (key,contentInfo){ + + console.log('Processing '+key); + console.log(' type= '+contentInfo.type); + + // go out if key element does not exits + if (!($(key).length)) {return} + + switch(contentInfo.type) { + case "text": + var content = $(xml).find(contentInfo.source).text(); + $(key).html(content) + break; + case "link": + console.log(' url= '+contentInfo.url); + console.log(' text= '+contentInfo.text); + + var url = contentInfo.url; + var params = []; + if (contentInfo.params) { + $.each(contentInfo.params, function(){ + this[1] = escape(this[1]); + params[params.length] = this.join('='); + }); + } + url = url+'?'+params.join('&'); + $(key).append( $("<a></a>") + .attr("href",url) + .text(contentInfo.text) + ); + break; + case "list": + var list = $(xml).find(contentInfo.source); + + + if (list.size()==0) { + if (contentInfo.emptyListCallback) { + contentInfo.emptyListCallback($(key)) + } + } else { + if (!!contentInfo.reverseRender) { + list = $(list).get().reverse(); + } + $.each(list, function(index,value){ + var item = $(value).text() + + if (!!contentInfo.reverseRender) { + $(key).prepend( $(contentInfo.paragraphElement).html("<p>"+item+"</p>") ) + } else { + $(key).append( $(contentInfo.paragraphElement).html("<p>"+item+"</p>") ) + } + }); + } + break; + case "articles": + var articles = $(xml).find(contentInfo.source).children(); + var titleID = 0; + $.each(articles,function(index,article){ + var articleTitle = $(article).find(contentInfo.titleSource).text() + $(key).append( $(contentInfo.titleElement).html(articleTitle)); + var container = $(contentInfo.paragraphContainer).attr("id",++titleID); + $(key).append($(container)); + $.each( $(article).find(contentInfo.paragraphSource), function(index,paragraph){ + $(container).append( $(contentInfo.paragraphElement).html("<p>"+$(paragraph).text()+"</p>") ) + }) //paragraph + }) //article + + break; + case "custom": + if (!key) {return} + contentInfo.render( $(key), $(xml).find(contentInfo.source) ) + break; + }//switch + }); //each +} diff --git a/sileodepictions/js/ios_version_check.js b/sileodepictions/js/ios_version_check.js new file mode 100644 index 0000000..d6c0d8e --- /dev/null +++ b/sileodepictions/js/ios_version_check.js @@ -0,0 +1,126 @@ +/* +most of the code here is writen by Timon Olsthoorn +Follow him on - +Github - https://github.com/tmnlsthrn +Twitter - @TimonOlsthoorn +*/ + +/* Lotus - iosver.js + * Copyright (C) 2014-2015 Timon Olsthoorn (tmnlsthrn) + */ + +/* + * Redistribution and use in source and binary + * forms, with or without modification, are permitted + * provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the + * above copyright notice, this list of conditions + * and the following disclaimer. + * 2. Redistributions in binary form must reproduce the + * above copyright notice, this list of conditions + * and the following disclaimer in the documentation + * and/or other materials provided with the + * distribution. + * 3. The name of the author may not be used to endorse + * or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// Adapted from https://github.com/tmnlsthrn/Lotus/blob/master/js/iosver.js + + +// changed const to var for IE9/10 compatibity. +var VERSION_CHECK_SUPPORTED = "Your iOS version is supported! 😊"; +var VERSION_CHECK_NEEDS_UPGRADE = "Requires at least iOS %s 😕"; +var VERSION_CHECK_UNCONFIRMED = "Not yet tested on iOS %s 😁"; +var VERSION_CHECK_UNSUPPORTED = "Only compatible with iOS %s to %s 😞"; + +function ios_version_check(minIOS,maxIOS,otherIOS,callBack) { + "use strict"; + + + function parseVersionString(version) { + var bits = version.split("."); + return [ + parseInt(bits[0], 10), + parseInt(bits[1] ? bits[1] : 0, 10), + parseInt(bits[2] ? bits[2] : 0, 10) + ]; + } + + function compareVersions(one, two) { + // https://gist.github.com/TheDistantSea/8021359 + for (var i = 0; i < one.length; ++i) { + if (two.length == i) { + return 1; + } + + if (one[i] == two[i]) { + continue; + } else if (one[i] > two[i]) { + return 1; + } else { + return -1; + } + } + + if (one.length != two.length) { + return -1; + } + + return 0; + } + + var version = navigator.appVersion.match(/CPU( iPhone)? OS (\d+)_(\d+)(_(\d+))? like/i); + if (!version) { + return 0; + } + + var osVersion = [ + parseInt(version[2], 10), + parseInt(version[3], 10), + parseInt(version[4] ? version[5] : 0, 10) + ], + + osString = osVersion[0] + "." + osVersion[1] + (osVersion[2] && osVersion[2] != 0 ? "." + osVersion[2] : ""), + minString = minIOS, + maxString = maxIOS, + + minVersion = parseVersionString(minString), + maxVersion = maxString ? parseVersionString(maxString) : null, + + message = VERSION_CHECK_SUPPORTED, + isBad = false; + + if (compareVersions(minVersion, osVersion) == 1) { + message = VERSION_CHECK_NEEDS_UPGRADE.replace("%s", minString); + isBad = true; + } else if (maxVersion && compareVersions(maxVersion, osVersion) == -1) { + if ("unsupported" == otherIOS) { + message = VERSION_CHECK_UNSUPPORTED.replace("%s", minString).replace("%s", maxString); + } else { + message = VERSION_CHECK_UNCONFIRMED.replace("%s", osString); + } + + isBad = true; + } + callBack(message,isBad); + + return (isBad?-1:1); +} diff --git a/sileodepictions/js/jquery.querystring.js b/sileodepictions/js/jquery.querystring.js new file mode 100644 index 0000000..507d005 --- /dev/null +++ b/sileodepictions/js/jquery.querystring.js @@ -0,0 +1,13 @@ +(function($) { + $.QueryString = (function(a) { + if (a == "") return {}; + var b = {}; + for (var i = 0; i < a.length; ++i) + { + var p=a[i].split('='); + if (p.length != 2) continue; + b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " ")); + } + return b; + })(window.location.search.substr(1).split('&')) +})(jQuery); |