mirror of
https://github.com/YACReader/yacreader
synced 2025-06-04 01:28:55 -04:00
merged
This commit is contained in:
commit
e3af72da44
@ -37,10 +37,7 @@ LIBS += -L../dependencies/poppler/lib -loleaut32 -lole32
|
|||||||
LIBS += -lpoppler-qt5
|
LIBS += -lpoppler-qt5
|
||||||
INCLUDEPATH += ../dependencies/poppler/include/qt5
|
INCLUDEPATH += ../dependencies/poppler/include/qt5
|
||||||
|
|
||||||
QMAKE_CXXFLAGS_RELEASE += /MP /Ob2 /Oi /Ot /GT
|
QMAKE_CXXFLAGS_RELEASE += /02 /MP /Ob2 /Oi /Ot /GT /GL
|
||||||
!CONFIG(no_opengl) {
|
|
||||||
QMAKE_CXXFLAGS_RELEASE += /GL
|
|
||||||
}
|
|
||||||
QMAKE_LFLAGS_RELEASE += /LTCG
|
QMAKE_LFLAGS_RELEASE += /LTCG
|
||||||
CONFIG -= embed_manifest_exe
|
CONFIG -= embed_manifest_exe
|
||||||
}
|
}
|
||||||
|
@ -32,10 +32,7 @@ LIBS += -L../dependencies/poppler/lib -loleaut32 -lole32 -lshell32
|
|||||||
LIBS += -lpoppler-qt5
|
LIBS += -lpoppler-qt5
|
||||||
INCLUDEPATH += ../dependencies/poppler/include/qt5
|
INCLUDEPATH += ../dependencies/poppler/include/qt5
|
||||||
|
|
||||||
QMAKE_CXXFLAGS_RELEASE += /MP /Ob2 /Oi /Ot /GT
|
QMAKE_CXXFLAGS_RELEASE += /02 /MP /Ob2 /Oi /Ot /GT /GL
|
||||||
!CONFIG(no_opengl) {
|
|
||||||
QMAKE_CXXFLAGS_RELEASE += /GL
|
|
||||||
}
|
|
||||||
QMAKE_LFLAGS_RELEASE += /LTCG
|
QMAKE_LFLAGS_RELEASE += /LTCG
|
||||||
CONFIG -= embed_manifest_exe
|
CONFIG -= embed_manifest_exe
|
||||||
}
|
}
|
||||||
|
@ -348,7 +348,7 @@ void DBHelper::update(ComicInfo * comicInfo, QSqlDatabase & db)
|
|||||||
|
|
||||||
updateComicInfo.bindValue(":comicVineID", comicInfo->comicVineID);
|
updateComicInfo.bindValue(":comicVineID", comicInfo->comicVineID);
|
||||||
|
|
||||||
updateComicInfo.exec();
|
updateComicInfo.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DBHelper::updateRead(ComicInfo * comicInfo, QSqlDatabase & db)
|
void DBHelper::updateRead(ComicInfo * comicInfo, QSqlDatabase & db)
|
||||||
@ -391,6 +391,44 @@ void DBHelper::updateProgress(qulonglong libraryId, const ComicInfo &comicInfo)
|
|||||||
QSqlDatabase::removeDatabase(libraryPath);
|
QSqlDatabase::removeDatabase(libraryPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DBHelper::updateReadingRemoteProgress(const ComicInfo &comicInfo, QSqlDatabase &db)
|
||||||
|
{
|
||||||
|
QSqlQuery updateComicInfo(db);
|
||||||
|
updateComicInfo.prepare("UPDATE comic_info SET "
|
||||||
|
"read = :read, "
|
||||||
|
"currentPage = :currentPage, "
|
||||||
|
"hasBeenOpened = :hasBeenOpened"
|
||||||
|
" WHERE id = :id ");
|
||||||
|
|
||||||
|
updateComicInfo.bindValue(":read", comicInfo.read?1:0);
|
||||||
|
updateComicInfo.bindValue(":currentPage", comicInfo.currentPage);
|
||||||
|
updateComicInfo.bindValue(":hasBeenOpened", comicInfo.hasBeenOpened?1:0);
|
||||||
|
updateComicInfo.bindValue(":id", comicInfo.id);
|
||||||
|
updateComicInfo.exec();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DBHelper::updateFromRemoteClient(qulonglong libraryId,const ComicInfo & comicInfo)
|
||||||
|
{
|
||||||
|
QString libraryPath = DBHelper::getLibraries().getPath(libraryId);
|
||||||
|
QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath+"/.yacreaderlibrary");
|
||||||
|
|
||||||
|
ComicDB comic = DBHelper::loadComic(comicInfo.id,db);
|
||||||
|
|
||||||
|
if(comic.info.hash == comicInfo.hash)
|
||||||
|
{
|
||||||
|
if(comic.info.currentPage == comic.info.numPages)
|
||||||
|
comic.info.read = true;
|
||||||
|
comic.info.currentPage = comicInfo.currentPage;
|
||||||
|
comic.info.hasBeenOpened = true;
|
||||||
|
|
||||||
|
DBHelper::updateReadingRemoteProgress(comic.info,db);
|
||||||
|
}
|
||||||
|
|
||||||
|
db.close();
|
||||||
|
QSqlDatabase::removeDatabase(libraryPath);
|
||||||
|
}
|
||||||
|
|
||||||
void DBHelper::renameLabel(qulonglong id, const QString &name, QSqlDatabase &db)
|
void DBHelper::renameLabel(qulonglong id, const QString &name, QSqlDatabase &db)
|
||||||
{
|
{
|
||||||
QSqlQuery renameLabelQuery(db);
|
QSqlQuery renameLabelQuery(db);
|
||||||
|
@ -57,6 +57,8 @@ public:
|
|||||||
static void updateRead(ComicInfo * comicInfo, QSqlDatabase & db);
|
static void updateRead(ComicInfo * comicInfo, QSqlDatabase & db);
|
||||||
static void update(const Folder & folder, QSqlDatabase & db);
|
static void update(const Folder & folder, QSqlDatabase & db);
|
||||||
static void updateProgress(qulonglong libraryId,const ComicInfo & comicInfo);
|
static void updateProgress(qulonglong libraryId,const ComicInfo & comicInfo);
|
||||||
|
static void updateReadingRemoteProgress(const ComicInfo & comicInfo, QSqlDatabase & db);
|
||||||
|
static void updateFromRemoteClient(qulonglong libraryId,const ComicInfo & comicInfo);
|
||||||
static void renameLabel(qulonglong id, const QString & name, QSqlDatabase & db);
|
static void renameLabel(qulonglong id, const QString & name, QSqlDatabase & db);
|
||||||
static void renameList(qulonglong id, const QString & name, QSqlDatabase & db);
|
static void renameList(qulonglong id, const QString & name, QSqlDatabase & db);
|
||||||
static void reasignOrderToSublists(QList<qulonglong> ids, QSqlDatabase & db);
|
static void reasignOrderToSublists(QList<qulonglong> ids, QSqlDatabase & db);
|
||||||
|
@ -570,7 +570,7 @@ void LibraryWindow::createActions()
|
|||||||
setAllAsNonReadAction->setIcon(QIcon(":/images/setAllUnread.png"));*/
|
setAllAsNonReadAction->setIcon(QIcon(":/images/setAllUnread.png"));*/
|
||||||
|
|
||||||
showHideMarksAction = new QAction(tr("Show/Hide marks"),this);
|
showHideMarksAction = new QAction(tr("Show/Hide marks"),this);
|
||||||
showHideMarksAction->setToolTip(tr("Show or hide readed marks"));
|
showHideMarksAction->setToolTip(tr("Show or hide read marks"));
|
||||||
showHideMarksAction->setData(SHOW_HIDE_MARKS_ACTION_YL);
|
showHideMarksAction->setData(SHOW_HIDE_MARKS_ACTION_YL);
|
||||||
showHideMarksAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SHOW_HIDE_MARKS_ACTION_YL));
|
showHideMarksAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SHOW_HIDE_MARKS_ACTION_YL));
|
||||||
showHideMarksAction->setCheckable(true);
|
showHideMarksAction->setCheckable(true);
|
||||||
|
55
YACReaderLibrary/server/controllers/synccontroller.cpp
Normal file
55
YACReaderLibrary/server/controllers/synccontroller.cpp
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
#include "synccontroller.h"
|
||||||
|
|
||||||
|
#include "QsLog.h"
|
||||||
|
#include <QUrl>
|
||||||
|
|
||||||
|
#include "comic_db.h"
|
||||||
|
#include "db_helper.h"
|
||||||
|
|
||||||
|
SyncController::SyncController()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void SyncController::service(HttpRequest &request, HttpResponse &response)
|
||||||
|
{
|
||||||
|
QString postData = QString::fromUtf8(request.getBody());
|
||||||
|
|
||||||
|
QLOG_INFO() << "POST DATA: " << postData;
|
||||||
|
|
||||||
|
if(postData.length()>0) {
|
||||||
|
QList<QString> data = postData.split("\n");
|
||||||
|
|
||||||
|
qulonglong libraryId;
|
||||||
|
qulonglong comicId;
|
||||||
|
int currentPage;
|
||||||
|
QString hash;
|
||||||
|
foreach(QString comicInfo, data)
|
||||||
|
{
|
||||||
|
QList<QString> comicInfoProgress = comicInfo.split("\t");
|
||||||
|
|
||||||
|
if(comicInfoProgress.length() == 4)
|
||||||
|
{
|
||||||
|
libraryId = comicInfoProgress.at(0).toULongLong();
|
||||||
|
comicId = comicInfoProgress.at(1).toULongLong();
|
||||||
|
hash = comicInfoProgress.at(2);
|
||||||
|
currentPage = comicInfoProgress.at(3).toInt();
|
||||||
|
|
||||||
|
ComicInfo info;
|
||||||
|
info.currentPage = currentPage;
|
||||||
|
info.hash = hash; //TODO remove the hash check and add UUIDs for libraries
|
||||||
|
info.id = comicId;
|
||||||
|
DBHelper::updateFromRemoteClient(libraryId,info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
response.setStatus(412,"No comic info received");
|
||||||
|
response.writeText("",true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
response.write("OK",true);
|
||||||
|
}
|
||||||
|
|
21
YACReaderLibrary/server/controllers/synccontroller.h
Normal file
21
YACReaderLibrary/server/controllers/synccontroller.h
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#ifndef SYNCCONTROLLER_H
|
||||||
|
#define SYNCCONTROLLER_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
#include "httprequest.h"
|
||||||
|
#include "httpresponse.h"
|
||||||
|
#include "httprequesthandler.h"
|
||||||
|
|
||||||
|
class SyncController : public HttpRequestHandler {
|
||||||
|
Q_OBJECT
|
||||||
|
Q_DISABLE_COPY(SyncController);
|
||||||
|
public:
|
||||||
|
/** Constructor */
|
||||||
|
SyncController();
|
||||||
|
|
||||||
|
/** Generates the response */
|
||||||
|
void service(HttpRequest& request, HttpResponse& response);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SYNCCONTROLLER_H
|
@ -21,6 +21,7 @@
|
|||||||
#include "controllers/updatecomiccontroller.h"
|
#include "controllers/updatecomiccontroller.h"
|
||||||
#include "controllers/errorcontroller.h"
|
#include "controllers/errorcontroller.h"
|
||||||
#include "controllers/comicdownloadinfocontroller.h"
|
#include "controllers/comicdownloadinfocontroller.h"
|
||||||
|
#include "controllers/synccontroller.h"
|
||||||
|
|
||||||
#include "db_helper.h"
|
#include "db_helper.h"
|
||||||
#include "yacreader_libraries.h"
|
#include "yacreader_libraries.h"
|
||||||
@ -91,81 +92,86 @@ void RequestMapper::loadSession(HttpRequest & request, HttpResponse& response)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void RequestMapper::service(HttpRequest& request, HttpResponse& response) {
|
void RequestMapper::service(HttpRequest& request, HttpResponse& response) {
|
||||||
QByteArray path=request.getPath();
|
QByteArray path=request.getPath();
|
||||||
qDebug("RequestMapper: path=%s",path.data());
|
qDebug("RequestMapper: path=%s",path.data());
|
||||||
|
|
||||||
QRegExp folder("/library/.+/folder/[0-9]+/?");//get comic content
|
QRegExp folder("/library/.+/folder/[0-9]+/?");//get comic content
|
||||||
QRegExp folderInfo("/library/.+/folder/[0-9]+/info/?"); //get folder info
|
QRegExp folderInfo("/library/.+/folder/[0-9]+/info/?"); //get folder info
|
||||||
QRegExp comicDownloadInfo("/library/.+/comic/[0-9]+/?"); //get comic info (basic/download info)
|
QRegExp comicDownloadInfo("/library/.+/comic/[0-9]+/?"); //get comic info (basic/download info)
|
||||||
QRegExp comicFullInfo("/library/.+/comic/[0-9]+/info/?"); //get comic info (full info)
|
QRegExp comicFullInfo("/library/.+/comic/[0-9]+/info/?"); //get comic info (full info)
|
||||||
QRegExp comicOpen("/library/.+/comic/[0-9]+/remote/?"); //the server will open for reading the comic
|
QRegExp comicOpen("/library/.+/comic/[0-9]+/remote/?"); //the server will open for reading the comic
|
||||||
QRegExp comicUpdate("/library/.+/comic/[0-9]+/update/?"); //get comic info
|
QRegExp comicUpdate("/library/.+/comic/[0-9]+/update/?"); //get comic info
|
||||||
QRegExp comicClose("/library/.+/comic/[0-9]+/close/?"); //the server will close the comic and free memory
|
QRegExp comicClose("/library/.+/comic/[0-9]+/close/?"); //the server will close the comic and free memory
|
||||||
QRegExp cover("/library/.+/cover/[0-9a-f]+.jpg"); //get comic cover (navigation)
|
QRegExp cover("/library/.+/cover/[0-9a-f]+.jpg"); //get comic cover (navigation)
|
||||||
QRegExp comicPage("/library/.+/comic/[0-9]+/page/[0-9]+/?"); //get comic page
|
QRegExp comicPage("/library/.+/comic/[0-9]+/page/[0-9]+/?"); //get comic page
|
||||||
QRegExp comicPageRemote("/library/.+/comic/[0-9]+/page/[0-9]+/remote?"); //get comic page (remote reading)
|
QRegExp comicPageRemote("/library/.+/comic/[0-9]+/page/[0-9]+/remote?"); //get comic page (remote reading)
|
||||||
|
|
||||||
|
QRegExp sync("/sync");
|
||||||
|
|
||||||
QRegExp library("/library/([0-9]+)/.+"); //permite verificar que la biblioteca solicitada existe
|
QRegExp library("/library/([0-9]+)/.+"); //permite verificar que la biblioteca solicitada existe
|
||||||
|
|
||||||
path = QUrl::fromPercentEncoding(path).toUtf8();
|
path = QUrl::fromPercentEncoding(path).toUtf8();
|
||||||
|
|
||||||
loadSession(request, response);
|
if(!sync.exactMatch(path)) //no session is needed for syncback info, until security will be added
|
||||||
|
loadSession(request, response);
|
||||||
|
|
||||||
//primera petición, se ha hecho un post, se sirven las bibliotecas si la seguridad mediante login no está habilitada
|
//primera petición, se ha hecho un post, se sirven las bibliotecas si la seguridad mediante login no está habilitada
|
||||||
if(path == "/") //Don't send data to the server using '/' !!!!
|
if(path == "/") //Don't send data to the server using '/' !!!!
|
||||||
{
|
{
|
||||||
LibrariesController().service(request, response);
|
LibrariesController().service(request, response);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
else
|
{
|
||||||
{
|
if(sync.exactMatch(path))
|
||||||
|
SyncController().service(request, response);
|
||||||
//se comprueba que la sesión sea la correcta con el fin de evitar accesos no autorizados
|
else
|
||||||
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()) )
|
//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);
|
||||||
//listar el contenido del folder
|
if(!session.isNull() && session.contains("ySession"))
|
||||||
if(folder.exactMatch(path))
|
{
|
||||||
{
|
if(library.indexIn(path)!=-1 && DBHelper::getLibraries().contains(library.cap(1).toInt()) )
|
||||||
FolderController().service(request, response);
|
|
||||||
}
|
|
||||||
else if (folderInfo.exactMatch(path))
|
|
||||||
{
|
|
||||||
FolderInfoController().service(request, response);
|
|
||||||
}
|
|
||||||
else if(cover.exactMatch(path))
|
|
||||||
{
|
|
||||||
CoverController().service(request, response);
|
|
||||||
}
|
|
||||||
else if(comicDownloadInfo.exactMatch(path))
|
|
||||||
{
|
{
|
||||||
ComicDownloadInfoController().service(request, response);
|
//listar el contenido del folder
|
||||||
|
if(folder.exactMatch(path))
|
||||||
|
{
|
||||||
|
FolderController().service(request, response);
|
||||||
|
}
|
||||||
|
else if (folderInfo.exactMatch(path))
|
||||||
|
{
|
||||||
|
FolderInfoController().service(request, response);
|
||||||
|
}
|
||||||
|
else if(cover.exactMatch(path))
|
||||||
|
{
|
||||||
|
CoverController().service(request, response);
|
||||||
|
}
|
||||||
|
else if(comicDownloadInfo.exactMatch(path))
|
||||||
|
{
|
||||||
|
ComicDownloadInfoController().service(request, response);
|
||||||
|
}
|
||||||
|
else if(comicFullInfo.exactMatch(path) || comicOpen.exactMatch(path))//start download or start remote reading
|
||||||
|
{
|
||||||
|
ComicController().service(request, response);
|
||||||
|
}
|
||||||
|
else if(comicPage.exactMatch(path) || comicPageRemote.exactMatch(path))
|
||||||
|
{
|
||||||
|
PageController().service(request,response);
|
||||||
|
}
|
||||||
|
else if(comicUpdate.exactMatch(path))
|
||||||
|
{
|
||||||
|
UpdateComicController().service(request, response);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(comicFullInfo.exactMatch(path) || comicOpen.exactMatch(path))//start download or start remote reading
|
else
|
||||||
{
|
|
||||||
ComicController().service(request, response);
|
|
||||||
}
|
|
||||||
else if(comicPage.exactMatch(path) || comicPageRemote.exactMatch(path))
|
|
||||||
{
|
|
||||||
PageController().service(request,response);
|
|
||||||
}
|
|
||||||
else if(comicUpdate.exactMatch(path))
|
|
||||||
{
|
{
|
||||||
UpdateComicController().service(request, response);
|
//response.writeText(library.cap(1));
|
||||||
|
Static::staticFileController->service(request, response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else //acceso no autorizado, redirección
|
||||||
{
|
{
|
||||||
//response.writeText(library.cap(1));
|
ErrorController(300).service(request,response);
|
||||||
Static::staticFileController->service(request, response);
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else //acceso no autorizado, redirección
|
}
|
||||||
{
|
|
||||||
ErrorController(300).service(request,response);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,31 +5,33 @@ HEADERS += \
|
|||||||
$$PWD/static.h \
|
$$PWD/static.h \
|
||||||
$$PWD/startup.h \
|
$$PWD/startup.h \
|
||||||
$$PWD/requestmapper.h \
|
$$PWD/requestmapper.h \
|
||||||
$$PWD/controllers/comiccontroller.h \
|
$$PWD/controllers/comiccontroller.h \
|
||||||
$$PWD/controllers/errorcontroller.h \
|
$$PWD/controllers/errorcontroller.h \
|
||||||
$$PWD/controllers/foldercontroller.h \
|
$$PWD/controllers/foldercontroller.h \
|
||||||
$$PWD/controllers/folderinfocontroller.h \
|
$$PWD/controllers/folderinfocontroller.h \
|
||||||
$$PWD/controllers/librariescontroller.h \
|
$$PWD/controllers/librariescontroller.h \
|
||||||
$$PWD/controllers/pagecontroller.h \
|
$$PWD/controllers/pagecontroller.h \
|
||||||
$$PWD/controllers/sessionmanager.h \
|
$$PWD/controllers/sessionmanager.h \
|
||||||
$$PWD/controllers/covercontroller.h \
|
$$PWD/controllers/covercontroller.h \
|
||||||
server/controllers/updatecomiccontroller.h \
|
$$PWD/controllers/updatecomiccontroller.h \
|
||||||
server/controllers/comicdownloadinfocontroller.h
|
$$PWD/controllers/comicdownloadinfocontroller.h \
|
||||||
|
$$PWD/controllers/synccontroller.h
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
$$PWD/static.cpp \
|
$$PWD/static.cpp \
|
||||||
$$PWD/startup.cpp \
|
$$PWD/startup.cpp \
|
||||||
$$PWD/requestmapper.cpp \
|
$$PWD/requestmapper.cpp \
|
||||||
$$PWD/controllers/comiccontroller.cpp \
|
$$PWD/controllers/comiccontroller.cpp \
|
||||||
$$PWD/controllers/errorcontroller.cpp \
|
$$PWD/controllers/errorcontroller.cpp \
|
||||||
$$PWD/controllers/foldercontroller.cpp \
|
$$PWD/controllers/foldercontroller.cpp \
|
||||||
$$PWD/controllers/folderinfocontroller.cpp \
|
$$PWD/controllers/folderinfocontroller.cpp \
|
||||||
$$PWD/controllers/librariescontroller.cpp \
|
$$PWD/controllers/librariescontroller.cpp \
|
||||||
$$PWD/controllers/pagecontroller.cpp \
|
$$PWD/controllers/pagecontroller.cpp \
|
||||||
$$PWD/controllers/sessionmanager.cpp \
|
$$PWD/controllers/sessionmanager.cpp \
|
||||||
$$PWD/controllers/covercontroller.cpp \
|
$$PWD/controllers/covercontroller.cpp \
|
||||||
server/controllers/updatecomiccontroller.cpp \
|
$$PWD/controllers/updatecomiccontroller.cpp \
|
||||||
server/controllers/comicdownloadinfocontroller.cpp
|
$$PWD/controllers/comicdownloadinfocontroller.cpp \
|
||||||
|
$$PWD/controllers/synccontroller.cpp
|
||||||
|
|
||||||
include(lib/bfLogging/bfLogging.pri)
|
include(lib/bfLogging/bfLogging.pri)
|
||||||
include(lib/bfHttpServer/bfHttpServer.pri)
|
include(lib/bfHttpServer/bfHttpServer.pri)
|
||||||
|
@ -5,11 +5,10 @@ body{
|
|||||||
|
|
||||||
/* libraries */
|
/* libraries */
|
||||||
#contentLibraries{
|
#contentLibraries{
|
||||||
width: 300px;
|
|
||||||
border: 1px solid #C6C6C6;
|
border: 1px solid #C6C6C6;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
margin-left: auto;
|
margin-left: 20px;
|
||||||
margin-right: auto;
|
margin-right: 20px;
|
||||||
margin-top: 9px;
|
margin-top: 9px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +61,7 @@ body{
|
|||||||
|
|
||||||
#contentLibraries .library-indicator
|
#contentLibraries .library-indicator
|
||||||
{
|
{
|
||||||
float: left;
|
float: right;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
height: 8px;
|
height: 8px;
|
||||||
padding: 16px 16px 15px 16px;
|
padding: 16px 16px 15px 16px;
|
||||||
@ -181,10 +180,10 @@ body{
|
|||||||
|
|
||||||
#itemContainer li
|
#itemContainer li
|
||||||
{
|
{
|
||||||
width: 300px;
|
|
||||||
height: 120px;
|
height: 120px;
|
||||||
border: 1px solid #E2E2E2;
|
border: 1px solid #E2E2E2;
|
||||||
margin: 9px auto 0px auto;
|
margin: 9px 10px 0px 10px;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
position: relative;
|
position: relative;
|
||||||
@ -218,22 +217,22 @@ overflow: hidden;
|
|||||||
.info
|
.info
|
||||||
{
|
{
|
||||||
padding: 8px 0px 0px 0px;
|
padding: 8px 0px 0px 0px;
|
||||||
float: left;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 115px;
|
height: 115px;
|
||||||
width: 212px;
|
|
||||||
|
|
||||||
|
padding-left: 82px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.buttons
|
.buttons
|
||||||
{
|
{
|
||||||
position:absolute;
|
position:absolute;
|
||||||
bottom:0px;
|
bottom:0px;
|
||||||
left:0px;
|
left:80px;
|
||||||
|
right: 0px;
|
||||||
border-top: 1px solid #e2e2e2;
|
border-top: 1px solid #e2e2e2;
|
||||||
padding-top: 3px;
|
padding-top: 3px;
|
||||||
height: 25px;
|
height: 25px;
|
||||||
width: 220px;
|
|
||||||
font-family: Arial;
|
font-family: Arial;
|
||||||
color: #6e6e6e;
|
color: #6e6e6e;
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
@ -245,7 +244,7 @@ width: 212px;
|
|||||||
bottom:24px;
|
bottom:24px;
|
||||||
padding-top: 3px;
|
padding-top: 3px;
|
||||||
height: 25px;
|
height: 25px;
|
||||||
width: 220px;
|
width: 100%;
|
||||||
font-family: Arial;
|
font-family: Arial;
|
||||||
color: #adadad;
|
color: #adadad;
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user