From 7020a48a2e4efcb6a8cbbf5eab5d111c495a1dc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Tue, 29 Jul 2014 17:40:00 +0200 Subject: [PATCH] updated web library with new style and features added remote reading from iOS --- .../server/controllers/covercontroller.cpp | 22 +- .../server/controllers/foldercontroller.cpp | 122 ++-- .../controllers/librariescontroller.cpp | 73 ++- .../server/lib/bfHttpServer/httprequest.cpp | 4 +- .../server/lib/bfHttpServer/httpsession.cpp | 33 ++ .../server/lib/bfHttpServer/httpsession.h | 7 + .../lib/bfHttpServer/httpsessionstore.cpp | 2 +- .../lib/bfHttpServer/staticfilecontroller.cpp | 27 +- .../lib/bfHttpServer/staticfilecontroller.h | 1 + YACReaderLibrary/server/requestmapper.cpp | 18 +- release/server/docroot/css/styles_ipad.css | 515 ++++++++++------- release/server/docroot/css/styles_iphone.css | 539 +++++++++++------- .../images/bottomboxLibraries_ipad.jpg | Bin 1491 -> 0 bytes .../server/docroot/images/bottombox_ipad.jpg | Bin 2459 -> 0 bytes .../docroot/images/bottombox_iphone.jpg | Bin 1491 -> 0 bytes release/server/docroot/images/browse.png | Bin 0 -> 134 bytes release/server/docroot/images/browse@2x.png | Bin 0 -> 185 bytes .../server/docroot/images/bt_browse_ipad.jpg | Bin 716 -> 0 bytes .../docroot/images/bt_browse_iphone.jpg | Bin 701 -> 0 bytes .../server/docroot/images/bt_current_ipad.jpg | Bin 1113 -> 0 bytes .../docroot/images/bt_current_iphone.jpg | Bin 1113 -> 0 bytes .../server/docroot/images/bt_first_ipad.jpg | Bin 1651 -> 0 bytes .../server/docroot/images/bt_first_iphone.jpg | Bin 1651 -> 0 bytes .../server/docroot/images/bt_import_ipad.jpg | Bin 991 -> 0 bytes .../docroot/images/bt_import_iphone.jpg | Bin 957 -> 0 bytes .../docroot/images/bt_imported_ipad.jpg | Bin 738 -> 0 bytes .../docroot/images/bt_imported_iphone.jpg | Bin 727 -> 0 bytes .../server/docroot/images/bt_index_ipad.jpg | Bin 1149 -> 0 bytes .../server/docroot/images/bt_index_iphone.jpg | Bin 1149 -> 0 bytes .../server/docroot/images/bt_last_ipad.jpg | Bin 1665 -> 0 bytes .../server/docroot/images/bt_last_iphone.jpg | Bin 1665 -> 0 bytes .../docroot/images/bt_libraries_ipad.jpg | Bin 763 -> 0 bytes .../docroot/images/bt_libraries_iphone.jpg | Bin 763 -> 0 bytes .../docroot/images/bt_library_iphone.jpg | Bin 3317 -> 0 bytes .../server/docroot/images/bt_login_ipad.jpg | Bin 928 -> 0 bytes .../server/docroot/images/bt_login_iphone.jpg | Bin 928 -> 0 bytes .../server/docroot/images/bt_next_ipad.jpg | Bin 1560 -> 0 bytes .../server/docroot/images/bt_next_iphone.jpg | Bin 1560 -> 0 bytes .../docroot/images/bt_previous_ipad.jpg | Bin 1586 -> 0 bytes .../docroot/images/bt_previous_iphone.jpg | Bin 1586 -> 0 bytes .../server/docroot/images/bt_up_iphone.jpg | Bin 720 -> 0 bytes release/server/docroot/images/combo.png | Bin 0 -> 120 bytes release/server/docroot/images/combo@2x.png | Bin 0 -> 167 bytes release/server/docroot/images/download.png | Bin 0 -> 155 bytes release/server/docroot/images/download@2x.png | Bin 0 -> 203 bytes release/server/docroot/images/f.jpg | Bin 2802 -> 0 bytes release/server/docroot/images/f.png | Bin 7630 -> 0 bytes release/server/docroot/images/f@2x.png | Bin 0 -> 1262 bytes .../server/docroot/images/fnd_input_pass.jpg | Bin 546 -> 0 bytes .../docroot/images/fnd_input_username.jpg | Bin 604 -> 0 bytes release/server/docroot/images/fnd_inputs.jpg | Bin 1443 -> 0 bytes release/server/docroot/images/imported.png | Bin 0 -> 158 bytes release/server/docroot/images/imported@2x.png | Bin 0 -> 214 bytes release/server/docroot/images/indicator.png | Bin 0 -> 118 bytes .../server/docroot/images/indicator@2x.png | Bin 0 -> 220 bytes release/server/docroot/images/library.png | Bin 0 -> 201 bytes release/server/docroot/images/library@2x.png | Bin 0 -> 284 bytes release/server/docroot/images/next.png | Bin 0 -> 137 bytes release/server/docroot/images/next@2x.png | Bin 0 -> 339 bytes release/server/docroot/images/prev.png | Bin 0 -> 154 bytes release/server/docroot/images/prev@2x.png | Bin 0 -> 345 bytes release/server/docroot/images/read.png | Bin 0 -> 152 bytes release/server/docroot/images/read@2x.png | Bin 0 -> 201 bytes release/server/docroot/images/readMark.png | Bin 0 -> 196 bytes release/server/docroot/images/readMark@2x.png | Bin 0 -> 296 bytes release/server/docroot/images/readingMark.png | Bin 0 -> 206 bytes .../server/docroot/images/readingMark@2x.png | Bin 0 -> 296 bytes .../docroot/images/topboxLibraries_ipad.jpg | Bin 423 -> 0 bytes release/server/docroot/images/topbox_ipad.jpg | Bin 1480 -> 0 bytes .../server/docroot/images/topbox_iphone.jpg | Bin 423 -> 0 bytes release/server/docroot/images/up.png | Bin 0 -> 163 bytes release/server/docroot/images/up@2x.png | Bin 0 -> 271 bytes release/server/templates/folder_ipad.tpl | 155 +++-- release/server/templates/folder_iphone.tpl | 155 +++-- release/server/templates/libraries_ipad.tpl | 14 +- release/server/templates/libraries_iphone.tpl | 18 +- 76 files changed, 1077 insertions(+), 628 deletions(-) delete mode 100644 release/server/docroot/images/bottomboxLibraries_ipad.jpg delete mode 100644 release/server/docroot/images/bottombox_ipad.jpg delete mode 100644 release/server/docroot/images/bottombox_iphone.jpg create mode 100644 release/server/docroot/images/browse.png create mode 100644 release/server/docroot/images/browse@2x.png delete mode 100644 release/server/docroot/images/bt_browse_ipad.jpg delete mode 100644 release/server/docroot/images/bt_browse_iphone.jpg delete mode 100644 release/server/docroot/images/bt_current_ipad.jpg delete mode 100644 release/server/docroot/images/bt_current_iphone.jpg delete mode 100644 release/server/docroot/images/bt_first_ipad.jpg delete mode 100644 release/server/docroot/images/bt_first_iphone.jpg delete mode 100644 release/server/docroot/images/bt_import_ipad.jpg delete mode 100644 release/server/docroot/images/bt_import_iphone.jpg delete mode 100644 release/server/docroot/images/bt_imported_ipad.jpg delete mode 100644 release/server/docroot/images/bt_imported_iphone.jpg delete mode 100644 release/server/docroot/images/bt_index_ipad.jpg delete mode 100644 release/server/docroot/images/bt_index_iphone.jpg delete mode 100644 release/server/docroot/images/bt_last_ipad.jpg delete mode 100644 release/server/docroot/images/bt_last_iphone.jpg delete mode 100644 release/server/docroot/images/bt_libraries_ipad.jpg delete mode 100644 release/server/docroot/images/bt_libraries_iphone.jpg delete mode 100644 release/server/docroot/images/bt_library_iphone.jpg delete mode 100644 release/server/docroot/images/bt_login_ipad.jpg delete mode 100644 release/server/docroot/images/bt_login_iphone.jpg delete mode 100644 release/server/docroot/images/bt_next_ipad.jpg delete mode 100644 release/server/docroot/images/bt_next_iphone.jpg delete mode 100644 release/server/docroot/images/bt_previous_ipad.jpg delete mode 100644 release/server/docroot/images/bt_previous_iphone.jpg delete mode 100644 release/server/docroot/images/bt_up_iphone.jpg create mode 100644 release/server/docroot/images/combo.png create mode 100644 release/server/docroot/images/combo@2x.png create mode 100644 release/server/docroot/images/download.png create mode 100644 release/server/docroot/images/download@2x.png delete mode 100644 release/server/docroot/images/f.jpg delete mode 100644 release/server/docroot/images/f.png create mode 100644 release/server/docroot/images/f@2x.png delete mode 100644 release/server/docroot/images/fnd_input_pass.jpg delete mode 100644 release/server/docroot/images/fnd_input_username.jpg delete mode 100644 release/server/docroot/images/fnd_inputs.jpg create mode 100644 release/server/docroot/images/imported.png create mode 100644 release/server/docroot/images/imported@2x.png create mode 100644 release/server/docroot/images/indicator.png create mode 100644 release/server/docroot/images/indicator@2x.png create mode 100644 release/server/docroot/images/library.png create mode 100644 release/server/docroot/images/library@2x.png create mode 100644 release/server/docroot/images/next.png create mode 100644 release/server/docroot/images/next@2x.png create mode 100644 release/server/docroot/images/prev.png create mode 100644 release/server/docroot/images/prev@2x.png create mode 100644 release/server/docroot/images/read.png create mode 100644 release/server/docroot/images/read@2x.png create mode 100644 release/server/docroot/images/readMark.png create mode 100644 release/server/docroot/images/readMark@2x.png create mode 100644 release/server/docroot/images/readingMark.png create mode 100644 release/server/docroot/images/readingMark@2x.png delete mode 100644 release/server/docroot/images/topboxLibraries_ipad.jpg delete mode 100644 release/server/docroot/images/topbox_ipad.jpg delete mode 100644 release/server/docroot/images/topbox_iphone.jpg create mode 100644 release/server/docroot/images/up.png create mode 100644 release/server/docroot/images/up@2x.png diff --git a/YACReaderLibrary/server/controllers/covercontroller.cpp b/YACReaderLibrary/server/controllers/covercontroller.cpp index 4614ce59..80cc394c 100644 --- a/YACReaderLibrary/server/controllers/covercontroller.cpp +++ b/YACReaderLibrary/server/controllers/covercontroller.cpp @@ -44,14 +44,28 @@ void CoverController::service(HttpRequest& request, HttpResponse& response) QImage img(libraries.getPath(libraryName)+"/.yacreaderlibrary/covers/"+fileName); if (!img.isNull()) { - int width = 80; - if(session.getDisplayType()=="retina") + int width = 80, height = 120; + if(session.getDisplayType()=="@2x") + { width = 160; - img = img.scaledToWidth(width,Qt::SmoothTransformation); + height = 240; + } + + if(float(img.width())/img.height() < 0.66666) + img = img.scaledToWidth(width,Qt::SmoothTransformation); + else + img = img.scaledToHeight(height,Qt::SmoothTransformation); + + QImage destImg(width,height,QImage::Format_RGB32); + destImg.fill(Qt::black); + QPainter p(&destImg); + + p.drawImage((width-img.width())/2,(height-img.height())/2,img); + QByteArray ba; QBuffer buffer(&ba); buffer.open(QIODevice::WriteOnly); - img.save(&buffer, "JPG"); + destImg.save(&buffer, "JPG"); response.write(ba,true); } //DONE else, hay que devolver un 404 diff --git a/YACReaderLibrary/server/controllers/foldercontroller.cpp b/YACReaderLibrary/server/controllers/foldercontroller.cpp index d8ef8591..7300adf9 100644 --- a/YACReaderLibrary/server/controllers/foldercontroller.cpp +++ b/YACReaderLibrary/server/controllers/foldercontroller.cpp @@ -1,4 +1,6 @@ #include "foldercontroller.h" +#include "controllers/errorcontroller.h" + #include "db_helper.h" //get libraries #include "comic_db.h" @@ -36,7 +38,16 @@ void FolderController::service(HttpRequest& request, HttpResponse& response) int libraryId = pathElements.at(2).toInt(); QString libraryName = DBHelper::getLibraryName(libraryId); qulonglong parentId = pathElements.at(4).toULongLong(); + + parentId = qMax(1,parentId); + QString folderName = DBHelper::getFolderName(libraryName,parentId); + if(folderName.isEmpty()) + { + ErrorController(300).service(request,response); + return; + } + if(parentId!=1) t.setVariable("folder.name",folderName); else @@ -70,7 +81,21 @@ void FolderController::service(HttpRequest& request, HttpResponse& response) int upPage = 0; - + if(parentId == 1) + session.clearFoldersPath(); + else + { + if(fromUp) + session.popFolder(); + else + if(session.getFoldersPath().contains(parentId)) + { + while(session.topFolder()!=parentId) + session.popFolder(); + } + else + session.pushFolder(parentId); + } if(backId == 1 && parentId == 1) { @@ -83,7 +108,7 @@ void FolderController::service(HttpRequest& request, HttpResponse& response) if(fromUp) { session.popPage(); - upPage = session.topPage(); + upPage = session.topPage(); page = upPage; } else //este nivel puede haberse cargado por primera vez ó puede que estemos navegando horizontalmente @@ -116,7 +141,7 @@ void FolderController::service(HttpRequest& request, HttpResponse& response) //t.loop("element",folderContent.length()); - int elementsPerPage = 18; + int elementsPerPage = 24; int numFolders = folderContent.length(); //int numComics = folderComics.length(); @@ -135,9 +160,16 @@ void FolderController::service(HttpRequest& request, HttpResponse& response) int indexCurrentPage = page*elementsPerPage; int numFoldersAtCurrentPage = qMax(0,qMin(numFolders - indexCurrentPage, elementsPerPage)); - //response.writeText(QString("indexCurrentPage : %1
").arg(indexCurrentPage)); - //response.writeText(QString("numFoldersAtCurrentPage : %1
").arg(numFoldersAtCurrentPage)); - //response.writeText(QString("foldersLength : %1
").arg(folderContent.length())); + //PATH + QStack foldersPath = session.getFoldersPath(); + t.setVariable(QString("library.name"),libraryName); + t.setVariable(QString("library.url"),QString("/library/%1/folder/1").arg(libraryId)); + t.loop("path",foldersPath.length()); + for(int i = 0; i < foldersPath.length(); i++){ + + t.setVariable(QString("path%1.url").arg(i),QString("/library/%1/folder/%2").arg(libraryId).arg(foldersPath[i])); + t.setVariable(QString("path%1.name").arg(i),DBHelper::getFolderName(libraryName,foldersPath[i])); + } t.loop("element",numFoldersAtCurrentPage); int i = 0; @@ -148,7 +180,6 @@ void FolderController::service(HttpRequest& request, HttpResponse& response) if(item->isDir()) { t.setVariable(QString("element%1.class").arg(i),"folder"); - t.setVariable(QString("element%1.image.width").arg(i),"89px"); t.setVariable(QString("element%1.image.url").arg(i),"/images/f.png"); t.setVariable(QString("element%1.browse").arg(i),QString("browse").arg(QString("/library/%1/folder/%2").arg(libraryId).arg(item->id))); @@ -157,13 +188,17 @@ void FolderController::service(HttpRequest& request, HttpResponse& response) //t.setVariable(QString("element%1.downloadurl").arg(i),"/library/"+libraryName+"/folder/"+QString("%1/info").arg(folderContent.at(i + (page*elementsPerPage))->id)); t.setVariable(QString("element%1.download").arg(i),QString("import").arg("/library/"+QString::number(libraryId)+"/folder/"+QString("%1/info").arg(folderContent.at(i + (page*elementsPerPage))->id))); - } + t.setVariable(QString("element%1.read").arg(i),""); + + t.setVariable(QString("element%1.size").arg(i),""); + t.setVariable(QString("element%1.pages").arg(i),""); + t.setVariable(QString("element%1.status").arg(i),""); + } else { t.setVariable(QString("element%1.class").arg(i),"cover"); const ComicDB * comic = (ComicDB *)item; t.setVariable(QString("element%1.browse").arg(i),""); - t.setVariable(QString("element%1.image.width").arg(i),"80px"); //t.setVariable(QString("element%1.downloadurl").arg(i),"/library/"+libraryName+"/comic/"+QString("%1").arg(comic->id)); if(!session.isComicOnDevice(comic->info.hash) && !session.isComicDownloaded(comic->info.hash)) t.setVariable(QString("element%1.download").arg(i),QString("import").arg("/library/"+QString::number(libraryId)+"/comic/"+QString("%1").arg(comic->id))); @@ -174,56 +209,28 @@ void FolderController::service(HttpRequest& request, HttpResponse& response) //t.setVariable(QString("element%1.image.url").arg(i),"/images/f.png"); + t.setVariable(QString("element%1.read").arg(i),QString("read").arg("/library/"+QString::number(libraryId)+"/comic/"+QString("%1").arg(comic->id)+"/remote")); + t.setVariable(QString("element%1.image.url").arg(i),QString("/library/%1/cover/%2.jpg").arg(libraryId).arg(comic->info.hash)); + + t.setVariable(QString("element%1.size").arg(i),"" + QString::number(comic->info.hash.right(comic->info.hash.length()-40).toInt()/1024.0/1024.0,'f',2)+"Mb"); + if(comic->info.hasBeenOpened) + t.setVariable(QString("element%1.pages").arg(i),QString("%1/%2 pages").arg(comic->info.currentPage).arg(comic->info.numPages.toInt())); + else + t.setVariable(QString("element%1.pages").arg(i),QString("%1").arg(comic->info.numPages.toInt())); + + if(comic->info.read) + t.setVariable(QString("element%1.status").arg(i), QString("
")); + else if(comic->info.hasBeenOpened) + t.setVariable(QString("element%1.status").arg(i), QString("
")); + else + t.setVariable(QString("element%1.status").arg(i),""); + + } i++; } - //int comicsOffset;// = qMax(0,((page - (numFolderPages - 1)) * 10) - (numFolders%10)); - - //int comicPage = numFolderPages!=0?page-(numFolderPages - 1):page; - - //if(comicPage > 0) - //{ - // comicsOffset = elementsPerPage - (numFolders%elementsPerPage); - // comicsOffset += (comicPage-1) *elementsPerPage; - //} - //else - // comicsOffset = 0; - - // - - //int globalComicsOffset = elementsPerPage - (numFolders%elementsPerPage); - //int numComicsAtCurrentPage = 0; - - //if(comicPage == 0) //primera página de los cómics - // numComicsAtCurrentPage = qMin(globalComicsOffset,numComics); - // else if (page == (numPages-1)) //última página de los cómics - // numComicsAtCurrentPage = elementsPerPage-globalComicsOffset + (numComics%elementsPerPage); - // else - // numComicsAtCurrentPage = elementsPerPage - numFoldersAtCurrentPage; - - //if(numComics == 0) - // numComicsAtCurrentPage = 0; - ////response.writeText(QString("numComicsAtCurrentPage : %1
").arg(numComicsAtCurrentPage)); - ////response.writeText(QString("comicsOffset : %1
").arg(comicsOffset)); - - //t.loop("elementcomic",numComicsAtCurrentPage); - //// - //int j = 0; - - //while(jinfo.title == 0 || comic->info.title->isEmpty()) - // t.setVariable(QString("elementcomic%1.name").arg(j),comic->name); - // //else - // // t.setVariable(QString("elementcomic%1.name").arg(i),*comic->info.title); - // t.setVariable(QString("elementcomic%1.url").arg(j),"/library/"+QUrl::toPercentEncoding(libraryName)+"/comic/"+QString("%1").arg(comic->id)); - // t.setVariable(QString("elementcomic%1.coverulr").arg(j),"/library/"+QUrl::toPercentEncoding(libraryName)+"/cover/"+QString("%1").arg(comic->info.hash + ".jpg")); - // j++; - //} - if(numPages > 1) { t.setCondition("pageIndex",true); @@ -267,7 +274,6 @@ void FolderController::service(HttpRequest& request, HttpResponse& response) i++; count += indexCount.value(*itr); indexPage = count/elementsPerPage; - } } else @@ -295,12 +301,14 @@ void FolderController::service(HttpRequest& request, HttpResponse& response) t.setVariable("page.previous",QString("/library/%1/folder/%2?page=%3").arg(libraryId).arg(parentId).arg((page==0)?page:page-1)); t.setVariable("page.next",QString("/library/%1/folder/%2?page=%3").arg(libraryId).arg(parentId).arg((page==numPages-1)?page:page+1)); t.setVariable("page.last",QString("/library/%1/folder/%2?page=%3").arg(libraryId).arg(parentId).arg(numPages-1)); - + t.setCondition("index", true); } else { + t.loop("page",0); t.loop("index",0); + t.setCondition("index", false); t.setCondition("pageIndex",false); t.setCondition("alphaIndex",false); } @@ -310,4 +318,4 @@ void FolderController::service(HttpRequest& request, HttpResponse& response) response.write(t.toLatin1(),true); -} \ No newline at end of file +} diff --git a/YACReaderLibrary/server/controllers/librariescontroller.cpp b/YACReaderLibrary/server/controllers/librariescontroller.cpp index fc6472f0..a154b7f8 100644 --- a/YACReaderLibrary/server/controllers/librariescontroller.cpp +++ b/YACReaderLibrary/server/controllers/librariescontroller.cpp @@ -10,32 +10,53 @@ LibrariesController::LibrariesController() {} void LibrariesController::service(HttpRequest& request, HttpResponse& response) { - HttpSession session=Static::sessionStore->getSession(request,response); - session.set("ySession","ok"); - session.clearNavigationPath(); - response.setHeader("Content-Type", "text/html; charset=ISO-8859-1"); - response.setHeader("Connection","close"); - - - QString postData = QString::fromUtf8(request.getBody()); - //response.writeText(postData); + HttpSession session=Static::sessionStore->getSession(request,response); + if(session.contains("ySession")) //session is already alive check if it is needed to update comics + { + QString postData = QString::fromUtf8(request.getBody()); + if(postData.length()>0) { + QList data = postData.split("\n"); + if(data.length() > 2) { + //ONLY COMICS ARE UPDATED, DEVICE CHARACTERISTICS ARE INMUTABLE + QList comics = data.at(2).split(":").at(1).split("\t"); + foreach(QString hash,comics) { + session.setComicOnDevice(hash); + } + } + } + } + else + { + session.set("ySession","ok"); - QList data = postData.split("\n"); - if(data.length() > 2) - { - session.setDeviceType(data.at(0).split(":").at(1)); - session.setDisplayType(data.at(1).split(":").at(1)); - QList comics = data.at(2).split(":").at(1).split("\t"); - foreach(QString hash,comics) - { - session.setComicOnDevice(hash); - } - } - else //valores por defecto, con propositos de depuración - { - session.setDeviceType("ipad"); - session.setDisplayType("retina"); - } + session.clearNavigationPath(); + session.clearFoldersPath(); + + response.setHeader("Content-Type", "text/html; charset=ISO-8859-1"); + response.setHeader("Connection","close"); + + + QString postData = QString::fromUtf8(request.getBody()); + //response.writeText(postData); + + QList data = postData.split("\n"); + if(data.length() > 2) + { + session.setDeviceType(data.at(0).split(":").at(1)); + session.setDisplayType(data.at(1).split(":").at(1)); + QList comics = data.at(2).split(":").at(1).split("\t"); + foreach(QString hash,comics) + { + session.setComicOnDevice(hash); + } + } + else //values by default, only for debug purposes. + { + session.setDeviceType("iphone"); + session.setDisplayType("@2x"); + } + + } Template t=Static::templateLoader->getTemplate("libraries_"+session.getDeviceType(),request.getHeader("Accept-Language")); t.enableWarnings(); @@ -54,6 +75,6 @@ void LibrariesController::service(HttpRequest& request, HttpResponse& response) i++; } + response.setStatus(200,"OK"); response.write(t.toLatin1(),true); - } diff --git a/YACReaderLibrary/server/lib/bfHttpServer/httprequest.cpp b/YACReaderLibrary/server/lib/bfHttpServer/httprequest.cpp index b91cb817..8ed427b5 100644 --- a/YACReaderLibrary/server/lib/bfHttpServer/httprequest.cpp +++ b/YACReaderLibrary/server/lib/bfHttpServer/httprequest.cpp @@ -12,8 +12,8 @@ HttpRequest::HttpRequest(QSettings* settings) { status=waitForRequest; currentSize=0; expectedBodySize=0; - maxSize=settings->value("maxRequestSize","16000000").toInt(); - maxMultiPartSize=settings->value("maxMultiPartSize","1000000").toInt(); + maxSize=settings->value("maxRequestSize","32000000").toInt(); + maxMultiPartSize=settings->value("maxMultiPartSize","32000000").toInt(); } void HttpRequest::readRequest(QTcpSocket& socket) { diff --git a/YACReaderLibrary/server/lib/bfHttpServer/httpsession.cpp b/YACReaderLibrary/server/lib/bfHttpServer/httpsession.cpp index 10e30596..3f1cbd21 100644 --- a/YACReaderLibrary/server/lib/bfHttpServer/httpsession.cpp +++ b/YACReaderLibrary/server/lib/bfHttpServer/httpsession.cpp @@ -307,3 +307,36 @@ int HttpSession::topPage() return dataPtr->yacreaderSessionData.navigationPath.top(); return 0; } + +void HttpSession::clearFoldersPath() +{ + if(dataPtr) + dataPtr->yacreaderSessionData.foldersPath.clear(); +} + +int HttpSession::popFolder() +{ + if(dataPtr && !(dataPtr->yacreaderSessionData.foldersPath.isEmpty())) + return dataPtr->yacreaderSessionData.foldersPath.pop(); + return 0; +} + +void HttpSession::pushFolder(int page) +{ + if(dataPtr) + dataPtr->yacreaderSessionData.foldersPath.push(page); +} + +int HttpSession::topFolder() +{ + if(dataPtr) + return dataPtr->yacreaderSessionData.foldersPath.top(); + return 0; +} + +QStack HttpSession::getFoldersPath() +{ + if(dataPtr) + return dataPtr->yacreaderSessionData.foldersPath; + return QStack(); +} diff --git a/YACReaderLibrary/server/lib/bfHttpServer/httpsession.h b/YACReaderLibrary/server/lib/bfHttpServer/httpsession.h index 829e077a..d2e6c6b7 100644 --- a/YACReaderLibrary/server/lib/bfHttpServer/httpsession.h +++ b/YACReaderLibrary/server/lib/bfHttpServer/httpsession.h @@ -119,6 +119,12 @@ public: void pushPage(int page); int topPage(); + void clearFoldersPath(); + int popFolder(); + void pushFolder(int page); + int topFolder(); + QStack getFoldersPath(); + private: struct YACReaderSessionData { @@ -132,6 +138,7 @@ private: qulonglong comicId; QStack navigationPath; + QStack foldersPath; Comic * comic; }; diff --git a/YACReaderLibrary/server/lib/bfHttpServer/httpsessionstore.cpp b/YACReaderLibrary/server/lib/bfHttpServer/httpsessionstore.cpp index b37ee1d5..af7dc50c 100644 --- a/YACReaderLibrary/server/lib/bfHttpServer/httpsessionstore.cpp +++ b/YACReaderLibrary/server/lib/bfHttpServer/httpsessionstore.cpp @@ -14,7 +14,7 @@ HttpSessionStore::HttpSessionStore(QSettings* settings, QObject* parent) connect(&cleanupTimer,SIGNAL(timeout()),this,SLOT(timerEvent())); cleanupTimer.start(60000); cookieName=settings->value("cookieName","sessionid").toByteArray(); - expirationTime=settings->value("expirationTime",18000000).toInt(); + expirationTime=settings->value("expirationTime",86400000).toInt(); qDebug("HttpSessionStore: Sessions expire after %i milliseconds",expirationTime); } diff --git a/YACReaderLibrary/server/lib/bfHttpServer/staticfilecontroller.cpp b/YACReaderLibrary/server/lib/bfHttpServer/staticfilecontroller.cpp index e01a39b7..fde1cf8d 100644 --- a/YACReaderLibrary/server/lib/bfHttpServer/staticfilecontroller.cpp +++ b/YACReaderLibrary/server/lib/bfHttpServer/staticfilecontroller.cpp @@ -56,7 +56,11 @@ void StaticFileController::service(HttpRequest& request, HttpResponse& response) stringPath.remove(fileName); HttpSession session=Static::sessionStore->getSession(request,response,false); QString device = session.getDeviceType(); - fileName = getDeviceAwareFileName(fileName, device, request.getHeader("Accept-Language"), stringPath); + QString display = session.getDisplayType(); + if(fileName.endsWith(".png")) + fileName = getDeviceAwareFileName(fileName, device, display, request.getHeader("Accept-Language"), stringPath); + else + fileName = getDeviceAwareFileName(fileName, device, request.getHeader("Accept-Language"), stringPath); QString newPath = stringPath.append(fileName); path = newPath.toLocal8Bit(); @@ -207,5 +211,24 @@ QString StaticFileController::getDeviceAwareFileName(QString fileName, QString d if(QFile(docroot+"/"+path+completeFileName).exists()) return completeFileName; //existe un archivo específico para este dispositivo y locales else - return getLocalizedFileName(fileName,locales,path); //no hay archivo específico para el dispositivo, pero puede haberlo para estas locales + return getLocalizedFileName(fileName,locales,path); //no hay archivo específico para el dispositivo, pero puede haberlo para estas locales +} + +QString StaticFileController::getDeviceAwareFileName(QString fileName, QString device, QString display, QString locales, QString path) const +{ + QFileInfo fi(fileName); + QString baseName = fi.baseName(); + QString extension = fi.completeSuffix(); + + QString completeFileName = completeFileName = baseName+display+"."+extension; + if(QFile(docroot+"/"+path+completeFileName).exists()) + return completeFileName; + else + { + completeFileName = baseName+"_"+device+display+"."+extension; + if((QFile(docroot+"/"+path+completeFileName).exists())) + return completeFileName; + } + + return fileName; } diff --git a/YACReaderLibrary/server/lib/bfHttpServer/staticfilecontroller.h b/YACReaderLibrary/server/lib/bfHttpServer/staticfilecontroller.h index 1cbbdbf7..26413398 100644 --- a/YACReaderLibrary/server/lib/bfHttpServer/staticfilecontroller.h +++ b/YACReaderLibrary/server/lib/bfHttpServer/staticfilecontroller.h @@ -84,6 +84,7 @@ private: QString getLocalizedFileName(QString fileName, QString locales, QString path) const; QString getDeviceAwareFileName(QString fileName, QString device, QString locales, QString path) const; + QString getDeviceAwareFileName(QString fileName, QString device, QString display, QString locales, QString path) const; bool exists(QString localizedName, QString path) const; }; diff --git a/YACReaderLibrary/server/requestmapper.cpp b/YACReaderLibrary/server/requestmapper.cpp index 303ee8e0..5bbd9199 100644 --- a/YACReaderLibrary/server/requestmapper.cpp +++ b/YACReaderLibrary/server/requestmapper.cpp @@ -50,10 +50,10 @@ void RequestMapper::service(HttpRequest& request, HttpResponse& response) { else { - //se comprueba que la sesión sea la correcta con el fin de evitar accesos no autorizados - HttpSession session=Static::sessionStore->getSession(request,response,false); - if(!session.isNull() && session.contains("ySession")) - { + //se comprueba que la sesión sea la correcta con el fin de evitar accesos no autorizados + HttpSession session=Static::sessionStore->getSession(request,response,false); + if(!session.isNull() && session.contains("ySession")) + { if(library.indexIn(path)!=-1 && DBHelper::getLibraries().contains(library.cap(1).toInt()) ) { //listar el contenido del folder @@ -83,11 +83,11 @@ void RequestMapper::service(HttpRequest& request, HttpResponse& response) { //response.writeText(library.cap(1)); Static::staticFileController->service(request, response); } - } - else //acceso no autorizado, redirección - { - ErrorController(300).service(request,response); - } + } + else //acceso no autorizado, redirección + { + ErrorController(300).service(request,response); + } } } diff --git a/release/server/docroot/css/styles_ipad.css b/release/server/docroot/css/styles_ipad.css index b54e9f71..b89a6bf8 100644 --- a/release/server/docroot/css/styles_ipad.css +++ b/release/server/docroot/css/styles_ipad.css @@ -1,246 +1,364 @@ body{ - background-color: #363636; + background-color: #F5F5F5; font-family: Arial, Helvetica, sans-serif; } -#content{ - width: 712px; - background: url("../images/topbox.jpg") no-repeat scroll 0 0 #FFF; - margin: 17px auto 0; - padding: 22px 0 22px 22px; - -} - +/* libraries */ #contentLibraries{ - width: 256px; - background: url("../images/topboxLibraries.jpg") no-repeat scroll 0 0 #FFF; - margin: 16px auto 0; - padding: 16px; + width: 300px; + border: 1px solid #C6C6C6; + background-color: white; + margin-left: auto; + margin-right: auto; + margin-top: 9px; } -.sombraLibraries{ - background: url("../images/bottomboxLibraries.jpg") no-repeat scroll bottom center #FFF; - width: 288px; - height: 14px; - margin: 0 auto; +#contentLibraries .library-icon +{ + float: left; + background-color: white; + height: 18px; + padding: 11px 19px 10px 19px; + display:block; } -.index{ - width: 718px; - background: url("../images/topbox.jpg") no-repeat scroll 0 0 #FFF; - margin: 7px auto 0; - padding: 16px 0px 0px 16px; +#contentLibraries li +{ + border-bottom: 1px solid #e2e2e2; + position: relative; + list-style: none; } +#contentLibraries li:last-child +{ + border: none; +} + +#contentLibraries .library-link +{ + width: 211px; + height: 28px; + border: none; + padding: 11px 0 0 0px; + background-color: white; + display: block; + float:left; + font-family: Arial; + font-size: 16px; + text-decoration: none; + color: #525252 ; +} + + #contentLibraries a +{ + position: absolute; + height: 39px; + width: 100%; + z-index: 10; + display: block; + top 0; + text-decoration: none; +} + +#contentLibraries .library-indicator +{ + float: left; + background-color: white; + height: 8px; + padding: 16px 16px 15px 16px; + display:block; +} + + +#content h1 +{ + color: #292929; + text-align: center; + font-size: 21px; +} + +#contentLibraries h1{ + color: #292929; + text-align: center; + border-bottom: 1px solid #C6C6C6; + font-size: 21px; + padding: 15px 0 16px 0; +} + +#folder-header +{ + position: fixed; + width: 100%; + height: 88px; + background-color: rgba(255,255,255,0.9); + border-bottom: 1px solid #C6C6C6; + z-index: 999; +} + +#folder-subheader1 +{ + width: 100%; + height: 40px; + margin-top: 18px; + +} + +#folder-subheader2 +{ + width: 100%; + padding-left: 16px; +} + +#topIndex +{ + position: absolute; + left: 16px; + top: 19px; +} + +#topIndex a +{ + float: left; +} + +.indicator { + margin: 0 9px; +} + +.path { + text-decoration: none; + color: #5C5C5C; + font-family: Arial, Helvetica; + font-size: 15px; + +} + +#header-combos +{ + position: absolute; + right: 15px; + top: 15px; + color: #a3a3a3; + width: 160px; +} + +#topIndex .next{ + width: 25px; + height: 19px; + border: none; + margin: 0 21px 4px 0; + padding: 5px 0 0 0; + display: block; + background: url("/images/next.png") no-repeat scroll 0 0 transparent; + background-size: 25px 19px; + padding: 0; + text-indent: -99999px; +} + +#topIndex .previous{ + width: 25px; + height: 19px; + border: none; + margin: 0 14px 4px 0; + padding: 5px 0 0 0; + display: block; + background: url("/images/prev.png") no-repeat scroll 0 0 transparent; + background-size: 25px 19px; + padding: 0; + text-indent: -99999px; +} + +#topIndex .up{ + width: 15px; + height: 19px; + border: none; + background: url("/images/up.png") no-repeat scroll 0 0 transparent; + background-size: 15px 19px; + color: #FFF; + display: block; + text-indent: -99999px; +} + +#itemContainer li +{ +float: left; +width: 242px; +height: 120px; +border: 1px solid #E2E2E2; +margin: 9px 9px 0px 0; +background-color: white; +overflow: hidden; +position: relative; +} + +.folderContent +{ + padding-top: 90px; + padding-left: 9px; +} +/* hasta aquí */ + .folder { float: left; + } .cover { float: left; +overflow: hidden; } -.cover img +.mark { - -webkit-box-shadow: 0px 0px 5px #333; + position: absolute; + top: 0px; + margin-left: 55px; } - .info { padding: 8px 0px 0px 0px; float: left; position: relative; height: 115px; -width: 135px; +width: 158px; } .buttons { -position:absolute; -bottom:0px; -left:0px; + position:absolute; + bottom:0px; + left:0px; + border-top: 1px solid #e2e2e2; + padding-top: 3px; + height: 25px; + width: 162px; + font-family: Arial; + color: #6e6e6e; + font-size: 10px; } -#itemContainer li +.elementInfo { -float: left; -width: 225px; -height: 120px; -margin: 20px 12px 20px 0; + position:absolute; + bottom:24px; + padding-top: 3px; + height: 25px; + width: 162px; + font-family: Arial; + color: #adadad; + font-size: 10px; } +.numPages +{ + float: left; + padding-left:8px; +} + +.comicSize +{ + float: right; + padding-right: 9px; +} + + #itemContainer a { text-decoration: none; - font-family: Arial; - color: #FFF; - font-size: 13px; + } .browseButton { - width: 57px; - height: 22px; - background: url("../images/bt_browse.jpg") no-repeat scroll 0 0 transparent; + width: 60px; + background: url("/images/browse.png") no-repeat scroll 0 0 transparent; + background-position: 16px 5px; + background-size: 7px 7px; border: none; - text-align:center; + text-align:right; display: block; - float: left; - padding: 4px 0 0 0; - margin: 0 0 0 4px; + float: right; + padding: 4px 10px 0 0; + color: #6e6e6e; } .importButton { - width: 57px; - height: 18px; - background: url("../images/bt_import.jpg") no-repeat scroll 0 0 transparent; + width: 60px; + background: url("/images/download.png") no-repeat scroll 0 0 transparent; + background-position: 3px 5px; + background-size: 7px 8px; border: none; - text-align:center; + text-align:left; display: block; float: left; margin: 0 0 0 4px; - padding: 4px 0 0 0; + padding: 4px 0 0 16px; + color: #6e6e6e; +} + +.readButton +{ + width: 60px; + background: url("/images/read.png") no-repeat scroll 0 0 transparent; + background-position: 24px 5px; + background-size: 7px 9px; + border: none; + text-align:right; + display: block; + float: right; + padding: 4px 10px 0 0; + color: #6e6e6e; } .importedButton { - width: 67px; - height: 18px; - background: url("../images/bt_import.jpg") no-repeat scroll 0 -22px transparent; + width: 60px; + background: url("/images/imported.png") no-repeat scroll 0 0 transparent; + background-position: 2px 6px; + background-size: 8px 6px; border: none; - text-align:center; + text-align:left; display: block; float: left; margin: 0 0 0 4px; - padding: 4px 0 0 0; - text-decoration: none; - font-family: Arial; - color: #FFF; - font-size: 13px; + padding: 4px 0 0 16px; + color: #6e6e6e; } -#librariesList a -{ - width: 256px; - height: 32px; - background: url("../images/bt_library_iphone.jpg") no-repeat scroll 0 0 transparent; - border: none; - display: block; - padding: 9px 0 0 40px; - text-decoration: none; - font-family: Arial; - color: #FFF; - font-size: 13px; + +#indexes{ + border-top: 1px solid #C6C6C6; + background-color: white; + padding: 0px; + margin: 9px 0 0 0; } -#topIndex -{ - width: 100%; - float: right; - margin: 0 24px 15px 0; -} - -#topIndex a -{ - float: right; -} - -#topIndex .next{ - width: 29px; - height: 29px; - border: none; - margin: 0 8px 4px 0; - padding: 5px 0 0 0; - display: block; - background: url("../images/bt_next.jpg") no-repeat scroll 0 0 transparent; - padding: 0; - text-indent: -9999px; -} - -#topIndex .previous{ - width: 29px; - height: 29px; - border: none; - margin: 0 8px 4px 0; - padding: 5px 0 0 0; - display: block; - background: url("../images/bt_previous.jpg") no-repeat scroll 0 0 transparent; - padding: 0; - text-indent: -9999px; -} - -#topIndex .up{ - width: 92px; - height: 29px; - border: none; - margin: 0 8px 4px 0; - padding: 5px 0 0 0; - background: url("../images/bt_libraries.jpg") no-repeat scroll 0 0 transparent; - color: #FFF; - font-size: 17px; - display: block; - text-decoration: none; - font-family: Arial; - font-weight: bold; - text-align:center; -} - -#topIndex .libraries{ - width: 92px; - height: 29px; - border: none; - margin: 0 8px 4px 0; - padding: 6px 0 0 0; - background: url("../images/bt_libraries.jpg") no-repeat scroll 0 0 transparent; - color: #FFF; - font-size: 17px; - display: block; - text-decoration: none; - font-family: Arial; - font-weight: bold; - text-align:center; -} - -#libraryList li -{ - -} - -#libraryList a -{ - width: 256px; - height: 32px; - background: url("../images/bt_library.jpg") no-repeat scroll 0 0 transparent; - border: none; - padding: 8px 0 0 40px; - color: #FFF; - font-size: 14px; - display: block; - text-decoration: none; - font-family: Arial; +.index{ + background-color: white; + margin: 9px 0 9px 0; } #alphaIndex a, #pageIndex a{ width: 29px; - height: 29px; - background: url("../images/bt_index.jpg") no-repeat scroll 0 0 transparent; + height: 24px; border: none; - margin: 0 8px 4px 0; - padding: 5px 0 0 0; - color: #FFF; + margin: 0 0 9px 9px; + padding: 5px 0 0 0px; + color: #5C5C5C; font-size: 20px; + text-align: center; display: block; text-decoration: none; font-family: Arial; - font-weight: bold; + border: 1px solid #E2E2E2; text-align:center; } @@ -249,36 +367,12 @@ margin: 20px 12px 20px 0; } #pageIndex .current{ - background: url("../images/bt_current.jpg") no-repeat scroll 0 0 transparent; - color: #EBEBEB; + color: white; + background-color: #A2A2A2; + border: 1px solid #A2A2A2; + } -#alphaIndex .next, #pageIndex .next { - background: url("../images/bt_next.jpg") no-repeat scroll 0 0 transparent; - padding: 0; - text-indent: -9999px; -} -#alphaIndex .previous, #pageIndex .previous{ - background: url("../images/bt_previous.jpg") no-repeat scroll 0 0 transparent; - padding: 0; - text-indent: -9999px; -} -#alphaIndex .first, #pageIndex .first{ - background: url("../images/bt_first.jpg") no-repeat scroll 0 0 transparent; - padding: 0; - text-indent: -9999px; -} -#alphaIndex .last, #pageIndex .last{ - background: url("../images/bt_last.jpg") no-repeat scroll 0 0 transparent; - padding: 0; - text-indent: -9999px; -} - #content h1, #contentLibraries h1{ - color: #696969; - font-weight: bold; - font-size: 21px; - margin: 0 0 5px 0; - } #content h2, #contentLibraries h2{ color: #000; font-weight: bold; @@ -289,13 +383,13 @@ margin: 20px 12px 20px 0; .inputs_login{ width: 256px; height: 64px; - background: url("../images/fnd_inputs.jpg") no-repeat scroll 0 0 #FFF; + background: url("/images/fnd_inputs.jpg") no-repeat scroll 0 0 #FFF; margin: 0 0 18px 0; } .username{ width: 200px; height: 24px; - background: url("../images/fnd_input_username.jpg") no-repeat scroll 0 0 #2b2b2b; + background: url("/images/fnd_input_username.jpg") no-repeat scroll 0 0 #2b2b2b; border: none; padding: 0 0 0 44px; margin: 5px 0 6px 8px; @@ -305,7 +399,7 @@ margin: 20px 12px 20px 0; .pass{ width: 200px; height: 24px; - background: url("../images/fnd_input_pass.jpg") no-repeat scroll 0 0 #2b2b2b; + background: url("/images/fnd_input_pass.jpg") no-repeat scroll 0 0 #2b2b2b; border: none; padding: 0 0 0 44px; margin: 0 0 0 8px; @@ -315,7 +409,7 @@ margin: 20px 12px 20px 0; .button_sign{ width: 86px; height: 30px; - background: url("../images/bt_login.jpg") no-repeat scroll 0 0 transparent; + background: url("/images/bt_login.jpg") no-repeat scroll 0 0 transparent; border: none; margin: 0; padding: 0; @@ -331,12 +425,7 @@ margin: 20px 12px 20px 0; margin: 0 0 0 8px; line-height: 120%; } -.sombra{ - background: url("../images/bottombox.jpg") no-repeat scroll bottom center #FFF; - width: 734px; - height: 13px; - margin: 0 auto; -} + .clear{ height: 2px; clear: both; @@ -344,11 +433,33 @@ margin: 20px 12px 20px 0; .title{ font-family: Arial; - font-weight: bold; font-size: 12px; margin: 0 0 0 6px; - color: #333; + color: #555555 ; overflow: hidden; word-wrap: break-word; height: 80px; + text-decoration: none; } + +#indexalpha, #indexnumber{ + + -webkit-appearance: none; + background-color: rgba(255,255,255,0); + border-radius: 0px; + border: none; + color: #a3a3a3; + font-size: 16px; + font-family: Arial, Helvetica; + height: 30px; + margin: 0 0 0 10px; + padding:0; + float: right; +} + +.comboIndicator { + float: right; + padding: 14px 0 0 0; + margin: 0 0 0 4px; + width: 5px; +} \ No newline at end of file diff --git a/release/server/docroot/css/styles_iphone.css b/release/server/docroot/css/styles_iphone.css index dc5b1ee6..5a3cd9b1 100644 --- a/release/server/docroot/css/styles_iphone.css +++ b/release/server/docroot/css/styles_iphone.css @@ -1,138 +1,119 @@ body{ - background-color: #363636; + background-color: #F5F5F5; font-family: Arial, Helvetica, sans-serif; } -#content{ - width: 256px; - background: url("../images/topbox.jpg") no-repeat scroll 0 0 #FFF; - margin: 16px auto 0; - padding: 16px; +/* libraries */ +#contentLibraries{ + width: 300px; + border: 1px solid #C6C6C6; + background-color: white; + margin-left: auto; + margin-right: auto; + margin-top: 9px; } -.folder +#contentLibraries .library-icon { -float: left; -} - -.cover -{ -float: left; -} - -.cover img -{ - -webkit-box-shadow: 0px 0px 5px #333; -} - -.index{ - width: 272px; - background: url("../images/topbox.jpg") no-repeat scroll 0 0 #FFF; - margin: 7px auto 0; - padding: 16px 0px 0px 16px; -} - -.info -{ -padding: 8px 0px 0px 0px; -float: left; -position: relative; -height: 110px; -width: 160px; -} - -.buttons -{ -position:absolute; -bottom:0px; -left:0px; -} - -#itemContainer li -{ -float: left; -width: 250px; -height: 120px; -margin: 20px 0 15px 0; -} - -#itemContainer a -{ - text-decoration: none; - font-family: Arial; - color: #FFF; - font-size: 13px; - -} - -.browseButton -{ - width: 67px; - height: 24px; - background: url("../images/bt_browse.jpg") no-repeat scroll 0 0 transparent; - border: none; - text-align:center; - display: block; float: left; - padding: 5px 0 0 0; - margin: 0 0 0 8px; + background-color: white; + height: 18px; + padding: 11px 19px 10px 19px; + display:block; } -.importButton +#contentLibraries li { - width: 67px; - height: 20px; - background: url("../images/bt_import.jpg") no-repeat scroll 0 0 transparent; - border: none; - text-align:center; - display: block; - float: left; - margin: 0 0 0 8px; - padding: 4px 0 0 0; + border-bottom: 1px solid #e2e2e2; + position: relative; + list-style: none; } -.importedButton +#contentLibraries li:last-child { - width: 77px; - height: 20px; - background: url("../images/bt_import.jpg") no-repeat scroll 0 -24px transparent; border: none; - text-align:center; +} + +#contentLibraries .library-link +{ + width: 211px; + height: 28px; + border: none; + padding: 11px 0 0 0px; + background-color: white; display: block; - float: left; - margin: 0 0 0 4px; - padding: 4px 0 0 0; - text-decoration: none; + float:left; font-family: Arial; - color: #FFF; - font-size: 13px; -} - -#librariesList li -{ - - -} - -#librariesList a -{ - width: 256px; - height: 32px; - background: url("../images/bt_library_iphone.jpg") no-repeat scroll 0 0 transparent; - border: none; - display: block; - - padding: 9px 0 0 40px; + font-size: 16px; text-decoration: none; - font-family: Arial; - color: #FFF; - font-size: 13px; + color: #525252 ; +} + + #contentLibraries a +{ + position: absolute; + height: 39px; + width: 100%; + z-index: 10; + display: block; + top 0; + text-decoration: none; +} + +#contentLibraries .library-indicator +{ + float: left; + background-color: white; + height: 8px; + padding: 16px 16px 15px 16px; + display:block; +} + + +#content h1 +{ + color: #292929; + text-align: center; + font-size: 21px; +} + +#contentLibraries h1{ + color: #292929; + text-align: center; + border-bottom: 1px solid #C6C6C6; + font-size: 21px; + padding: 15px 0 16px 0; +} + +#folder-header +{ + position: fixed; + width: 100%; + height: 88px; + background-color: rgba(255,255,255,0.9); + border-bottom: 1px solid #C6C6C6; + z-index: 999; +} + +#folder-subheader1 +{ + width: 100%; + height: 40px; + margin-top: 18px; + +} + +#folder-subheader2 +{ + width: 100%; + padding-left: 16px; } #topIndex { - width: 100%; - margin: 7px 0px 7px 0px; + position: absolute; + left: 16px; + top: 19px; } #topIndex a @@ -140,95 +121,242 @@ margin: 20px 0 15px 0; float: left; } +.indicator { + margin: 0 5px; +} + +.path { + text-decoration: none; + color: #5C5C5C; + font-family: Arial, Helvetica; + font-size: 15px; + +} + +#header-combos +{ + position: absolute; + right: 10px; + top: 15px; + color: #a3a3a3; + width: 160px; +} + #topIndex .next{ - width: 29px; - height: 29px; + width: 25px; + height: 19px; border: none; - margin: 0 8px 4px 0; + margin: 0 21px 4px 0; padding: 5px 0 0 0; display: block; - background: url("../images/bt_next.jpg") no-repeat scroll 0 0 transparent; + background: url("/images/next.png") no-repeat scroll 0 0 transparent; + background-size: 25px 19px; padding: 0; - text-indent: -9999px; + text-indent: -99999px; } #topIndex .previous{ - width: 29px; - height: 29px; + width: 25px; + height: 19px; border: none; - margin: 0 8px 4px 0; + margin: 0 14px 4px 0; padding: 5px 0 0 0; display: block; - background: url("../images/bt_previous.jpg") no-repeat scroll 0 0 transparent; + background: url("/images/prev.png") no-repeat scroll 0 0 transparent; + background-size: 25px 19px; padding: 0; - text-indent: -9999px; + text-indent: -99999px; } #topIndex .up{ - width: 58px; - height: 29px; + width: 15px; + height: 19px; border: none; - margin: 0 8px 4px 0; - padding: 5px 0 0 0; - background: url("../images/bt_up.jpg") no-repeat scroll 0 0 transparent; + background: url("/images/up.png") no-repeat scroll 0 0 transparent; + background-size: 15px 19px; color: #FFF; - font-size: 17px; display: block; - text-decoration: none; - font-family: Arial; - font-weight: bold; - text-align:center; + text-indent: -99999px; } -#topIndex .libraries{ - width: 92px; - height: 29px; - border: none; - margin: 0 8px 4px 0; - padding: 6px 0 0 0; - background: url("../images/bt_libraries.jpg") no-repeat scroll 0 0 transparent; - color: #FFF; - font-size: 17px; - display: block; - text-decoration: none; - font-family: Arial; - font-weight: bold; - text-align:center; -} - -#libraryList li +#itemContainer li { +width: 300px; +height: 120px; +border: 1px solid #E2E2E2; +margin: 9px auto 0px auto; +background-color: white; +overflow: hidden; +position: relative; +} + +.folderContent +{ + padding-top: 90px; +} +/* hasta aquí */ + +.folder +{ +float: left; } -#libraryList a +.cover { - width: 256px; - height: 32px; - background: url("../images/bt_library.jpg") no-repeat scroll 0 0 transparent; - border: none; - padding: 8px 0 0 40px; - color: #FFF; - font-size: 14px; - display: block; - text-decoration: none; +float: left; +overflow: hidden; +} + +.mark +{ + position: absolute; + top: 0px; + margin-left: 55px; +} + +.info +{ +padding: 8px 0px 0px 0px; +float: left; +position: relative; +height: 115px; +width: 212px; + +} + +.buttons +{ + position:absolute; + bottom:0px; + left:0px; + border-top: 1px solid #e2e2e2; + padding-top: 3px; + height: 25px; + width: 220px; font-family: Arial; + color: #6e6e6e; + font-size: 10px; +} + +.elementInfo +{ + position:absolute; + bottom:24px; + padding-top: 3px; + height: 25px; + width: 220px; + font-family: Arial; + color: #adadad; + font-size: 10px; +} + +.numPages +{ + float: left; + padding-left:8px; +} + +.comicSize +{ + float: right; + padding-right: 9px; +} + + + +#itemContainer a +{ + text-decoration: none; + + +} + +.browseButton +{ + width: 60px; + background: url("/images/browse.png") no-repeat scroll 0 0 transparent; + background-position: 16px 5px; + background-size: 7px 7px; + border: none; + text-align:right; + display: block; + float: right; + padding: 4px 10px 0 0; + color: #6e6e6e; +} + +.importButton +{ + width: 60px; + background: url("/images/download.png") no-repeat scroll 0 0 transparent; + background-position: 3px 5px; + background-size: 7px 8px; + border: none; + text-align:left; + display: block; + float: left; + margin: 0 0 0 4px; + padding: 4px 0 0 16px; + color: #6e6e6e; +} + +.readButton +{ + width: 60px; + background: url("/images/read.png") no-repeat scroll 0 0 transparent; + background-position: 24px 5px; + background-size: 7px 9px; + border: none; + text-align:right; + display: block; + float: right; + padding: 4px 10px 0 0; + color: #6e6e6e; +} + +.importedButton +{ + width: 60px; + background: url("/images/imported.png") no-repeat scroll 0 0 transparent; + background-position: 2px 6px; + background-size: 8px 6px; + border: none; + text-align:left; + display: block; + float: left; + margin: 0 0 0 4px; + padding: 4px 0 0 16px; + color: #6e6e6e; +} + + +#indexes{ + border-top: 1px solid #C6C6C6; + background-color: white; + padding: 0px; + margin: 9px 0 0 0; +} + +.index{ + background-color: white; + margin: 9px 0 9px 0; } #alphaIndex a, #pageIndex a{ width: 29px; - height: 29px; - background: url("../images/bt_index.jpg") no-repeat scroll 0 0 transparent; + height: 24px; border: none; - margin: 0 8px 4px 0; - padding: 5px 0 0 0; - color: #FFF; + margin: 0 0 9px 9px; + padding: 5px 0 0 0px; + color: #5C5C5C; font-size: 20px; + text-align: center; display: block; text-decoration: none; font-family: Arial; - font-weight: bold; + border: 1px solid #E2E2E2; text-align:center; } @@ -237,37 +365,13 @@ margin: 20px 0 15px 0; } #pageIndex .current{ - background: url("../images/bt_current.jpg") no-repeat scroll 0 0 transparent; - color: #EBEBEB; + color: white; + background-color: #A2A2A2; + border: 1px solid #A2A2A2; + } -#alphaIndex .next, #pageIndex .next{ - background: url("../images/bt_next.jpg") no-repeat scroll 0 0 transparent; - padding: 0; - text-indent: -9999px; -} -#alphaIndex .previous, #pageIndex .previous{ - background: url("../images/bt_previous.jpg") no-repeat scroll 0 0 transparent; - padding: 0; - text-indent: -9999px; -} -#alphaIndex .first, #pageIndex .first{ - background: url("../images/bt_first.jpg") no-repeat scroll 0 0 transparent; - padding: 0; - text-indent: -9999px; -} -#alphaIndex .last, #pageIndex .last{ - background: url("../images/bt_last.jpg") no-repeat scroll 0 0 transparent; - padding: 0; - text-indent: -9999px; -} - #content h1{ - color: #696969; - font-weight: bold; - font-size: 21px; - margin: 0 0 5px 0; - } - #content h2{ + #content h2, #contentLibraries h2{ color: #000; font-weight: bold; font-size: 12px; @@ -277,13 +381,13 @@ margin: 20px 0 15px 0; .inputs_login{ width: 256px; height: 64px; - background: url("../images/fnd_inputs.jpg") no-repeat scroll 0 0 #FFF; + background: url("/images/fnd_inputs.jpg") no-repeat scroll 0 0 #FFF; margin: 0 0 18px 0; } .username{ width: 200px; height: 24px; - background: url("../images/fnd_input_username.jpg") no-repeat scroll 0 0 #2b2b2b; + background: url("/images/fnd_input_username.jpg") no-repeat scroll 0 0 #2b2b2b; border: none; padding: 0 0 0 44px; margin: 5px 0 6px 8px; @@ -293,7 +397,7 @@ margin: 20px 0 15px 0; .pass{ width: 200px; height: 24px; - background: url("../images/fnd_input_pass.jpg") no-repeat scroll 0 0 #2b2b2b; + background: url("/images/fnd_input_pass.jpg") no-repeat scroll 0 0 #2b2b2b; border: none; padding: 0 0 0 44px; margin: 0 0 0 8px; @@ -303,7 +407,7 @@ margin: 20px 0 15px 0; .button_sign{ width: 86px; height: 30px; - background: url("../images/bt_login.jpg") no-repeat scroll 0 0 transparent; + background: url("/images/bt_login.jpg") no-repeat scroll 0 0 transparent; border: none; margin: 0; padding: 0; @@ -319,12 +423,7 @@ margin: 20px 0 15px 0; margin: 0 0 0 8px; line-height: 120%; } -.sombra{ - background: url("../images/bottombox.jpg") no-repeat scroll bottom center #FFF; - width: 288px; - height: 14px; - margin: 0 auto; -} + .clear{ height: 2px; clear: both; @@ -332,11 +431,33 @@ margin: 20px 0 15px 0; .title{ font-family: Arial; - font-weight: bold; - font-size: 14px; + font-size: 12px; margin: 0 0 0 6px; - color: #333; + color: #555555 ; overflow: hidden; word-wrap: break-word; - height: 80px; + height: 65px; + text-decoration: none; } + +#indexalpha, #indexnumber{ + + -webkit-appearance: none; + background-color: rgba(255,255,255,0); + border-radius: 0px; + border: none; + color: #a3a3a3; + font-size: 16px; + font-family: Arial, Helvetica; + height: 30px; + margin: 0 0 0 10px; + padding:0; + float: right; +} + +.comboIndicator { + float: right; + padding: 14px 0 0 0; + margin: 0 0 0 4px; + width: 5px; +} \ No newline at end of file diff --git a/release/server/docroot/images/bottomboxLibraries_ipad.jpg b/release/server/docroot/images/bottomboxLibraries_ipad.jpg deleted file mode 100644 index 2df2df837a364207c96054c7556862123c2daba7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1491 zcma)4do?w_k8bH)vbC8NKOtr z8~{WC5U?mfH37)qg&jB)2_Qg&B@(En0MRbs=>9+u(6GorRWCRV;MW878OSI6*N%d4 zF}rv^CBD{CH2|_2AVL}f$pA%$2pOuHKoS5bWJx~*jY2RGhgHWz_?i6IBP~{AF*uwW zPW@kE@fpYn8mFee41-nQxO`7WH(uAy^%wdIZHoV~#N2D!cCTdazo_GR>)vsG{x=3f zhGP) z1&!G0h|}4rt4kE0_vTOwQ;Fu;mX_45x|Ip6A8F1aJ%TBA7q>izvQ)N7H%e1n;l(j6 zOf@llN7Q{jPohT?lme1wyc>gZEYAO?4b5^kW%dr7v`jb_J5-h9HPv+*c@hj;SpAnm zzcuCURslA4gKeuCZbStNYl;cjIV^RU1~<4V={7+BFowK_S-3x41BpJQ<%U0JmiB6G z8>tjYdEpBm>GfQStpUjfPh#$uSKsr6XV}#loB&z3b^LE1BgG9Li-W#Tmqa%&ocv}tA{;evBU^;pr6koi|k_6#q` zJ<+S`>dz`*Tz@xnLi>Yx2h@|enKSTJ18t3yePEYar!sIverHTGKA<(nkk#uMmF~_Q zw*^}o@j2FU62&^|lnE<=!klAs;C=JksDwD4i}umlLE+l#NjJb{6qpv7Cxm>E)7Cf7 z2?i1m%D5!0-~u8p`VHY~D=ez|C&bI^aDo!d_C$+r*Lg(?6yD^y=(i9AV!lxs*F|G# z-CyjH{7k*k-mddOnIm$e1Ag7Fu#kq&Hf0Z-42#X;=%`zyJaA1Cy=_slnq`%EGf9&{ z-P`7Ty{+@Fy)zt`gS{sn1!niz$+kyCz@WG2Ha=JTO_SEC-udy+)vGU^fA%}^=_^e< zdL32llbre3%HEWZEtLdOV<-W1Pi{?0emfWq(vA!4DJ0G0gs^PvrpdljJ;miwa-F*L zerlg9Cq_hj=hmy{r?mNrokewG5Lpxwe;Y4r^QyeDc1&sR8dF{%9s8c`6J7ftl`W1o zqF0_Fq>Vo3N`==?mCc5Y=G{ClPA44Pr&b(oBz$-~)R%uhF>mMS3*~~8;a<|ioc7pb zJiQL)g&WMUjJu|I7p31Ddn1_AD-|BcJ$Bc+({=z32@StA$))S19{aqUW^zo9+_@(0 zS=s8ttjR7bqN4;;24M>l=Q){f#-F)CtE77g9-<%UeSNh@4T57*?{uhoVJuJVWLpF4Sspq6#y ziE^s!wVV_dd$avsH`G7!xz_4T*>IOUR{2AL=Fs&aBU$7=)aA$)g*k{a89u9Eaff96 i5#d_?;e%}-?BoaAc!cg`u>N6gC1smcQY6V%)$=#1Wi)L7 diff --git a/release/server/docroot/images/bottombox_ipad.jpg b/release/server/docroot/images/bottombox_ipad.jpg deleted file mode 100644 index 22633b15ddb039ea581e221c92b0f2bf1650ed74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2459 zcmbVM3sh5O9RKd!7<2NtgJFbB?gn{$u#F8j*kq2e4cRetB8Hi1bGyQ%?au8Y2nr+? zCm$eKR!372Ipr~xggSJD%121~icAY73$e&V5he84$@OipK_;C}|8wv6{lEYBfBgQB zdtKkVxCf)R4{0=72Kl)DBXfDXk;0Jyqn({m`wt`LcAPNC6EE+>R0 z(kd!2+C^evoCqYT3hYKxEp)Ztk0q~s4L zm7kw4%#Rn6j%<-wE|~L!$d&!Xt%Llp>YsK zigaX>Qyrug_oS?_jEyB>On<|+=CQFPj%h1`U_|c5j%u`51gFQ%`oe1lKe;Iup7 zSi5e6$(~^a=Fj2hgU~=2oyK4V0>DTH!2d-6m@5Go_m1ld*Z>%GI^B=X@bhDgW59Pj zlfht)4`8vzvseLGfQPVvpkORGC?GVH!wC(IoH%h}WR#B(e}DhLfWUAJ3y%n6heh}< z{ww1;4%kc(h+d^3Y=E*68XIw)1p5KvA&B2g2nw@65bx2uV*sVW9O*Q#08Bv8XdW$; zVP}W%F$0|qXwb-Sl*Y9gwLCQ%LQ6*2m_b}~EVL}-akutRfWm+bl;(?wuz9cGcZ^k- zSUrDLyS*kZ`NOVbuFD_*x<}bGHmvlo%Agbgrc8lQ{1_Vnr~~L5UxPjH?-s`dbR3{h z<8G9tr65>S-!qGIFR=~yDFcBakh2FZ(?QKqgaQp-iiU$y>{u!AuelryV=*Bb#1DN` zGVQkubtU2lm9)0INtMxXN$ZbpuDCn1t?#j|v0^(nRxaIgtM}LSNDo?e@2+s}?2(^y zzTMh?D>t%lu(|ktOW*3s^8*`rOf8R@0^W(ScFf{Q+T7IC z)O<8z=G-$Awr}rRU*FiU{#91-pDa#ntRQNw5p8U&FZOGy`B@}{l+=+?J!PYPsI6{< z4~E<7<3~OxY%2ik0jSo~O94G34X*|uL`{b)Kw{vE!CO5Jl0hi~wx-1ZeN46YDIEvU zQToTm?K7Yk~2jX580nb5xXn9XQ3tUU+s^2!cz=ii*S zbZvXTyPWqlpPk*uVdoFN3$?(}nU{l(MA z2WJ<5(OYrrKnM3qR>S#~gKO65cCj*dwEAavWOr1*_i)>ZC1K_=X~4i!X9!fGBdW%(SMXxM9il5e;Uzs#` k*qm=&+IIWi{;Y18%?w_k8bH)vbC8NKOtr z8~{WC5U?mfH37)qg&jB)2_Qg&B@(En0MRbs=>9+u(6GorRWCRV;MW878OSI6*N%d4 zF}rv^CBD{CH2|_2AVL}f$pA%$2pOuHKoS5bWJx~*jY2RGhgHWz_?i6IBP~{AF*uwW zPW@kE@fpYn8mFee41-nQxO`7WH(uAy^%wdIZHoV~#N2D!cCTdazo_GR>)vsG{x=3f zhGP) z1&!G0h|}4rt4kE0_vTOwQ;Fu;mX_45x|Ip6A8F1aJ%TBA7q>izvQ)N7H%e1n;l(j6 zOf@llN7Q{jPohT?lme1wyc>gZEYAO?4b5^kW%dr7v`jb_J5-h9HPv+*c@hj;SpAnm zzcuCURslA4gKeuCZbStNYl;cjIV^RU1~<4V={7+BFowK_S-3x41BpJQ<%U0JmiB6G z8>tjYdEpBm>GfQStpUjfPh#$uSKsr6XV}#loB&z3b^LE1BgG9Li-W#Tmqa%&ocv}tA{;evBU^;pr6koi|k_6#q` zJ<+S`>dz`*Tz@xnLi>Yx2h@|enKSTJ18t3yePEYar!sIverHTGKA<(nkk#uMmF~_Q zw*^}o@j2FU62&^|lnE<=!klAs;C=JksDwD4i}umlLE+l#NjJb{6qpv7Cxm>E)7Cf7 z2?i1m%D5!0-~u8p`VHY~D=ez|C&bI^aDo!d_C$+r*Lg(?6yD^y=(i9AV!lxs*F|G# z-CyjH{7k*k-mddOnIm$e1Ag7Fu#kq&Hf0Z-42#X;=%`zyJaA1Cy=_slnq`%EGf9&{ z-P`7Ty{+@Fy)zt`gS{sn1!niz$+kyCz@WG2Ha=JTO_SEC-udy+)vGU^fA%}^=_^e< zdL32llbre3%HEWZEtLdOV<-W1Pi{?0emfWq(vA!4DJ0G0gs^PvrpdljJ;miwa-F*L zerlg9Cq_hj=hmy{r?mNrokewG5Lpxwe;Y4r^QyeDc1&sR8dF{%9s8c`6J7ftl`W1o zqF0_Fq>Vo3N`==?mCc5Y=G{ClPA44Pr&b(oBz$-~)R%uhF>mMS3*~~8;a<|ioc7pb zJiQL)g&WMUjJu|I7p31Ddn1_AD-|BcJ$Bc+({=z32@StA$))S19{aqUW^zo9+_@(0 zS=s8ttjR7bqN4;;24M>l=Q){f#-F)CtE77g9-<%UeSNh@4T57*?{uhoVJuJVWLpF4Sspq6#y ziE^s!wVV_dd$avsH`G7!xz_4T*>IOUR{2AL=Fs&aBU$7=)aA$)g*k{a89u9Eaff96 i5#d_?;e%}-?BoaAc!cg`u>N6gC1smcQY6V%)$=#1Wi)L7 diff --git a/release/server/docroot/images/browse.png b/release/server/docroot/images/browse.png new file mode 100644 index 0000000000000000000000000000000000000000..9043aa9d9858598d9af07bdc6c95e402680c6a0f GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^>>$j+1|*LJg}1oj85^_xT291H%W55|cF45{<>wj&+>(Tf?xN eErqjzftle=sQ{~F>Xc-l9tKZWKbLh*2~7Yv@h24k literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/browse@2x.png b/release/server/docroot/images/browse@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..06d5f0580720bdc26a2e67ebe314626eabd6a77c GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G(Vi}jAr-fhPMkjdoBt4x3X>X}(LseP9ojq{+XPos+Ivc= z`_4MTv4oFdBlD)SE;l)@yy?g@R<tDnm{r-UW|^CCGT literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/bt_browse_ipad.jpg b/release/server/docroot/images/bt_browse_ipad.jpg deleted file mode 100644 index 0657fe2e7ba488642904d9ddc3b9b0d0a6c27d0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 716 zcmex=iF;o{=v z;^GnD0RsUZK7IjyJ|1CV5fNcw8EI*08F@HhWM^mR<>8eO5Ri}(6%>_%OAyQWe~3Yl zgF%eJl9^GEfk}{&S&;Gn5r#QH?=Uk0U5@~aOsp)7j6h+85Rk>l#LObVz{JGJf-Ekm z$mAfvD8#}nA__E=fteG@C`Kj)$B7IEf`&qqE-@RM2q8&B3 z(NMs^A@Re(kNf|W3Vl$-!FnGsATCN_H}cZev0$;b#4)j2L^ zIpgoV?JCSGJX>DNUz=TRaT{V8Go!tt3-6YvvGD>o&-~R-|I>4FHG}cND@^a@erZ4~ z11Y&4#}6?W%*k&I2J#So5%_l7W83ZA{|x^bZo-WfNO({iur)mVfD+r0n?f~@-)~}g z%)`K*z`Q?EpR>aIP@K?*X^l6wtmChazPKN5lfZRiF;o{=v z;^GnD0RsUZK7IjyJ|1CV5fNcw8EI*08F@HhWM^mR<>8eO5Ri}(6%>_%OAyQWe~3Yl zgF%A9nVC_Lfk}{&S&;Gn5rzp2j35AXJ{&MJv9MwY0)59K08+?|q!wt71G6y5I7Vhx zxPGAb1(^&c3Na`eHZ}<%DF>@?5N2Qo8iuOez`-z3pmE~EkN3;?=2WT6D!^Fg9&lC?4M=%)~fucqei)?0bD^0UCTkmnq(Idxk!AH&1r^{>WA$Bq| z+AC(UXPf6f_|I^Iwbt!T{P%0+X_;%}f6sZo=mta)6G+ijn7v?*Gf+3eM*>BjDnMy4 z+;%%3s*(|?QlO&1KDRY@djtFYUb}$j0*r_6G;VO4Rl!i%e)-iosJB4sF2;yJoDbrp SC~`OntZ4y}U}CQP|C;~C5UDGKfoZ!!63^Z%giXqz$D1XEXer(2;(B4 z1KF6E8G#fOuye4nvT!nUF)=c51BKa`fi}bB7=TjD>`WYtoD5vt0t`%y%q)z|%pkWg zv2m6%GBL9VvI?;&vI{FQa2Sd>8Yzo%20Do)su+t06*fvFO;mMWxbcIUNfDRi!HcHq z4};B`K2BQX5>o8yX6~M>5gHaQwdv5MN1sxfOD4CZF5Z0j@?%Ylw9lnlmR25~UJ;Q| z=^2?>W#tu>RjqC99i3fMrcRqaW9Fb2`P zZr*zG^x5+lFJFE6`tAFVpTB?}XJlq#VPR%vVPRooW6cFRS&&6hh}DpdK}py#kliRz zq>#g@QF)?h(844!W6q5#2QNAoeGq@xWTHALSR&cwe8)8uRi^%;U1o5QPwtX*|uZXo_$L%Z=b$=`|<0~ zzk5VvRCLT(vE#&z7e6dLBQq;IXRh3N^5)B*T2@|BSyf%LR_!`<>(#ISw-|VU(ZeLj zEXZKbaJ7HiZv9QWZ*Sb5pIi3t)A?`w$@z1R#+4Vp+j~0R&RcWR`ZZIRBtD&aGczMI zpkw9AM8V5J!Hb-^R6JJjIkk$&Sh1O$c@udy;)`rO|9^(e{|pu1ca_H0R{yB~?f?7u z{^0f5FMa)Ye9zT8d%EKbcByaI!m@wfWp8c5o*#U>_jq^@|F=!g z3})0mpSEoIob{6|jD!`;ifmtdtgZQVzbkY3hwFdiAHF>OhW!iB4!OIRFX_6k+jpSe z|9gMkrK)d>uj61}x(#v3_LY}%kzMur{^9=&x9acN{+e4IANNoG-{pTF-(Pus>zCAS zulXxiRx_8nUi#VlbR-r=oZ3uI+uiMJ5FsI-f0H zXLx1Gr;Y{JAA0MS^p;%x^m1kiCx27K@t6>XdMn{e%ztM8n*Z(ee+JR-IVJbYUZry2oa}G#BHN(Np75)AL;(xaG;Qcj|X;$}D?0 z*b%7 diff --git a/release/server/docroot/images/bt_current_iphone.jpg b/release/server/docroot/images/bt_current_iphone.jpg deleted file mode 100644 index 883d71828d279f80d893da255adf2ac7ff05ec8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1113 zcmex=C5UDGKfoZ!!63^Z%giXqz$D1XEXer(2;(B4 z1KF6E8G#fOuye4nvT!nUF)=c51BKa`fi}bB7=TjD>`WYtoD5vt0t`%y%q)z|%pkWg zv2m6%GBL9VvI?;&vI{FQa2Sd>8Yzo%20Do)su+t06*fvFO;mMWxbcIUNfDRi!HcHq z4};B`K2BQX5>o8yX6~M>5gHaQwdv5MN1sxfOD4CZF5Z0j@?%Ylw9lnlmR25~UJ;Q| z=^2?>W#tu>RjqC99i3fMrcRqaW9Fb2`P zZr*zG^x5+lFJFE6`tAFVpTB?}XJlq#VPR%vVPRooW6cFRS&&6hh}DpdK}py#kliRz zq>#g@QF)?h(844!W6q5#2QNAoeGq@xWTHALSR&cwe8)8uRi^%;U1o5QPwtX*|uZXo_$L%Z=b$=`|<0~ zzk5VvRCLT(vE#&z7e6dLBQq;IXRh3N^5)B*T2@|BSyf%LR_!`<>(#ISw-|VU(ZeLj zEXZKbaJ7HiZv9QWZ*Sb5pIi3t)A?`w$@z1R#+4Vp+j~0R&RcWR`ZZIRBtD&aGczMI zpkw9AM8V5J!Hb-^R6JJjIkk$&Sh1O$c@udy;)`rO|9^(e{|pu1ca_H0R{yB~?f?7u z{^0f5FMa)Ye9zT8d%EKbcByaI!m@wfWp8c5o*#U>_jq^@|F=!g z3})0mpSEoIob{6|jD!`;ifmtdtgZQVzbkY3hwFdiAHF>OhW!iB4!OIRFX_6k+jpSe z|9gMkrK)d>uj61}x(#v3_LY}%kzMur{^9=&x9acN{+e4IANNoG-{pTF-(Pus>zCAS zulXxiRx_8nUi#VlbR-r=oZ3uI+uiMJ5FsI-f0H zXLx1Gr;Y{JAA0MS^p;%x^m1kiCx27K@t6>XdMn{e%ztM8n*Z(ee+JR-IVJbYUZry2oa}G#BHN(Np75)AL;(xaG;Qcj|X;$}D?0 z*b%7 diff --git a/release/server/docroot/images/bt_first_ipad.jpg b/release/server/docroot/images/bt_first_ipad.jpg deleted file mode 100644 index a6bfbcce76564679f4082c9b9af35a81aacc6798..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1651 zcma)(cU03?6vy8$31Lc&EJ=%zr4XbRWXci|&^W>n5io`gfn4vIG(fvO^#wjXl=>>-U~_-aX&%x#xb~d4fK{FxZH*IbZ`I7y#bF z0)oE*Y9HAvFcLrj0lu0*FaxA5z0Y|10PlLC0|^E}B7lBeu>S@Bu5aTo2ok2k^F8>{ zMoVn7Kf!66iYp&&R45;Q{hg@8yH91>pNBr1j!L5Ra8U=WZL+DN!?^M4r-MsQJ> z7$goPBsT&W1V=z{_*WJfQk)FI;0Tn+CZw{cj0zCbk+sxSl@qt$EAOGUOTpn>+-A=- zb*r56*=>5k5{fT6^tX>V8pO|0@9#SrVr^q+>!smz%o$zL&^bEqoe-Ly=#xu-*)^tV zkJ0C(KQ)zAM_Kv;N0WK>de%0)_Q#`Vms8#lA_@(T)SMa7j>j~UfZY8soG zTVA!k?q>G%_Vo{pf0~$_VzC#OmN_fjRpG-SI1GV+iy#mPBvK?uh>SugZxYc#0u>oc zdr@5v*>hrh<5bh+9CAG6cZrv)z38wCo>dr$*HfoDZuZ(YcfVqrzT!~>Ywzt6AqnX= zp5p)Qa%|ms63Hn?+Ar`&nGWsxG3ByD=N(9W>sP*|4RQn>vxpEJn(Ioy|%vDQbvbyNE&*R1JsUtne3 zC6ZBjr%lC6MoIpV9?R09F=jH=1r@DgtUiCjTJ6dvbcI75wiiR%)l)Dyvz3v`cIuKH zsC1@C78Kk`vCCO_m$hH)sY2)r`sY=?c2oM{^o+l%uZ$6^n%r*b+py|K7a~p^iJ?(+ zwjH@DQ~mi=V=-LM@p@nq!LT!%hYOFxaorZQ4i!_K^EN02-k6+4< zwJRtvtPfY{ZjfukY%t$x%{{-9P9X?D(hi9eW;+`s&}e@RT2T>yU#ERXrfH+@$6!WoU)ZN z`nun}pOT}b1t1mkna`QNO*GGp@G4ELB}cQTiHRTICXC}ri$kP8wJ5~`V7W5=rDC!y zGA!16I-*9hXrM&&#+psG5u4?$tG^){$K1>=sbJe=E8>Dm$EpXZ#zqq-SJ3u@bu0gwer?=G)BdQ-ovFXe+*_+-GN{2 zrY$)3C-5K4DFwFj>;!SA(Rh}k(<=wi(e-N1 z3oK2(%euu7p6B?1&NPYQaQzkqAktzEfBxOcX_m8;$-%WNR2r?7^rGJ?%tQI*$Vh|d zk>;SwXV>C5+YYKf!I+{uTm0b&E&UxmFYIo)D V$H!;nJPdU0$&k(0x>G0U{|DO$&fEY1 diff --git a/release/server/docroot/images/bt_first_iphone.jpg b/release/server/docroot/images/bt_first_iphone.jpg deleted file mode 100644 index a6bfbcce76564679f4082c9b9af35a81aacc6798..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1651 zcma)(cU03?6vy8$31Lc&EJ=%zr4XbRWXci|&^W>n5io`gfn4vIG(fvO^#wjXl=>>-U~_-aX&%x#xb~d4fK{FxZH*IbZ`I7y#bF z0)oE*Y9HAvFcLrj0lu0*FaxA5z0Y|10PlLC0|^E}B7lBeu>S@Bu5aTo2ok2k^F8>{ zMoVn7Kf!66iYp&&R45;Q{hg@8yH91>pNBr1j!L5Ra8U=WZL+DN!?^M4r-MsQJ> z7$goPBsT&W1V=z{_*WJfQk)FI;0Tn+CZw{cj0zCbk+sxSl@qt$EAOGUOTpn>+-A=- zb*r56*=>5k5{fT6^tX>V8pO|0@9#SrVr^q+>!smz%o$zL&^bEqoe-Ly=#xu-*)^tV zkJ0C(KQ)zAM_Kv;N0WK>de%0)_Q#`Vms8#lA_@(T)SMa7j>j~UfZY8soG zTVA!k?q>G%_Vo{pf0~$_VzC#OmN_fjRpG-SI1GV+iy#mPBvK?uh>SugZxYc#0u>oc zdr@5v*>hrh<5bh+9CAG6cZrv)z38wCo>dr$*HfoDZuZ(YcfVqrzT!~>Ywzt6AqnX= zp5p)Qa%|ms63Hn?+Ar`&nGWsxG3ByD=N(9W>sP*|4RQn>vxpEJn(Ioy|%vDQbvbyNE&*R1JsUtne3 zC6ZBjr%lC6MoIpV9?R09F=jH=1r@DgtUiCjTJ6dvbcI75wiiR%)l)Dyvz3v`cIuKH zsC1@C78Kk`vCCO_m$hH)sY2)r`sY=?c2oM{^o+l%uZ$6^n%r*b+py|K7a~p^iJ?(+ zwjH@DQ~mi=V=-LM@p@nq!LT!%hYOFxaorZQ4i!_K^EN02-k6+4< zwJRtvtPfY{ZjfukY%t$x%{{-9P9X?D(hi9eW;+`s&}e@RT2T>yU#ERXrfH+@$6!WoU)ZN z`nun}pOT}b1t1mkna`QNO*GGp@G4ELB}cQTiHRTICXC}ri$kP8wJ5~`V7W5=rDC!y zGA!16I-*9hXrM&&#+psG5u4?$tG^){$K1>=sbJe=E8>Dm$EpXZ#zqq-SJ3u@bu0gwer?=G)BdQ-ovFXe+*_+-GN{2 zrY$)3C-5K4DFwFj>;!SA(Rh}k(<=wi(e-N1 z3oK2(%euu7p6B?1&NPYQaQzkqAktzEfBxOcX_m8;$-%WNR2r?7^rGJ?%tQI*$Vh|d zk>;SwXV>C5+YYKf!I+{uTm0b&E&UxmFYIo)D V$H!;nJPdU0$&k(0x>G0U{|DO$&fEY1 diff --git a/release/server/docroot/images/bt_import_ipad.jpg b/release/server/docroot/images/bt_import_ipad.jpg deleted file mode 100644 index c7961f01028ea4ad1da0ef6025475c87ca4ed49f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 991 zcma)3dn}b<7=PaHc8=p5zRz)Fn2;$e>o7A)j!Rjwgly5V5htw)DQVW^5+f;!$!cbb z*}4uJUDjOY(z;NiC8wknTO*ufr@6$}d(LTxKYO0<`S#oIeV*Tb@B8qh`~JBqcxujSR7Y#!o>~ED(sKhz0l8yFOoSGcqj(e9`2Zf3uK<*7cwC4OAeyLK@ap$0Pq7}H@hnfa?N7`lW->oN z5=|Jt-nm`(V>>%OG&&1|*&@TwWp2~f`o3m^0-;y<{ndc6Ynu4ral&{&FbYCxAEj-Gtn zlvLyRvvKL|*wH+LA|jE(`Fzg3H|<|v>k3!Y;a=)giS!+>0{7Wje zjv+7I!&4=}-5>jWUyUd1zM$ZNhoKTpjjcSf`x0Z>Gj&&|FdEitE_WCm>#^>|%Fc_` zP3~b)&2tHuUVm*?nbvw+bz}Hf`+#1Khb7k=`?J+)Mj^d9HfhrDl&od4eKpVfo_5s7 zQJK+-rUO=OF0X7kb5&LAEj48o4Hld_-E1B|H0X^n-7?};(y!Iudq

gk}8XtlW=LD*gSH%8=mT;1HEpkXS7C zWqbo!HZUlF3kdQi{ul6rz)3(0$t2={;1J0neh8ZJIwX(?^WPAH7L$}nf;_SjT=xWt zC>9|g2#mZ54iQ>K3azI6qdA;IBq{Rd5JzZPbrhtMb&9Z#V#Q{a@JWgi5BaAb=BABe z)%v28)U2!gBrtdq!I2z3ud8!u2q4-#IG*X8Sg8WkdUDI;9ce7i`6hPsl*X0cox&uK zL_Eeve>ry$APG0XdjJv~3s%dQTloRXaKLkv!W2d9~{2sSlND_2BQS5=_CPWBF>+7cn^2!#~GuhU! zs|C+au}uw;8hKs*Py1L`V`pD)Md!k$W9RNQHJsIbw+Tc^6tAwFPG7bxx@ANMD~SPnbIn=x|b;Vri{efnImK$ahtxU3=n6Z*Lh{;9-6uH8!ktmqgr?r+3S; zjP0KVdg~pXF*Vy=DuJWteSX+cZFR=u$mVs~G=t_uVYlObVfUEMQP{1yZ_r>Ttc`FP zn=z8BPp>e$jM+X<9}Ue|mVd4GI4T6~QVm8Dp=Q$+&bh`|!c)8KyN#9oD!&FvggNwM znepv5HZ!X)T)k%P*P;jEOVlBIt=wIuj~Ot0NT~f{^^#?sv%|LP=N@tr{43$Pu?1~? hvu(ZZ(XnUZH5*GHWn5ZRu(o^RyIyHAm-*^W8>iF;o{=v z;^GnD0RsUZK7IjyJ|1CV5fNcw8EI*08F@HhWM^mR<>8eO5Ri}(6%>_%OAyQWe~3Yl zgF%eJnVC_Lfk}{&S&;Gn5r)}7?=Ud~U5@}v%#18-j39sz1F{&Im<1S^m{1i9Dl$1R z3NZ@{0)5ZSf@BV(Ad`@Rq9KFh#DgD=nuJh|VqkC(W?*JuWMN`th08Ds1_Ct{Iyfc@ zd}y4w@ZtYk3_Q$0#|bhE0xf@Hcn?SxP6ayTMuYtqKoCNy) zuC##Y?yOx~1RPle91nGa)i8n7oCY(2cEXrUOlx_>c&s^ z8u;%%o?mxAnJMU(US^GMWPz aQ$YO}_CYwzAPy*CgkOMzr|H7-|2F|Jp{xu5 diff --git a/release/server/docroot/images/bt_imported_iphone.jpg b/release/server/docroot/images/bt_imported_iphone.jpg deleted file mode 100644 index 50d99a9b4aa41b1693f207e05845f1347ff72900..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 727 zcmex=iF;o{=v z;^GnD0RsUZK7IjyJ|1CV5fNcw8EI*08F@HhWM^mR<>8eO5Ri}(6%>_%OAyQWe~3Yl zgF%A9mzhzJfk}{&S&;Gn5r&Bjj6eW%JpwSXuz|!-1sR!`1;C=n;(|;<4$Q(p(-@gq z5&D5)CTNf-#Gq*SQAr5Z6b1$dVFqSKU{J9lBp3w?4IC651q=fd8z=t1#lQnpz$C~l z2n@z2hWCKxMrHvClQj+u40`*4@*F@XFtRe;+q(CNi;GL?IwcS=|9s6<5D0$0o)1>S z1XA+79?WJ&Vly$Z*)x?xgb_?eMxdzPbG6))CI$0Z&Y8`&H@E$$zZ7-BzD3Hf=GbEf$=DnJ&YB+n&k(+*|FP$m{hd(TL8@OvbTY%)2#*Pz zRGAbp$x~(ae+CeQIFk{mP$11}Tkh3uH=EgbBn%P`bnEq%e`Rs{`|&@++nA>&g3D$? lC8nI2@H+VzJJ&w_L!Strn<$l(MdSnq&%!k7Qw1OQgMr04(u diff --git a/release/server/docroot/images/bt_index_ipad.jpg b/release/server/docroot/images/bt_index_ipad.jpg deleted file mode 100644 index 03c74de304e9cf1299b4d1f010a8e46f5572cdbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1149 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 diff --git a/release/server/docroot/images/bt_last_iphone.jpg b/release/server/docroot/images/bt_last_iphone.jpg deleted file mode 100644 index f78c7ee002c82d71144766ea41d901e90acf9c3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1665 zcma))c{J2(7{}k={Ki;vF}4g%jwp$4DP!x#Ax5-Jma!EHO(7g*87>KtIAu*pjon1j zw3w)<$bN4NgF%YIm=R4)mcjh)bWgYYZ{PR4=XuZfd*1VYp7TD)Ao3n4I1ufL073!a zFJ1td0a%*|zo2LU0W|n-0%R7*S^0!FK|x@R*v7!(m;cLvID#cn zQjj!|S)%|@5R8Uk_&W;48YKPf!t{PD7TExjM~ zOetR@wwRgkwRdp$@H}xcATTnD8Xc3Iav}9%TJDv+tN8_mP~5f&a>BhPJdoImT0sw+gZ)ehF^Mj69MO9Z0oNpb0#T= z82+7?d_2O{3uI@!}pTg)9i17p$(s~fw9xI$zI$cn!Qg@v)e z5@FW{X4%qs!^KjV2+SE;1zw^S+1mB!r}&Q=8fC=tg$bGwA6#Rc(-ZZp*o1 zNNYoRAXY*_R*o@A$s2bqq-@n!&!%R_9G#!qA9>ZTWkBW01!lFO>E&Ub*R^4M)Qxm9 zQ9gWTmB(ZpPD_c6v>|3T*(u3+o1eO*cfT*fx<@utHv5f!YGt27UyXuY35Le^+I@yO z;wja`v&|z!SlGJ5NnCyFKQboz5FpTQYGwx_fKoGOydX3}z`>(4O{-P!SO|z|ZazAq zDacr`e2#z=1jvi#5C8&8bsjM!!ex>H99%SXr!EiNHNa@$OjTc?Ina}@nK z{9TvpiyVq~+M2mOB=^SY)wNbpmFup{1*|ms7?mmkzxR2vZrz8_@cgT+CBd3_WzB(A zo=E@GlM@vdI9~i}4&Rb4q9DK^G!0K0cBc`xy1fX^VB>2WPiiNa7`KkJR7IAD@46c7 z+LbX@ozz)LT`%~SJ5f^Lp_XwB(~#FMviCLPtCw}86|Jw}%nt{@^kvpJs0pc@*gg(U zlUt&;JE-8W55}#1WP%xbi@TJ(!Y*rHH_z&H8u)NGT;-j7ao2ctwO$FG ze)H+X@pf`6%YCSpVC1Yy>~Gwd$z78Wc6O8Jx!@H9^dg{UH@s~|=gy$_-`2M}AMz#9 zRMTa7x*6V)#J5_FA8j6Q`YYl_;td>UmuPc*-SWHoh*+V=*yZ~6C5@HwFiTYtI@W%1 zir;OrCx1z+U@?h5M2iaPA|^I#yj~p1*net3JwfqJ|GZbQ!Lw<-bw<<O32bIz9UgedBH`Yh1R_ zMA7)SQ}Y8STIku6!pg^_=`e1kWtt{WwD9R{9nHpDjcY8t5a2wA@09oW$fWqy^=@-F zKD#gOnBlH7RF=>F3dW~~?bqTh8}H=e!p|oc1e{jce((2+EgIH$8U>faSyKn`TQjZK zE!yPs($4*6;iIU(B*+zyfrvJzE7F@~bFV-7bLE~e{xNN_s`*4+q@X4RU$NTO>Ehzg z^qDDnv^{g|^XD-`T|eVC)3~S0IUBP_GH5u#+lw?cI{l>Y3xbB@gCloYx6);|dartW g1}qKKywQ}+CZ#)CSvedUAk+pq$T(ejc@$y)1L))6;s5{u diff --git a/release/server/docroot/images/bt_libraries_ipad.jpg b/release/server/docroot/images/bt_libraries_ipad.jpg deleted file mode 100644 index f3b10cd9904a38f5f8f005bde805e3a18a6abe16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 763 zcma)1Ur19?82`R=?!8-gcY4n52Idwqq(xvfOA4&qW-+Rl_O6iWEs_YakdR&sggs>~ z=%F%3^&l7|_Fx4?AxV%ymO`asJ=9YpA_?ln+jsBA-FoYH&i9=kzw`aIKiHo^9LXNe z0x|%L4%j7-2M2pk4*`M#0Q*S#4vCD_-*W=2=cFKqh{82JNVEjN5@ZFkKlU<=fTk#l zs%WaJZP3U9eogZS3|$ZCx*-e~!lv16hQp>Ai$__w_Q$`n6}C74 diff --git a/release/server/docroot/images/bt_libraries_iphone.jpg b/release/server/docroot/images/bt_libraries_iphone.jpg deleted file mode 100644 index f3b10cd9904a38f5f8f005bde805e3a18a6abe16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 763 zcma)1Ur19?82`R=?!8-gcY4n52Idwqq(xvfOA4&qW-+Rl_O6iWEs_YakdR&sggs>~ z=%F%3^&l7|_Fx4?AxV%ymO`asJ=9YpA_?ln+jsBA-FoYH&i9=kzw`aIKiHo^9LXNe z0x|%L4%j7-2M2pk4*`M#0Q*S#4vCD_-*W=2=cFKqh{82JNVEjN5@ZFkKlU<=fTk#l zs%WaJZP3U9eogZS3|$ZCx*-e~!lv16hQp>Ai$__w_Q$`n6}C74 diff --git a/release/server/docroot/images/bt_library_iphone.jpg b/release/server/docroot/images/bt_library_iphone.jpg deleted file mode 100644 index 8e2c312d1e1cd253aac134ba0c8353ef580832f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3317 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 diff --git a/release/server/docroot/images/bt_login_ipad.jpg b/release/server/docroot/images/bt_login_ipad.jpg deleted file mode 100644 index a2879b08bdf93e1ba078ae25621f15748d00ee9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 928 zcmex=5$jlQwN zYW44zwpEJL^%tJk`#a(2qNiUZ%ip+?OfCI7VQ={J`97P2gKw(ND2|ZZE$BMM<&uW1 z^T$si9jo&;PQB_DI_c%L&))ezPCvU}xy0gg?plr7E9Ow#@IXOBR^?Rd(rf)>ih%|$70*`6I=>A z=WTw%Di8ydVd~IJU-OgEMcnvWO~WGYnXl~}0$I;|ov)yQtU)pJYw6{8N-vdH%sKz^ zyWn}3N1ZZzj_@7ZZqE_gd(rEdUDMi*HL{4Yg-R|p8iH{F?Zv0{Tse+;>_pbH_YnM zW1q7>(NrRa-?Hvdmcb6WqQ5Oy5({je{^ne9=t1S_Z^D7C2e0U#Ie&Id^e^kKVl6p& zqXeUC^120oN~W~5%&F-)Gq+~WnXb&_j2DkHgW7h>E(z8Bem$gJx{$~0Hs8|gGD&Nn f{r+=ezUa!WAM0fAdA{>BU2$dI)a#$-|Gx5$jlQwN zYW44zwpEJL^%tJk`#a(2qNiUZ%ip+?OfCI7VQ={J`97P2gKw(ND2|ZZE$BMM<&uW1 z^T$si9jo&;PQB_DI_c%L&))ezPCvU}xy0gg?plr7E9Ow#@IXOBR^?Rd(rf)>ih%|$70*`6I=>A z=WTw%Di8ydVd~IJU-OgEMcnvWO~WGYnXl~}0$I;|ov)yQtU)pJYw6{8N-vdH%sKz^ zyWn}3N1ZZzj_@7ZZqE_gd(rEdUDMi*HL{4Yg-R|p8iH{F?Zv0{Tse+;>_pbH_YnM zW1q7>(NrRa-?Hvdmcb6WqQ5Oy5({je{^ne9=t1S_Z^D7C2e0U#Ie&Id^e^kKVl6p& zqXeUC^120oN~W~5%&F-)Gq+~WnXb&_j2DkHgW7h>E(z8Bem$gJx{$~0Hs8|gGD&Nn f{r+=ezUa!WAM0fAdA{>BU2$dI)a#$-|GxvvBIEn>4GS>W<`qKZ5k1wRm`|eba9_@r-^nKGv(HW z+#}>RLKj_-TeC9A<&(d*0`Kzvnsc=Q*$Fjc5?ytSzl90fYd6 zDlQ*Glq!0Y8j##2Yo@O*Cq+3Rf0|&h+2(wtf@_k7 z`JJ*kO~VTq#it#+wcZ~yikfF-S=jm=v@|~Cw$1Liy;AwJ*Fy``Xn%GLExY1*=Lg~* z_r(D1y(WjPtQ}4`dU$$y2L=U)Fk&w=uf)Y)yPlkqnwFlEo0ng3x3IE`Q~jW(_C-Tu z)63=-URQU|o8G=*{>bRq_=I5TH1F15?(+=|sbDQ5s8EUYODY#k8XO(O2R|*6YjM-;S~~>cDJUvcYHJW(~4md`u*A#^XPD6eu!PFjjCxA;0+ z&X@KL6~9u-_8&YS@^HJ>ex5}tTkBBVKtSb?9h6RNsd`qDKK@&nhG~87r7=G;zcVry zmkO&O@4G&BjM%EeiAmsQIteq^pUk?fqkw>&o|nH>zoQz3QE9Jb z)$CW`_vT)vZP;?8K049NV&X5-4Vik3N@VDxST@b~W*EJo&P~|uRytRM?IQFqdT!Te zoW9my^YBc?AGhtL6Bxqo=$&QdWR)o%o}w7i&RP8sq}WYVn-`EsA5AcRs79lrq`^d= zoV!QK=kjrvUJ6J_T&2wQZKTrGo`3B7);zLgumWWfkR|o3&Gwr-4%MA&a@rlPD>Gui zdjgS?(PwYj< zeZ%-OC%KfG<-E~?E&|h8;hv`UX1371uit@7NPN#3QBuVE^E%k{N|qtpO1H#o;~}K$ zp1JJIs)5CKM|zA2mBp)I0fa#7_XL=)yVO1o)tqahRP#)&GlFLhGq@Uc2FhV+jHeX~ zPLon`{Wltm5H!66pXQkUm9?&z%+?%&ZtE|JcVp86h)4V6VtaDvd8H=j#?M6IMxPOy zoNa;EB1m%K=H#z<2t*)+G*1rX+D=ct<7afP4U0g-zSVsft8<-qPVbm8vd+rZs6*2> z^u{n{m`tfSQ$^0M=QHSmG~MLkOG0km)UU#ZgXZS)#Dcy*3;D^#REN{v%M%NoT diff --git a/release/server/docroot/images/bt_next_iphone.jpg b/release/server/docroot/images/bt_next_iphone.jpg deleted file mode 100644 index 4686bc69be522634d3b9d0c9bbeef6a395e007da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1560 zcma)(dovvBIEn>4GS>W<`qKZ5k1wRm`|eba9_@r-^nKGv(HW z+#}>RLKj_-TeC9A<&(d*0`Kzvnsc=Q*$Fjc5?ytSzl90fYd6 zDlQ*Glq!0Y8j##2Yo@O*Cq+3Rf0|&h+2(wtf@_k7 z`JJ*kO~VTq#it#+wcZ~yikfF-S=jm=v@|~Cw$1Liy;AwJ*Fy``Xn%GLExY1*=Lg~* z_r(D1y(WjPtQ}4`dU$$y2L=U)Fk&w=uf)Y)yPlkqnwFlEo0ng3x3IE`Q~jW(_C-Tu z)63=-URQU|o8G=*{>bRq_=I5TH1F15?(+=|sbDQ5s8EUYODY#k8XO(O2R|*6YjM-;S~~>cDJUvcYHJW(~4md`u*A#^XPD6eu!PFjjCxA;0+ z&X@KL6~9u-_8&YS@^HJ>ex5}tTkBBVKtSb?9h6RNsd`qDKK@&nhG~87r7=G;zcVry zmkO&O@4G&BjM%EeiAmsQIteq^pUk?fqkw>&o|nH>zoQz3QE9Jb z)$CW`_vT)vZP;?8K049NV&X5-4Vik3N@VDxST@b~W*EJo&P~|uRytRM?IQFqdT!Te zoW9my^YBc?AGhtL6Bxqo=$&QdWR)o%o}w7i&RP8sq}WYVn-`EsA5AcRs79lrq`^d= zoV!QK=kjrvUJ6J_T&2wQZKTrGo`3B7);zLgumWWfkR|o3&Gwr-4%MA&a@rlPD>Gui zdjgS?(PwYj< zeZ%-OC%KfG<-E~?E&|h8;hv`UX1371uit@7NPN#3QBuVE^E%k{N|qtpO1H#o;~}K$ zp1JJIs)5CKM|zA2mBp)I0fa#7_XL=)yVO1o)tqahRP#)&GlFLhGq@Uc2FhV+jHeX~ zPLon`{Wltm5H!66pXQkUm9?&z%+?%&ZtE|JcVp86h)4V6VtaDvd8H=j#?M6IMxPOy zoNa;EB1m%K=H#z<2t*)+G*1rX+D=ct<7afP4U0g-zSVsft8<-qPVbm8vd+rZs6*2> z^u{n{m`tfSQ$^0M=QHSmG~MLkOG0km)UU#ZgXZS)#Dcy*3;D^#REN{v%M%NoT diff --git a/release/server/docroot/images/bt_previous_ipad.jpg b/release/server/docroot/images/bt_previous_ipad.jpg deleted file mode 100644 index 1fa059d663736f756331d1f6ad02151839e68215..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1586 zcma)(cTkj96vf}SjUplo(u0KFQ9wWly3z%tcO%7JibxB+s0&gBM0$@R2+~6nR*C_o zBMebkX^MgrS&EdUDtuWp#^g`Wn>X*yIdkXz?p$~beh*mmb@X%qgaE*ab^yE#uv!5G z_YeR96!>Zacoi_KJ9*=sfm1upf#69H1)v`n;y)q3>svblf@mr2eh+@MfZG9<9`FG^ zB!mSBEQG{Da3@qq1H>SZ5bgOUI(iHm#eif)K;Q_?#vo}w|C<3?grq~zLkxiN2n#?! zNEC!beq}*m7y=*!5`{&xVg%^e1OdI=admkib_P=ojw`|noMt|^xbP_=ngz9MqNjZs zxu3mM6q`0zidauA)Uxo?)=}0ah+A4&^VB_mHM8Lq>7N$m{II@b_=Ch5m(2i471axR z`Zl(gT(7!a3k(Vl35|}4y&V^yo{^cAos(Ns{HUa~to(69Bk4&~b7xm~Pj6rU2>JEs z*!aZk-2B4FMGAFmduMlVpEfvzM4(VeGzx{nV9=g4WGqU66)lGWf^6!hbn;h@`_OCL z5=vn=E5LIoFw_b^d#UNW#yK5vS|rt+i=ee$SSPB;ZK0&?B*y3$nWp3amDkcaz)CqP z`XAs;37+(#$DJdy)QsYWF7n)#xURL!nZTILM~&UD=eJ#hVzWv}J);Xd7i_Ku-_9<5 z(mVEXS4Gd(EhH|dtf_B&aZgfJ|I)S4_}ud5{t3!HJOP+!>p@_VSbzgUEj_hC#*VAM zAMQ+jP7rHW_WIaw=@Nu_KR|x!Wh|9emHfig+R{`)dSJk#T>5snWcUL}K(Oc<7R|!M zTs!ZQIb)UUA|u6<8k`z>wYyPQA>~0QUP4N~$)n0sR+%%Q`_-UbN}rQ^$=%HOh=}+M zk+RCF%CZbXyg2#3u46gF&(~`m(MEuha6|!ZV!(DD^qq?=5Nio7sUe;X)FG5zH|FJ_ zBd)x$AL?6JOCfjJ>;_Hco%HsuB+51hdxL%xe2|QqWy(WUZHqd=mT2a|4mH1SkvpkT zxkRm`4gbQ`=kDBt4edq!$5R%|G@%Qr_-0#6`p$yV|?{(jRz-Y zmsD>U2I72H?5ihLnvF#iy>LR>GFHkmZ5tMT?B$hlQ)+kxv*E@zwK@#x?6Wz7C!f~& zzxG(e1`kgZ{b@5M&=42In|RW9rb3@3e4k(Goa>A5&9f#8n>E#IFi;3f!#Yr5P*A@v`!IO=+0}Ze z_&yh9zAb}))8j3Uj^wFq8yIc$Yv7H`Z*#mw-H&nR31m@P8#NpygBtrEi4^7WNhi*} zz!PdJOk7J4rScblsofWU@e61-iiqd|poB1cc zzGJqtBo{*U@JSmbqQT88a=-WmlN~P>*RC|3$_v9a*Q9g%M@8qj`Lds?mo1j$)u?Hv zCi;^XjQC`dHGbOF%3g{OKYGrQRceo#PFw9^{wJ|RiPdq+y{Ff|)bEG2=I@rYxmE{K zD`NPH54!s-ESyM=%LOf`lBd_!rsc#4O5JB}wtr3&Nqv))&rN+Bm(NvNdKKTL$ZOhg qxsF_!z$9aTV1LPNZ?xhSKU1o4f~mT?zR9R!mAgKpS;mk9JpMQ58kZgb diff --git a/release/server/docroot/images/bt_previous_iphone.jpg b/release/server/docroot/images/bt_previous_iphone.jpg deleted file mode 100644 index 1fa059d663736f756331d1f6ad02151839e68215..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1586 zcma)(cTkj96vf}SjUplo(u0KFQ9wWly3z%tcO%7JibxB+s0&gBM0$@R2+~6nR*C_o zBMebkX^MgrS&EdUDtuWp#^g`Wn>X*yIdkXz?p$~beh*mmb@X%qgaE*ab^yE#uv!5G z_YeR96!>Zacoi_KJ9*=sfm1upf#69H1)v`n;y)q3>svblf@mr2eh+@MfZG9<9`FG^ zB!mSBEQG{Da3@qq1H>SZ5bgOUI(iHm#eif)K;Q_?#vo}w|C<3?grq~zLkxiN2n#?! zNEC!beq}*m7y=*!5`{&xVg%^e1OdI=admkib_P=ojw`|noMt|^xbP_=ngz9MqNjZs zxu3mM6q`0zidauA)Uxo?)=}0ah+A4&^VB_mHM8Lq>7N$m{II@b_=Ch5m(2i471axR z`Zl(gT(7!a3k(Vl35|}4y&V^yo{^cAos(Ns{HUa~to(69Bk4&~b7xm~Pj6rU2>JEs z*!aZk-2B4FMGAFmduMlVpEfvzM4(VeGzx{nV9=g4WGqU66)lGWf^6!hbn;h@`_OCL z5=vn=E5LIoFw_b^d#UNW#yK5vS|rt+i=ee$SSPB;ZK0&?B*y3$nWp3amDkcaz)CqP z`XAs;37+(#$DJdy)QsYWF7n)#xURL!nZTILM~&UD=eJ#hVzWv}J);Xd7i_Ku-_9<5 z(mVEXS4Gd(EhH|dtf_B&aZgfJ|I)S4_}ud5{t3!HJOP+!>p@_VSbzgUEj_hC#*VAM zAMQ+jP7rHW_WIaw=@Nu_KR|x!Wh|9emHfig+R{`)dSJk#T>5snWcUL}K(Oc<7R|!M zTs!ZQIb)UUA|u6<8k`z>wYyPQA>~0QUP4N~$)n0sR+%%Q`_-UbN}rQ^$=%HOh=}+M zk+RCF%CZbXyg2#3u46gF&(~`m(MEuha6|!ZV!(DD^qq?=5Nio7sUe;X)FG5zH|FJ_ zBd)x$AL?6JOCfjJ>;_Hco%HsuB+51hdxL%xe2|QqWy(WUZHqd=mT2a|4mH1SkvpkT zxkRm`4gbQ`=kDBt4edq!$5R%|G@%Qr_-0#6`p$yV|?{(jRz-Y zmsD>U2I72H?5ihLnvF#iy>LR>GFHkmZ5tMT?B$hlQ)+kxv*E@zwK@#x?6Wz7C!f~& zzxG(e1`kgZ{b@5M&=42In|RW9rb3@3e4k(Goa>A5&9f#8n>E#IFi;3f!#Yr5P*A@v`!IO=+0}Ze z_&yh9zAb}))8j3Uj^wFq8yIc$Yv7H`Z*#mw-H&nR31m@P8#NpygBtrEi4^7WNhi*} zz!PdJOk7J4rScblsofWU@e61-iiqd|poB1cc zzGJqtBo{*U@JSmbqQT88a=-WmlN~P>*RC|3$_v9a*Q9g%M@8qj`Lds?mo1j$)u?Hv zCi;^XjQC`dHGbOF%3g{OKYGrQRceo#PFw9^{wJ|RiPdq+y{Ff|)bEG2=I@rYxmE{K zD`NPH54!s-ESyM=%LOf`lBd_!rsc#4O5JB}wtr3&Nqv))&rN+Bm(NvNdKKTL$ZOhg qxsF_!z$9aTV1LPNZ?xhSKU1o4f~mT?zR9R!mAgKpS;mk9JpMQ58kZgb diff --git a/release/server/docroot/images/bt_up_iphone.jpg b/release/server/docroot/images/bt_up_iphone.jpg deleted file mode 100644 index 94623e78c5b0c44d21ab6be834dafb75d35c2829..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 720 zcmex=iF;o{=v z;^GnD0RsUZK7IjyJ|1CV5fNcw8EI*08F@HhWM^mR<>8eO5Ri}(6%>_%OAyQWe~3Yl zgF%+TikVT6fk}{&S&;Gn5r)}7?=Ud~U5^0FER0O7j39sz1F{&ISpxtn+Er zs#U*hy?`VLtoiZzs*OKb0Ta;COgHSoY@nTRHWL$@JrgrT7{O#@1d3_}&g%844>ddW z@wQUVOn1o_$@Lre2K{HyN`_d;%xJHeTAppQeFrdoFszQ1)M~%wyZ*A8&rG9~XYb_B zL+k~q`oa&f0K~pt4sry-R{{wP?6-5b0ZoYi&+rp&vOv~z`!$uhbI(05-g)O;eSE>+ z8~+*pGprJi+xYF&{HXgM+%L$(EfBaa_E;Tmg+Qeuhm*kmNdhe(8b~<4KKTD803Y6; A=>Px# diff --git a/release/server/docroot/images/combo.png b/release/server/docroot/images/combo.png new file mode 100644 index 0000000000000000000000000000000000000000..54edc9fafbde3c37c4dde5aeff80382e495eccbd GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1n!3HFw&5r&6Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JiljVU978H@B}MG1_*l=T!tngC#0#zf76v9B29|ujPR>k* QEkIQap00i_>zopr0NbA+CjbBd literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/combo@2x.png b/release/server/docroot/images/combo@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..39e5c700937a7e8ec1599760de64dc3bcc4e412c GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^AT}EZ8<70WD#W6a5s#(4CSmdKI;Vst0A>O+1ONa4 literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/download.png b/release/server/docroot/images/download.png new file mode 100644 index 0000000000000000000000000000000000000000..10b43d66be328c5f946556e772f54a078d35d982 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PI@$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gww^AIAr-fh5*(N+D=Ys`{OQ9}!N5A{#W#i9{Fh#KtYbJ; zp3+hz({QCurSiDvWHs3YmmuC?hG`6)j4Toi#?7LC94^ZQ01aaBboFyt=akR{0Kum( AbpQYW literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/download@2x.png b/release/server/docroot/images/download@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..98c6ae38f9d448b10db872feb999e0a3a341bcac GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^d_XL~!3HGNrubO_DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9MY*0Xjv*Ddk`fLue){z3U$cQ;r5c;j!4+;%87YlNuP*VN zEYW$9A^3cY%7*zIz6GW}0kioSHZt#x1XkcXcci*_{_;RZNpv4THu6{1-oD!M<1rbIJ literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/f.jpg b/release/server/docroot/images/f.jpg deleted file mode 100644 index ba93d1f45bb5ae2cf5c4718c38a7f074a7f61e97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2802 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 Q2Q8H`)Iz^j&prPC0LUMYmH+?% diff --git a/release/server/docroot/images/f@2x.png b/release/server/docroot/images/f@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e388d804f336a4d6c0f783ecbfc194d5e13f826c GIT binary patch literal 1262 zcmeAS@N?(olHy`uVBq!ia0vp^3xN0o2OE%Vcg(*9q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1FtAMUba4!+xb^1lMt_k=nFAjMHGOV0@p&Ek$9QLJwrfZB z>zgw*K3Z-4x*>L(Xl~=I>@6QNj!sy;;OmPV0q<>#7wn%cUv$#-p_7vF`?KesPxcAm zs@%Q*z1@MNBNKTZ-(>b`}!YApXR9F_ik>%qNY~9Bj(eVolmb`tEL_CVsH07 zOKa<39esPPs=aX+UzYS3J1<|p{OG@bbsM*StuCyw*_E?x|FeC}b=!ZJ?!KE;T)g;h<-Cg-~ z_rNQKY^Pk)($l-@_Q&7Z|KA%Jk8c`s1^2gn{_ybA&6oZwA8~)&n9RFz+LZkgDhH&F z_L)npNh|dTTBCaH$}x^;(FfP#o$s6}tIf_{f9{&b0YlN{#ZPN&V%Dt9RqxoUcEIBO zy9W;xewQAT(zl%L-{AZ0-`~EiTn2O1WT)L*)_gZwIN{X)Jjv%?%B#!z_YjF zWAwHA6OPfOgF8C)pz;*{4u=Dw|4-#)or#hz{N zh7C{MKe5gzyB--=S5o#c*nm(9!k)-jK%uPQKmrvZ)$8`|ug{V>uA3OHUpM!$6V^-* zOm9&C|M&F0dv%5qYi@B0zppWDo^ka5*;QVXP4C@%`>EvS3X{vmcgJ+ymv>AhWx7oR`=`SacFPvw`N&IYBkO0$Q1HP^GJ m*37>ni?vVy3L3=y6HH*(A!Ao{RJ*4Nq{`FP&t;ucLK6V+vM6`} literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/fnd_input_pass.jpg b/release/server/docroot/images/fnd_input_pass.jpg deleted file mode 100644 index a332678b3ea6c2130ff20ac17e75a6c6bf044494..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 546 zcmex=C5UDGKfoZ!!63mP&deytz$D1XEXer(2tzyr z12ZEd(3J?l%Er!xCIpleU|?coVPs}uhACuZVipu)VP#`b6m~QcVJ{RF6GSx!sPO+S z1|DWcpl!^84E799;}=*lFF0apuXy)qvE`3Og*5wXCw3jowec^J4`+? diff --git a/release/server/docroot/images/fnd_input_username.jpg b/release/server/docroot/images/fnd_input_username.jpg deleted file mode 100644 index c8a2fd9c748d8beaa1c6f5cca9505d30d42f578e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 604 zcmex=C5UDGKfoZ!!63mP!OSSgz$D1XEXer(2tyLc zVL(SB02>Dvng~!%fPs;jiItg&9j1<%k%>i+l|fNRn9a~pDNrOa$yp_oU0e{=ETHQD zw-|Vs8G#lu3o_Uwpw4aS3LC> zJ>c;(e6N*~s@8se*DpW590-@;o*0#17I86mO-=Z%#m71_)RjaICbKV4by^%Xi6up9 zm95~`kf=qe0k&uBMXeYjmPHrbtF5tl*o47aNO-1Ev;R~>b$-23(G0l|Oz#ec5w z-FI@&yPN6tK)hi8_3e7v6{QEZXIx^4XzR&%AUNYuo<+X&ob{pk%}2T~?co1^69B)? Bq^$q| diff --git a/release/server/docroot/images/fnd_inputs.jpg b/release/server/docroot/images/fnd_inputs.jpg deleted file mode 100644 index 4a53411d784f0fb842a82a5a0c8b5dd39f984315..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1443 zcmex=C5UDGKfoZ!!QjBiz|1Jfz$D1XEXer(2tx(P zVL&0EJ7Iv4gNd1i3n+>P1c07q;$&iCW8;R(FtIVRPGY{y5+Zt)T|8`>Acvx1VBtiO zg&Q{si*Y(8HXeLvlvLE@8Y+lk*8f`!JU~mC1epaH>=}N(|NQvb`I`R>2J;Q1yZ1`} z+__#|XHwmZxz}>9-8gvAWcBUd^|xP~4Uf8#W)d}Z+N_@y!Q=c_ie%%^w-tC$7=UeJe%I{jkQg(Bx{MUbSPnFK_ z*<@Tguxgf0L*Zg?rd1i67?1VpaIIW)f?djFgVwTc1(_iu&E%eQEAZ=`P+zfx+<3)* zIomIP`udr1d-UZE)pI`Odfa~3shalaZB6=Tud_Su%I-TG81*L2de+pybyM%Z`|KI} z=&SVB=TEcsC%t}kv3lpKRbRuyqb8hHK#O^zxgO4kFEVK0RL*>OiicI~;#<0FHTW{8 zc?SRKJ+{hzWx9-H3U*;ftEreINU!dsX~z?r`8(J!fOUhnR_bc2sLiZ!$gn zU}x3BUkopMmO0D&MDuDKzb!U7%kams&_^t%RAluoz7@MRg;`@l$!_;8(NO_nLNj@6 zecPtk$4L3^aDU7h!|-&PXKj3Y)IYiNhu;2Y;BSk5z;bFy;n!_Zh2OW_F8r0O&6H}S zHzTuba<&)aRF8$Pa<=UD+`hC?S#!ei%VMX!?7q#;vyWNB7O3#DtUqJhmIab7%}a0D zF1mH8AytTPdd9bIpgy?w2A?wKJ1i|V4hwL`4Fmt{h8+%>L47?foG>s@J>sp9!h`wLYBt*45Iz zO6xv`?b^Ynh}(iZekC~<^XKQ&{=9v5EjR6+<+8UcchB-ZA>BCXtkAIp!^tL2GUwWz lXL9U5ohM%1vh96ktE-E?#@_qyGkmYTnsxeYlAyr|6H_V+Po~-c6*+jiIEGZ*N=i7u7+1k!-H_oXGl|n7%TB=BNO85>WS=QF zHhyDJ4k@ztU|7Ybwv!=`b&?)iiYJe|Vl*o=10x&5_h*t{U7hXufo3syy85}Sb4q9e E0R1m4egFUf literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/imported@2x.png b/release/server/docroot/images/imported@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..41b9ad4e96532b047eac146c38c66e37dc9817ee GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e!3HF=pW8M9DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9MHQYdjv*Ddk`fe{_k7?GV|c_SFnglRS%)lp0cnOpWo6b` z`V1SDl~re{maX}FfMse3U6Ni2|d@-Vg$+o0KU z>haYcq236dM1>`i%CZY24>@=kUu$78UBYl`ZiByZD1$=-BSXwAkG2i#7iR+9z~JfX K=d#Wzp$Pyl_d)dl literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/indicator.png b/release/server/docroot/images/indicator.png new file mode 100644 index 0000000000000000000000000000000000000000..138c77a84bb3339a5c1092bd83b6104481688dfc GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1k!3HFMt$j8RNJ*BsMwA5SrbP0l+XkK8S^5> literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/indicator@2x.png b/release/server/docroot/images/indicator@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9f30e70415f7715ee848411d4ad9b6b5a82f3ee5 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^Ahr+(8<0%e?(YqxBuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%)p@!&hE&{2I&=E;?(+u@EMPdot>!yx%83SM1I9uHfqI5V zEDM(X+#zDr#Ib;hSz)Vu2W!F1GaShRL1#M799%v_@Ge(Om*hrEnb}EhG5cJ?&$M_e zUYNq|a7s|D#6mQQyI|28wfn{{to(tDejy@4Q#CpQS-9tYZ4qf?aA;s;2#WA!+@DuD Q9q1AUPgg&ebxsLQ0BK`La{vGU literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/library.png b/release/server/docroot/images/library.png new file mode 100644 index 0000000000000000000000000000000000000000..1a185057a328c0aa1c1dc75cd86edc7c57fd4449 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^d_XM3!3HF=W8NDADajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_c!wVp1HAr-ftOmgIFFyLU(e7N_E?uSI)z{yz+LAF-Q#Ujcs zZ#l?moIhc~s3=UPDKl(yc`FJ7UWr@xi3r@U9dp;?^CGY#a--2Ix*DcPSV;QVE x>$v=)BoWiD-3w0*^-~1kIcOQ#E#f}N(&!?EHl96Qx+=389HzTS%zdO zichKTL#W}7xO~clq>vGWX>BPj;t;Q;EY!9LPnrN(`krP!#09A4Lqho$mQU&K!{Kis z(Q$}YR+1g3gV%?o)*d4_(Tt|j(NsEWA@x!zxp6w0O6liAQcISh<3nn-zG3ZCbn^zz ihcxI#4URYj2rvMR$xk-q0jcBw0000{( zJaZG%Q-e|yQz{EjrrH1%X?wajhE&{2N?5?KW!tuY=?mB;wq{&eB$yzmd^bmClcQPI i!4<5BPcStwFf(Md8T7mf@@N5SWAJqKb6Mw<&;$UgGbzdd literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/next@2x.png b/release/server/docroot/images/next@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ec4feb220534dfd6107e93a2b65fb7ef17ad94b2 GIT binary patch literal 339 zcmV-Z0j&OsP)MwIvpFaV2?%kdd*&=&vz002ovPDHLkV1i%%fOr4^ literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/prev.png b/release/server/docroot/images/prev.png new file mode 100644 index 0000000000000000000000000000000000000000..43e4805e3916fdecdebc1a9dc8fc3a31521c50b9 GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoX!3HE#i{( zJaZG%Q-e|yQz{EjrrH1%*?77*hE&{2N>E^kijJ0T_+ihy_P`3(#bP~C3~W7HwlT0o zG~5vE_#Pe}ZhYyAS{2L96|RfLcoVxBn0Od&TlgCvd$uA8Xbyv?tDnm{r-UW|QRgn` literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/prev@2x.png b/release/server/docroot/images/prev@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d505f4f51dff9bd246dd7948942d507848d9341e GIT binary patch literal 345 zcmV-f0jBYnD$VQWAX zL68vH5Hv&<1QC%8K}94%kP*=kbVL+{0dWXnLF_`95StJ-L=eJ=SV3433kWk}hOi?h zNDT-djpm&l@tF~km#H8cQ%RgOd(CcMT8?vR`5Ae95q_Txy3|_AJu)4?5;(cYX6E-p zB*!eTD8!icrI8d9zQz+`wjWkxnEj_N5$3q~K!S-Y2N7W63v}R^w2~<>CcTIaipgs$ r0AlhRJz$u!)*BGUmJWb|c?&QABjnXf3&W2300000NkvXXu0mjf*A#>Z literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/read.png b/release/server/docroot/images/read.png new file mode 100644 index 0000000000000000000000000000000000000000..9465a7d5f4727667be0605a7591744bf0dcc14c9 GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)P!3HG%MVKuHQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JimW_c978H@C7n5a`uF(;7B$~lM>w76b4UMKbLh*2~7aVH!tk~ literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/read@2x.png b/release/server/docroot/images/read@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..68ed871530b0ffc5740ec6f6336ab2690ad2dbec GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^d_XM3!3HF=W8NDADajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_c!wVp1HAr-fh&YV8|`+S3Z3`5d!&&g`F4q_=u3Oqaw74{dH z7*ibGX7oA;OHNds5L3jsO7du0Qcj7>C7$gw7r3q9m6+AJQE+vdnA5C+mR*d2W=YIC w6?2YvoM%nBZLw;im{cUk5`kB@IRp|IN*0AX-jET)X7KQ01>=#%OA)*d*Z(j?D)T5veqeAlU2&)F(Psyp2K@$y sPXVO~wme6&j-)X#Yf4?@W#BMiDDE)I+JE*$8qh`tPgg&ebxsLQ0Ful_p#T5? literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/readMark@2x.png b/release/server/docroot/images/readMark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1d9d0d3e3a3dab8d7259402b47f02d5172ec407e GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^azJdx!3HERoY(vbq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6`k^QaSW-r_2$My&SnDv)(73fH+)}l+&v&@3tme#bd9y_{rM!qFj5E+OD_+S8&|VT6^}zU*3J!?nxxH n6qK4ADKy%4PbhI8s{}&@XA@`A!!uPtUom*P`njxgN@xNA$RK!! literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/readingMark.png b/release/server/docroot/images/readingMark.png new file mode 100644 index 0000000000000000000000000000000000000000..e37f3c80cd812942ac988e20df154626baba7ae7 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^{6H+t!3HE3PrP~@NJ*BsMwA5SrL11q z;e{rivmB*lBz+~s8Zu(o3?5#rU_8=zDT3GG`X7c!WgZ2|4-C`OCNMdd^k%S0I9*+s zv5#TvN9KJOT2EOY;$^rd@w_pjVTuORO7@q`90m+?jwnqyx_IMSpxq3fu6{1-oD!M< D)h9`8 literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/readingMark@2x.png b/release/server/docroot/images/readingMark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..589e2e9bf8474511263dd76023add1e2358d48e3 GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^azJdx!3HERoY(vbq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6`k^QaSW-r_2$M~&K3h6wg)$QS;PyPr4LFU>^v7J^PtY6 zNqL9kdP^mb9h>E^z3SgCpk?|*QA}scru?>Q?DRqy2wTV(w^AtCwe m3XxTXbrn2&x2 literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/topboxLibraries_ipad.jpg b/release/server/docroot/images/topboxLibraries_ipad.jpg deleted file mode 100644 index c6b0f8a24cd03457c17b698028b7c56d621d0fbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 423 zcmex=C5UDGKfoZ!!NAI>z|1Jfz$D1XEXer(2ty3e z*~~ykA^~;|E=EQqKA0&0^f4<7Gm^N7sF1LjxCFDZ3acVJhpHfw6h!m?TMRrv4NQW} zf(-Tyx1XQB@jGE}Y?&~a!x7UyA9+CpU&wrO&-q2@x8 zI%!`-R`A6KFAsw3Kd?{Bg6_*Mxb+6RPl7MrSm=ZJpm=!|A)aKeE*;s!Iq*B*`F_9e zJKy;d|FORXMh>`H=K;Dn#(Yw zm^$yt7B6J7JeaI_maMEomtBUZHKWYE{o^*rYHFEVEY!1gYX+`phc|3Ezj0(i*;rLd zDpxtkPI{83TRL=Q*3-`zj^vfOP+USdF!LN6y11)lZYqe%9GK~Wn(>~1$ zrBW%-$mP<=BkimkuI!}^XQHi8g^prtmaCZt8z{=l=9*jPP^Qf*=vGH|+gkNF*6Uw( z)%BnNp{(Q1!EV0W3Ofty7UbukW3Jf>MD7y-*^*{#D7&V;V47#zRXnz0x~8*YTI|fc z$bP-38LHWE_J{uUx>Pe9S2h$_tCl&WkkK?%%8A)hacWu=zAse;;ZUwr$XBO|LScG# zwph$h=iA(>sjTVHaNAt9%Psch2Cbl5C~_6r+F7X1+NREiSC+K?x#aumwYX~kTnc@; zJW7TS9=7M9+a}aK0qnFb+H@Kp8mQZC)YkqRus3X0p#FtEAB+IQBtgXo0fpdfF#u;Ug2DWI;1a+vtous{P$c?a3jj3o z`phl0L_`?GrJ_A#1_Mjuax!&(b0{}QkVBs_kl#`g6^SHz%*@ib0Oa$VQ&)a_?>_|z zbcQnogNpg^AGSw%dwAm<;>1v5SOkB0`PvDlxyOV3&*2f#g*Z-C@KV#-h3Ezq{MD`0 z1nO3FPpcUvIJHczj>0p_+@a{k7&rMjrj=pH6k2L8X{Qy7t1p7F4`2YX_ diff --git a/release/server/docroot/images/topbox_iphone.jpg b/release/server/docroot/images/topbox_iphone.jpg deleted file mode 100644 index c6b0f8a24cd03457c17b698028b7c56d621d0fbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 423 zcmex=C5UDGKfoZ!!NAI>z|1Jfz$D1XEXer(2ty3e z*~~ykA^~;|E=EQqKA0&0^f4<7Gm^N7sF1LjxCFDZ3acVJhpHfw6h!m?TMRrv4NQW} zf(-Tyx1XQB@jGE}Y8U}fi7AzZCsS>Jid;Qi978H@B_$kSj*5={|9En`id%ANsi`vaMuugAbJe1h z?aTt}RE`|icAO%iC(POP_%rv;A{Whsqy-E;S#no>1Q=K(7;f2_>xnB$^Z^ZI@O1Ta JS?83{1OPAQFaiJo literal 0 HcmV?d00001 diff --git a/release/server/docroot/images/up@2x.png b/release/server/docroot/images/up@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d990ce0d8fb2cf6386608432f9a5e8cf48161078 GIT binary patch literal 271 zcmV+q0r38bP)ug1}Ww%}+*tvEbT3l1+-i^CJu;P6JT z;)p=6;D|!ca73d2a73fOaMW)t6g|L4^C9w1pEcI~=x!>)gb5QSOqeiX!twPLU;r+0 Vp{p>?rG@|i002ovPDHLkV1h>9Zu - + Folder

- -

BROWSE AND IMPORT

-

{folder.name} {if pageIndex} - PAGE {page} OF {pages}{end pageIndex}

- -
{if pageIndex} {end pageIndex} up Libraries
- -
-
    - {loop element} -
  • {element.name}

    {element.download} {element.browse}
  • - {end element} +
    + +
    +
    {if pageIndex} {end pageIndex} up
    + + +
    +

    {folder.name}

    +
    + +
    + Libraries {library.name} {loop path} {path.name} {end path} +
    +
    + {if pageIndex} + + + {end pageIndex} + + {if alphaIndex} + + + {end alphaIndex} + +
    +
    + + +
    +
      + {loop element} +
    • +
      + +
      +
      +

      {element.name}

      +
      +
      {element.pages} {element.size} +
      +
      {element.download} {element.read} {element.browse} +
      +
      + {element.status} +
    • + {end element} +
    +
     
    +
    +
    + + {if index} +
    + {if alphaIndex} + +
    +
     
    -
    -
     
    - - {if alphaIndex} - -
    - -
     
    -
    -
     
    - - {end alphaIndex} - - - {if pageIndex} - -
    - -
     
    -
    -
     
    - {end pageIndex} - - - - + + {end alphaIndex} + + + {if pageIndex} + +
    + +
     
    +
    + {end pageIndex} +
+ {end index} + + + + + diff --git a/release/server/templates/folder_iphone.tpl b/release/server/templates/folder_iphone.tpl index 231a6843..b94e2c2c 100644 --- a/release/server/templates/folder_iphone.tpl +++ b/release/server/templates/folder_iphone.tpl @@ -1,62 +1,113 @@ - + Folder
- -

BROWSE AND IMPORT

-

{folder.name} {if pageIndex} - PAGE {page} OF {pages} {end pageIndex}

- -
Libraries up {if pageIndex} {end pageIndex}
- -
-
    - {loop element} -
  • {element.name}

    {element.download} {element.browse}
  • - {end element} +
    + +
    +
    {if pageIndex} {end pageIndex} up
    + + +
    +
    + +
    + Libraries {loop path} {path.name} {end path} +
    +
    + {if pageIndex} + + + {end pageIndex} + + {if alphaIndex} + + + {end alphaIndex} + +
    +
    + + +
    +
      + {loop element} +
    • +
      + +
      +
      +

      {element.name}

      +
      +
      {element.pages} {element.size} +
      +
      {element.download} {element.read} {element.browse} +
      +
      + {element.status} +
    • + {end element} +
    +
     
    +
    +
    + + {if index} +
    + {if alphaIndex} + +
    +
     
    -
    -
    -
     
    - - {if alphaIndex} -
    - -
     
    -
    -
     
    - - {end alphaIndex} - - - {if pageIndex} - -
    - -
     
    -
    -
     
    - - {end pageIndex} - - - +
+ + {end alphaIndex} + + + {if pageIndex} + +
+ +
 
+
+ {end pageIndex} +
+ {end index} + + + + + diff --git a/release/server/templates/libraries_ipad.tpl b/release/server/templates/libraries_ipad.tpl index e4bb6a35..e1c7b6eb 100644 --- a/release/server/templates/libraries_ipad.tpl +++ b/release/server/templates/libraries_ipad.tpl @@ -3,20 +3,24 @@ - Login + Libraries
-

LIBRARIES

-

Select a comic library

+

Libraries

-
 
\ No newline at end of file diff --git a/release/server/templates/libraries_iphone.tpl b/release/server/templates/libraries_iphone.tpl index a438be81..e1c7b6eb 100644 --- a/release/server/templates/libraries_iphone.tpl +++ b/release/server/templates/libraries_iphone.tpl @@ -3,20 +3,24 @@ - Login + Libraries -
-

LIBRARIES

-

Select a comic library

+
+

Libraries

-

    +

-
 
\ No newline at end of file