Merge branch 'master' of git.workaround.org:chaas/debshots
This commit is contained in:
commit
a56944038c
25 changed files with 302 additions and 542 deletions
|
|
@ -37,3 +37,21 @@ load_reviews = function() {
|
|||
}
|
||||
);
|
||||
};
|
||||
|
||||
// Initialize the upload form.
|
||||
upload_form_init = function() {
|
||||
// Disable the submit button until files are selected.
|
||||
$('#file-submit').hide();
|
||||
|
||||
// Install event handler to notice when files were selected.
|
||||
$('#file').on('change', upload_form_files_selected);
|
||||
};
|
||||
|
||||
upload_form_files_selected = function() {
|
||||
no_files = this.files.length;
|
||||
if (no_files > 0) {
|
||||
$('#file-label').html(no_files+" files selected");
|
||||
$('#file-select-button').addClass('success');
|
||||
$('#file-submit').fadeIn('slow');
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -25,19 +25,20 @@
|
|||
// 20. Label
|
||||
// 21. Media Object
|
||||
// 22. Menu
|
||||
// 23. Off-canvas
|
||||
// 24. Orbit
|
||||
// 25. Pagination
|
||||
// 26. Progress Bar
|
||||
// 27. Reveal
|
||||
// 28. Slider
|
||||
// 29. Switch
|
||||
// 30. Table
|
||||
// 31. Tabs
|
||||
// 32. Thumbnail
|
||||
// 33. Title Bar
|
||||
// 34. Tooltip
|
||||
// 35. Top Bar
|
||||
// 23. Meter
|
||||
// 24. Off-canvas
|
||||
// 25. Orbit
|
||||
// 26. Pagination
|
||||
// 27. Progress Bar
|
||||
// 28. Reveal
|
||||
// 29. Slider
|
||||
// 30. Switch
|
||||
// 31. Table
|
||||
// 32. Tabs
|
||||
// 33. Thumbnail
|
||||
// 34. Title Bar
|
||||
// 35. Tooltip
|
||||
// 36. Top Bar
|
||||
|
||||
@import 'util/util';
|
||||
|
||||
|
|
@ -54,12 +55,14 @@ $debian-color: #c70338;
|
|||
$global-font-size: 100%;
|
||||
$global-width: rem-calc(1200);
|
||||
$global-lineheight: 1.5;
|
||||
$primary-color: #808080;
|
||||
//$primary-color: $debian-color;
|
||||
$secondary-color: #777;
|
||||
$success-color: #3adb76;
|
||||
$warning-color: #ffae00;
|
||||
$alert-color: #ec5840;
|
||||
$foundation-palette: (
|
||||
primary: $debian-color,
|
||||
// primary: #2199e8,
|
||||
secondary: #777,
|
||||
success: #3adb76,
|
||||
warning: #ffae00,
|
||||
alert: #ec5840,
|
||||
);
|
||||
$light-gray: #e6e6e6;
|
||||
$medium-gray: #cacaca;
|
||||
$dark-gray: #8a8a8a;
|
||||
|
|
@ -75,6 +78,10 @@ $global-weight-normal: normal;
|
|||
$global-weight-bold: bold;
|
||||
$global-radius: 0;
|
||||
$global-text-direction: ltr;
|
||||
$global-flexbox: false;
|
||||
$print-transparent-backgrounds: true;
|
||||
|
||||
@include add-foundation-colors;
|
||||
|
||||
// 2. Breakpoints
|
||||
// --------------
|
||||
|
|
@ -185,9 +192,9 @@ $stat-font-size: 2.5rem;
|
|||
|
||||
$abide-inputs: true;
|
||||
$abide-labels: true;
|
||||
$input-background-invalid: $alert-color;
|
||||
$form-label-color-invalid: $alert-color;
|
||||
$input-error-color: $alert-color;
|
||||
$input-background-invalid: map-get($foundation-palette, alert);
|
||||
$form-label-color-invalid: map-get($foundation-palette, alert);
|
||||
$input-error-color: map-get($foundation-palette, alert);
|
||||
$input-error-font-size: rem-calc(12);
|
||||
$input-error-font-weight: $global-weight-bold;
|
||||
|
||||
|
|
@ -201,7 +208,7 @@ $accordion-item-background-hover: $light-gray;
|
|||
$accordion-item-padding: 1.25rem 1rem;
|
||||
$accordion-content-background: $white;
|
||||
$accordion-content-border: 1px solid $light-gray;
|
||||
$accordion-content-color: foreground($accordion-background, $primary-color);
|
||||
$accordion-content-color: foreground($accordion-content-background, $body-font-color);
|
||||
$accordion-content-padding: 1rem;
|
||||
|
||||
// 8. Accordion Menu
|
||||
|
|
@ -239,8 +246,8 @@ $button-margin: 0 0 $global-margin 0;
|
|||
$button-fill: solid;
|
||||
$button-background: $primary-color;
|
||||
$button-background-hover: scale-color($button-background, $lightness: -15%);
|
||||
$button-color: #fff;
|
||||
$button-color-alt: #000;
|
||||
$button-color: $white;
|
||||
$button-color-alt: $black;
|
||||
$button-radius: $global-radius;
|
||||
$button-sizes: (
|
||||
tiny: 0.6rem,
|
||||
|
|
@ -296,8 +303,7 @@ $drilldown-background: $white;
|
|||
$dropdown-padding: 1rem;
|
||||
$dropdown-border: 1px solid $medium-gray;
|
||||
$dropdown-font-size: 1rem;
|
||||
// $dropdown-width: 300px;
|
||||
$dropdown-width: 400px;
|
||||
$dropdown-width: 300px;
|
||||
$dropdown-radius: $global-radius;
|
||||
$dropdown-sizes: (
|
||||
tiny: 100px,
|
||||
|
|
@ -329,7 +335,7 @@ $fieldset-padding: rem-calc(20);
|
|||
$fieldset-margin: rem-calc(18 0);
|
||||
$legend-padding: rem-calc(0 3);
|
||||
$form-spacing: rem-calc(16);
|
||||
$helptext-color: #333;
|
||||
$helptext-color: $black;
|
||||
$helptext-font-size: rem-calc(13);
|
||||
$helptext-font-style: italic;
|
||||
$input-prefix-color: $black;
|
||||
|
|
@ -341,9 +347,10 @@ $form-label-font-size: rem-calc(14);
|
|||
$form-label-font-weight: $global-weight-normal;
|
||||
$form-label-line-height: 1.8;
|
||||
$select-background: $white;
|
||||
$select-triangle-color: #333;
|
||||
$select-triangle-color: $dark-gray;
|
||||
$select-radius: $global-radius;
|
||||
$input-color: $black;
|
||||
$input-placeholder-color: $medium-gray;
|
||||
$input-font-family: inherit;
|
||||
$input-font-size: rem-calc(16);
|
||||
$input-background: $white;
|
||||
|
|
@ -353,7 +360,7 @@ $input-border: 1px solid $medium-gray;
|
|||
$input-border-focus: 1px solid $dark-gray;
|
||||
$input-shadow: inset 0 1px 2px rgba($black, 0.1);
|
||||
$input-shadow-focus: 0 0 5px $medium-gray;
|
||||
$input-cursor-disabled: default;
|
||||
$input-cursor-disabled: not-allowed;
|
||||
$input-transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
|
||||
$input-number-spinners: true;
|
||||
$input-radius: $global-radius;
|
||||
|
|
@ -379,12 +386,23 @@ $mediaobject-image-width-stacked: 100%;
|
|||
|
||||
$menu-margin: 0;
|
||||
$menu-margin-nested: 1rem;
|
||||
//$menu-item-padding: 0.7rem 1rem;
|
||||
$menu-item-padding: 1.2rem 1rem;
|
||||
// $menu-item-padding: 0.7rem 1rem;
|
||||
$menu-item-padding: 0.5rem 1rem;
|
||||
$menu-item-color-active: $white;
|
||||
$menu-item-background-active: map-get($foundation-palette, primary);
|
||||
$menu-icon-spacing: 0.25rem;
|
||||
$menu-expand-max: 6;
|
||||
|
||||
// 23. Off-canvas
|
||||
// 23. Meter
|
||||
// ---------
|
||||
|
||||
$meter-height: 1rem;
|
||||
$meter-radius: $global-radius;
|
||||
$meter-background: $medium-gray;
|
||||
$meter-fill-good: $success-color;
|
||||
$meter-fill-medium: $warning-color;
|
||||
$meter-fill-bad: $alert-color;
|
||||
|
||||
// 24. Off-canvas
|
||||
// --------------
|
||||
|
||||
$offcanvas-size: 250px;
|
||||
|
|
@ -397,7 +415,7 @@ $offcanvas-exit-background: rgba($white, 0.25);
|
|||
$maincontent-class: 'off-canvas-content';
|
||||
$maincontent-shadow: 0 0 10px rgba($black, 0.5);
|
||||
|
||||
// 24. Orbit
|
||||
// 25. Orbit
|
||||
// ---------
|
||||
|
||||
$orbit-bullet-background: $medium-gray;
|
||||
|
|
@ -412,7 +430,7 @@ $orbit-control-background-hover: rgba($black, 0.5);
|
|||
$orbit-control-padding: 1rem;
|
||||
$orbit-control-zindex: 10;
|
||||
|
||||
// 25. Pagination
|
||||
// 26. Pagination
|
||||
// --------------
|
||||
|
||||
$pagination-font-size: rem-calc(14);
|
||||
|
|
@ -429,34 +447,33 @@ $pagination-ellipsis-color: $black;
|
|||
$pagination-mobile-items: false;
|
||||
$pagination-arrows: true;
|
||||
|
||||
// 26. Progress Bar
|
||||
// 27. Progress Bar
|
||||
// ----------------
|
||||
|
||||
// $progress-height: 1rem;
|
||||
$progress-height: 2rem;
|
||||
$progress-height: 1rem;
|
||||
$progress-background: $medium-gray;
|
||||
$progress-margin-bottom: $global-margin;
|
||||
$progress-meter-background: $primary-color;
|
||||
$progress-radius: $global-radius;
|
||||
|
||||
// 27. Reveal
|
||||
// 28. Reveal
|
||||
// ----------
|
||||
|
||||
$reveal-background: $white;
|
||||
$reveal-width: 600px;
|
||||
$reveal-max-width: $global-width;
|
||||
$reveal-offset: rem-calc(100);
|
||||
$reveal-padding: $global-padding;
|
||||
$reveal-border: 1px solid $medium-gray;
|
||||
$reveal-radius: $global-radius;
|
||||
$reveal-zindex: 1005;
|
||||
$reveal-overlay-background: rgba($black, 0.45);
|
||||
|
||||
// 28. Slider
|
||||
// 29. Slider
|
||||
// ----------
|
||||
|
||||
$slider-width-vertical: 0.5rem;
|
||||
$slider-transition: all 0.2s ease-in-out;
|
||||
$slider-height: 0.5rem;
|
||||
$slider-width-vertical: $slider-height;
|
||||
$slider-background: $light-gray;
|
||||
$slider-fill-background: $medium-gray;
|
||||
$slider-handle-height: 1.4rem;
|
||||
|
|
@ -464,9 +481,8 @@ $slider-handle-width: 1.4rem;
|
|||
$slider-handle-background: $primary-color;
|
||||
$slider-opacity-disabled: 0.25;
|
||||
$slider-radius: $global-radius;
|
||||
$slider-transition: all 0.2s ease-in-out;
|
||||
|
||||
// 29. Switch
|
||||
// 30. Switch
|
||||
// ----------
|
||||
|
||||
$switch-background: $medium-gray;
|
||||
|
|
@ -482,7 +498,7 @@ $switch-paddle-offset: 0.25rem;
|
|||
$switch-paddle-radius: $global-radius;
|
||||
$switch-paddle-transition: all 0.25s ease-out;
|
||||
|
||||
// 30. Table
|
||||
// 31. Table
|
||||
// ---------
|
||||
|
||||
$table-background: $white;
|
||||
|
|
@ -499,14 +515,13 @@ $table-foot-background: smart-scale($table-background, $table-color-scale);
|
|||
$table-head-font-color: $body-font-color;
|
||||
$show-header-for-stacked: false;
|
||||
|
||||
// 31. Tabs
|
||||
// 32. Tabs
|
||||
// --------
|
||||
|
||||
$tab-margin: 0;
|
||||
$tab-background: $white;
|
||||
$tab-background-active: $light-gray;
|
||||
$tab-border: $light-gray;
|
||||
$tab-item-color: foreground($tab-background, $primary-color);
|
||||
$tab-item-font-size: rem-calc(12);
|
||||
$tab-item-background-hover: $white;
|
||||
$tab-item-padding: 1.25rem 1.5rem;
|
||||
$tab-expand-max: 6;
|
||||
|
|
@ -515,18 +530,17 @@ $tab-content-border: $light-gray;
|
|||
$tab-content-color: foreground($tab-background, $primary-color);
|
||||
$tab-content-padding: 1rem;
|
||||
|
||||
// 32. Thumbnail
|
||||
// 33. Thumbnail
|
||||
// -------------
|
||||
|
||||
$thumbnail-border: solid 4px $white;
|
||||
$thumbnail-margin-bottom: $global-margin;
|
||||
$thumbnail-shadow: 0 0 0 1px rgba($black, 0.2);
|
||||
// $thumbnail-shadow-hover: 0 0 6px 1px rgba($primary-color, 0.5);
|
||||
$thumbnail-shadow-hover: 0 0 6px 3px rgba($primary-color, 0.5);
|
||||
$thumbnail-shadow-hover: 0 0 6px 1px rgba($primary-color, 0.5);
|
||||
$thumbnail-transition: box-shadow 200ms ease-out;
|
||||
$thumbnail-radius: $global-radius;
|
||||
|
||||
// 33. Title Bar
|
||||
// 34. Title Bar
|
||||
// -------------
|
||||
|
||||
$titlebar-background: $black;
|
||||
|
|
@ -537,7 +551,7 @@ $titlebar-icon-color: $white;
|
|||
$titlebar-icon-color-hover: $medium-gray;
|
||||
$titlebar-icon-spacing: 0.25rem;
|
||||
|
||||
// 34. Tooltip
|
||||
// 35. Tooltip
|
||||
// -----------
|
||||
|
||||
$has-tip-font-weight: $global-weight-bold;
|
||||
|
|
@ -548,43 +562,29 @@ $tooltip-padding: 0.75rem;
|
|||
$tooltip-font-size: $small-font-size;
|
||||
$tooltip-pip-width: 0.75rem;
|
||||
$tooltip-pip-height: $tooltip-pip-width * 0.866;
|
||||
$tooltip-pip-offset: 1.25rem;
|
||||
$tooltip-radius: $global-radius;
|
||||
|
||||
// 35. Top Bar
|
||||
// 36. Top Bar
|
||||
// -----------
|
||||
|
||||
$topbar-padding: 0.5rem;
|
||||
// $topbar-background: $light-gray;
|
||||
$topbar-background: #2e3436;
|
||||
$topbar-submenu-background: $topbar-background;
|
||||
$topbar-title-spacing: 1rem;
|
||||
$topbar-input-width: 200px;
|
||||
$topbar-unstack-breakpoint: medium;
|
||||
|
||||
// ---------------------------------------------------
|
||||
// -------------- debshots ---------------------------
|
||||
// ---------------------------------------------------
|
||||
|
||||
// Hover colors of links in top bar
|
||||
$topbar-link-bg-hover: $primary-color;
|
||||
$topbar-dropdown-link-bg-hover: $primary-color;
|
||||
|
||||
// Larger top bar
|
||||
// $topbar-height: rem-calc(60);
|
||||
// Larger font in top bar
|
||||
// $topbar-link-font-size: rem-calc(15);
|
||||
$topbar-padding: 0;
|
||||
// $topbar-button-font-size: rem-calc(3);
|
||||
// $topbar-button-top: rem-calc(5);
|
||||
|
||||
// $topbar-link-padding: rem-calc(8);
|
||||
|
||||
// At which width the top navigation bar should be switched to
|
||||
// mobile mode because otherwise it would wrap into two lines.
|
||||
$topbar-breakpoint: 800px;
|
||||
$topbar-media-query: "only screen and (min-width: #{$topbar-breakpoint})";
|
||||
|
||||
// Import Google font
|
||||
// @import url(//fonts.googleapis.com/css?family=Droid+Sans:400,700);
|
||||
// $topbar-breakpoint: 800px;
|
||||
// $topbar-media-query: "only screen and (min-width: #{$topbar-breakpoint})";
|
||||
|
||||
// Use fonts from out own site. Do not load from Google for privacy reasons.
|
||||
@font-face {
|
||||
|
|
@ -610,13 +610,6 @@ $button-font-tny: rem-calc(15);
|
|||
// Make the background of progress bars use a light version of the primary color
|
||||
$progress-bar-color: tint($primary-color, 80);
|
||||
|
||||
// Enable special grid and block-grid sizes for xlarge and xxlarge screens
|
||||
/*$include-xl-html-grid-classes: true;*/
|
||||
/*$include-xl-html-block-grid-classes: true;*/
|
||||
/*$row-width: 100%;*/
|
||||
|
||||
|
||||
|
||||
$page-background: #f2f2f2;
|
||||
$footer-background: #333333;
|
||||
$footer-text-color: #b3b3b3;
|
||||
|
|
@ -646,7 +639,7 @@ body
|
|||
}
|
||||
}
|
||||
|
||||
.top-bar-title
|
||||
.top-bar-left .sitename
|
||||
{
|
||||
// Display the site name in a larger font
|
||||
font-size: 26px;
|
||||
|
|
@ -660,10 +653,27 @@ body
|
|||
}
|
||||
}
|
||||
|
||||
header
|
||||
.top-bar-right .menu li a
|
||||
{
|
||||
padding-top: 1.3rem;
|
||||
padding-bottom: 1.3rem;
|
||||
}
|
||||
|
||||
.top-bar
|
||||
{
|
||||
// Draw a colored line below the navigation topbar
|
||||
border-bottom: 5px solid $debian_color;
|
||||
color: #8a8a8a;
|
||||
|
||||
a
|
||||
{
|
||||
color: #8a8a8a;
|
||||
}
|
||||
|
||||
a.active
|
||||
{
|
||||
color: #fefefe;
|
||||
}
|
||||
}
|
||||
|
||||
// ------- Footer - format as table cell to allow vertical centering
|
||||
|
|
@ -680,28 +690,28 @@ html, body {
|
|||
height: 100%;
|
||||
}
|
||||
|
||||
#footer
|
||||
{
|
||||
background-color: $footer-background;
|
||||
display: table;
|
||||
width: 100%;
|
||||
// #footer
|
||||
// {
|
||||
// background-color: $footer-background;
|
||||
// display: table;
|
||||
// width: 100%;
|
||||
|
||||
p
|
||||
{
|
||||
display: table-cell;
|
||||
padding: 5px 20px;
|
||||
color: $footer-text-color;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
font-size: 100%;
|
||||
}
|
||||
// p
|
||||
// {
|
||||
// display: table-cell;
|
||||
// padding: 5px 20px;
|
||||
// color: $footer-text-color;
|
||||
// vertical-align: middle;
|
||||
// text-align: center;
|
||||
// font-size: 100%;
|
||||
// }
|
||||
|
||||
a
|
||||
{
|
||||
color: $footer-text-color;
|
||||
font-weight: bolder;
|
||||
}
|
||||
}
|
||||
// a
|
||||
// {
|
||||
// color: $footer-text-color;
|
||||
// font-weight: bolder;
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
// Leave some room after the topbar
|
||||
|
|
@ -710,37 +720,9 @@ html, body {
|
|||
padding-top: 5px;
|
||||
}
|
||||
|
||||
// Screenshot thumbnail image with name and description
|
||||
// .thumbnail
|
||||
// {
|
||||
// padding-top: 5px !important;
|
||||
// padding-bottom: 5px !important;
|
||||
// border-radius: 10px;
|
||||
// margin-bottom: 10px;
|
||||
// text-align: center;
|
||||
// line-height: 120%;
|
||||
|
||||
// &:hover
|
||||
// {
|
||||
// background-color: #d0d0d0;
|
||||
// }
|
||||
|
||||
// .pkgname
|
||||
// {
|
||||
// font-weight: 700;
|
||||
// }
|
||||
// .pkgdescription
|
||||
// {
|
||||
// font-size: 80%;
|
||||
// }
|
||||
// }
|
||||
|
||||
.grid-thumbnails .column
|
||||
{
|
||||
// border: 5px solid green;
|
||||
border-radius: 10px;
|
||||
// border: 2px solid $light-gray;
|
||||
// height: 300px;
|
||||
padding: 5px 5px 50px 5px;
|
||||
text-align: center;
|
||||
}
|
||||
|
|
@ -797,14 +779,6 @@ html, body {
|
|||
}
|
||||
}
|
||||
|
||||
// .row .gridview
|
||||
// {
|
||||
// img.screenshot
|
||||
// {
|
||||
// width: 100%;
|
||||
// }
|
||||
// }
|
||||
|
||||
.pkgname
|
||||
{
|
||||
font-size: 130%;
|
||||
|
|
@ -813,35 +787,6 @@ html, body {
|
|||
line-height: 120%;
|
||||
}
|
||||
|
||||
|
||||
/*.pkgdetails
|
||||
{
|
||||
.description
|
||||
{
|
||||
font-size: 150%;
|
||||
color: #808080;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.longdescription
|
||||
{
|
||||
font-size: 90%;
|
||||
line-height: 120%;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
.rating
|
||||
{
|
||||
padding-top: 5px;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
.commentcount
|
||||
{
|
||||
padding-left: 20px;
|
||||
}
|
||||
}
|
||||
*/
|
||||
.grid-thumbnail
|
||||
{
|
||||
// Pretend that all thumbnails are 120 pixels high to align the captions properly
|
||||
|
|
@ -859,6 +804,20 @@ a.black
|
|||
color: #808080;
|
||||
}
|
||||
|
||||
.bigpanel
|
||||
{
|
||||
background-color: $light-gray;
|
||||
border-radius: 10px;
|
||||
padding: 1em 1em 0.1em 1em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.subtitle
|
||||
{
|
||||
font-size: 120%;
|
||||
color: #808080;
|
||||
}
|
||||
|
||||
.packagepage
|
||||
{
|
||||
h1
|
||||
|
|
@ -866,11 +825,6 @@ a.black
|
|||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.subtitle
|
||||
{
|
||||
font-size: 120%;
|
||||
color: #808080;
|
||||
}
|
||||
|
||||
/* Description of a screenshot (e.g. the situation when the screenshot was taken) */
|
||||
.imgcaption
|
||||
|
|
@ -887,13 +841,6 @@ a.black
|
|||
color: #808080;
|
||||
}
|
||||
|
||||
.bigpanel
|
||||
{
|
||||
background-color: $light-gray;
|
||||
border-radius: 10px;
|
||||
padding: 1em 1em 0.1em 1em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.comment
|
||||
{
|
||||
|
|
@ -934,28 +881,6 @@ a.black
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// .ratingbar
|
||||
// {
|
||||
// background-color: $progress-bar-color;
|
||||
// width: 10em;
|
||||
// display: inline-block;
|
||||
// padding: 2px;
|
||||
// text-align: left;
|
||||
// color: white;
|
||||
// text-transform: uppercase;
|
||||
// font-size: 0.8em;
|
||||
// font-weight: bolder;
|
||||
|
||||
// .meter
|
||||
// {
|
||||
// background-color: $primary-color;
|
||||
// padding: 2px;
|
||||
// padding-left: 0.4em;
|
||||
// text-shadow: 0 0 2px black;
|
||||
// }
|
||||
// }
|
||||
|
||||
/* Properties of a screenshot - shown in details view */
|
||||
.property-title
|
||||
{
|
||||
|
|
@ -973,5 +898,18 @@ a.black
|
|||
.description-verbatim-lines
|
||||
{
|
||||
line-height: 120%;
|
||||
// white-space: pre-line;
|
||||
}
|
||||
|
||||
/* Hide the file upload button to just show the styleable label */
|
||||
/* display: none will not work - this is the workaround */
|
||||
.hidden-inputfile {
|
||||
width: 0.1px;
|
||||
height: 0.1px;
|
||||
opacity: 0;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
z-index: -1;
|
||||
}
|
||||
.inputfile + label {
|
||||
cursor: pointer; /* "hand" cursor */
|
||||
}
|
||||
|
|
@ -16,33 +16,34 @@
|
|||
@include foundation-forms;
|
||||
@include foundation-visibility-classes;
|
||||
@include foundation-float-classes;
|
||||
// @include foundation-accordion;
|
||||
// @include foundation-accordion-menu;
|
||||
@include foundation-accordion;
|
||||
@include foundation-accordion-menu;
|
||||
@include foundation-badge;
|
||||
@include foundation-breadcrumbs;
|
||||
@include foundation-button-group;
|
||||
@include foundation-callout;
|
||||
// @include foundation-close-button;
|
||||
// @include foundation-drilldown-menu;
|
||||
@include foundation-close-button;
|
||||
@include foundation-drilldown-menu;
|
||||
@include foundation-dropdown;
|
||||
// @include foundation-dropdown-menu;
|
||||
// @include foundation-flex-video;
|
||||
@include foundation-dropdown-menu;
|
||||
@include foundation-flex-video;
|
||||
@include foundation-label;
|
||||
// @include foundation-media-object;
|
||||
@include foundation-media-object;
|
||||
@include foundation-menu;
|
||||
// @include foundation-off-canvas;
|
||||
// @include foundation-orbit;
|
||||
@include foundation-menu-icon;
|
||||
@include foundation-off-canvas;
|
||||
@include foundation-orbit;
|
||||
@include foundation-pagination;
|
||||
@include foundation-progress-bar;
|
||||
// @include foundation-slider;
|
||||
// @include foundation-sticky;
|
||||
@include foundation-slider;
|
||||
@include foundation-sticky;
|
||||
@include foundation-reveal;
|
||||
// @include foundation-switch;
|
||||
// @include foundation-table;
|
||||
// @include foundation-tabs;
|
||||
@include foundation-switch;
|
||||
@include foundation-table;
|
||||
@include foundation-tabs;
|
||||
@include foundation-thumbnail;
|
||||
@include foundation-title-bar;
|
||||
// @include foundation-tooltip;
|
||||
@include foundation-tooltip;
|
||||
@include foundation-top-bar;
|
||||
|
||||
// If you'd like to include motion-ui the foundation-rails gem comes prepackaged with it, uncomment the 3 @imports, if you are not using the gem you need to install the motion-ui sass package.
|
||||
|
|
|
|||
|
|
@ -2,6 +2,13 @@ class LogsController < ApplicationController
|
|||
before_action :authenticate_user!
|
||||
|
||||
def index
|
||||
@logs = Log.paginate(page: params[:page], per_page: 20)
|
||||
logs = Log
|
||||
|
||||
if params[:search].present?
|
||||
logger.debug "Searching for #{params[:search]}"
|
||||
logs = logs.where("message ilike ?", "%#{params[:search]}%")
|
||||
end
|
||||
|
||||
@logs = logs.paginate(page: params[:page], per_page: 20)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@ class WelcomeController < ApplicationController
|
|||
@newest_upload = Screenshot.newest_upload
|
||||
|
||||
# TODO: Use the actually most popular package and not just a random one
|
||||
@most_popular_package = Package.with_screenshots.first
|
||||
@most_popular_package = Package.order(:visits).last
|
||||
|
||||
@package_count = Package.count
|
||||
|
||||
@most_wanted = Package.without_screenshots_most_visits.first
|
||||
@most_wanted_package = Package.without_screenshots_most_visits.first
|
||||
end
|
||||
|
||||
def about
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
require 'pry'
|
||||
# require 'pry'
|
||||
|
||||
class Log < ApplicationRecord
|
||||
validates :message, presence: true
|
||||
|
|
@ -26,6 +26,6 @@ class Log < ApplicationRecord
|
|||
log.token = token
|
||||
logger.error "Could not log to database - validation errors: #{log.errors.to_a}" unless log.valid?
|
||||
log.save
|
||||
log
|
||||
# log
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,16 +0,0 @@
|
|||
<h2>Resend confirmation instructions</h2>
|
||||
|
||||
<%= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f| %>
|
||||
<%= devise_error_messages! %>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :email %><br />
|
||||
<%= f.email_field :email, autofocus: true, value: (resource.pending_reconfirmation? ? resource.unconfirmed_email : resource.email) %>
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
<%= f.submit "Resend confirmation instructions" %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<%= render "devise/shared/links" %>
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
<p>Welcome <%= @email %>!</p>
|
||||
|
||||
<p>You can confirm your account email through the link below:</p>
|
||||
|
||||
<p><%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %></p>
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
<p>Hello <%= @resource.email %>!</p>
|
||||
|
||||
<p>We're contacting you to notify you that your password has been changed.</p>
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
<p>Hello <%= @resource.email %>!</p>
|
||||
|
||||
<p>Someone has requested a link to change your password. You can do this through the link below.</p>
|
||||
|
||||
<p><%= link_to 'Change my password', edit_password_url(@resource, reset_password_token: @token) %></p>
|
||||
|
||||
<p>If you didn't request this, please ignore this email.</p>
|
||||
<p>Your password won't change until you access the link above and create a new one.</p>
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
<p>Hello <%= @resource.email %>!</p>
|
||||
|
||||
<p>Your account has been locked due to an excessive number of unsuccessful sign in attempts.</p>
|
||||
|
||||
<p>Click the link below to unlock your account:</p>
|
||||
|
||||
<p><%= link_to 'Unlock my account', unlock_url(@resource, unlock_token: @token) %></p>
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
<h2>Change your password</h2>
|
||||
|
||||
<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| %>
|
||||
<%= devise_error_messages! %>
|
||||
<%= f.hidden_field :reset_password_token %>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :password, "New password" %><br />
|
||||
<% if @minimum_password_length %>
|
||||
<em>(<%= @minimum_password_length %> characters minimum)</em><br />
|
||||
<% end %>
|
||||
<%= f.password_field :password, autofocus: true, autocomplete: "off" %>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :password_confirmation, "Confirm new password" %><br />
|
||||
<%= f.password_field :password_confirmation, autocomplete: "off" %>
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
<%= f.submit "Change my password" %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<%= render "devise/shared/links" %>
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<h2>Forgot your password?</h2>
|
||||
|
||||
<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %>
|
||||
<%= devise_error_messages! %>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :email %><br />
|
||||
<%= f.email_field :email, autofocus: true %>
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
<%= f.submit "Send me reset password instructions" %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<%= render "devise/shared/links" %>
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
<h2>Edit <%= resource_name.to_s.humanize %></h2>
|
||||
|
||||
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
|
||||
<%= devise_error_messages! %>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :email %><br />
|
||||
<%= f.email_field :email, autofocus: true %>
|
||||
</div>
|
||||
|
||||
<% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
|
||||
<div>Currently waiting confirmation for: <%= resource.unconfirmed_email %></div>
|
||||
<% end %>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
|
||||
<%= f.password_field :password, autocomplete: "off" %>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :password_confirmation %><br />
|
||||
<%= f.password_field :password_confirmation, autocomplete: "off" %>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
|
||||
<%= f.password_field :current_password, autocomplete: "off" %>
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
<%= f.submit "Update" %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<h3>Cancel my account</h3>
|
||||
|
||||
<p>Unhappy? <%= button_to "Cancel my account", registration_path(resource_name), data: { confirm: "Are you sure?" }, method: :delete %></p>
|
||||
|
||||
<%= link_to "Back", :back %>
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
<h2>Sign up</h2>
|
||||
|
||||
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
|
||||
<%= devise_error_messages! %>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :email %><br />
|
||||
<%= f.email_field :email, autofocus: true %>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :password %>
|
||||
<% if @minimum_password_length %>
|
||||
<em>(<%= @minimum_password_length %> characters minimum)</em>
|
||||
<% end %><br />
|
||||
<%= f.password_field :password, autocomplete: "off" %>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :password_confirmation %><br />
|
||||
<%= f.password_field :password_confirmation, autocomplete: "off" %>
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
<%= f.submit "Sign up" %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<%= render "devise/shared/links" %>
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
<%- if controller_name != 'sessions' %>
|
||||
<%= link_to "Log in", new_session_path(resource_name) %><br />
|
||||
<% end -%>
|
||||
|
||||
<%- if devise_mapping.registerable? && controller_name != 'registrations' %>
|
||||
<%= link_to "Sign up", new_registration_path(resource_name) %><br />
|
||||
<% end -%>
|
||||
|
||||
<%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %>
|
||||
<%= link_to "Forgot your password?", new_password_path(resource_name) %><br />
|
||||
<% end -%>
|
||||
|
||||
<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
|
||||
<%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %><br />
|
||||
<% end -%>
|
||||
|
||||
<%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
|
||||
<%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %><br />
|
||||
<% end -%>
|
||||
|
||||
<%- if devise_mapping.omniauthable? %>
|
||||
<%- resource_class.omniauth_providers.each do |provider| %>
|
||||
<%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider) %><br />
|
||||
<% end -%>
|
||||
<% end -%>
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<h2>Resend unlock instructions</h2>
|
||||
|
||||
<%= form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f| %>
|
||||
<%= devise_error_messages! %>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :email %><br />
|
||||
<%= f.email_field :email, autofocus: true %>
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
<%= f.submit "Resend unlock instructions" %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<%= render "devise/shared/links" %>
|
||||
|
|
@ -1,38 +1,39 @@
|
|||
header
|
||||
nav.top-bar
|
||||
.row
|
||||
.top-bar
|
||||
.top-bar-title
|
||||
// TODO: Make the logo depend on the virtual host
|
||||
img src="/images/logos/debian.svg" width="35" alt="Debian logo"
|
||||
// TODO: Use proper distribution name
|
||||
'Debian Screenshots >
|
||||
.top-bar-left
|
||||
ul.menu
|
||||
li.menu.sitename
|
||||
a href='/'
|
||||
// TODO: Make the logo depend on the virtual host
|
||||
img src="/images/logos/debian.svg" width="35" alt="Debian logo"
|
||||
// TODO: Use proper distribution name
|
||||
' Debian Screenshots >
|
||||
|
||||
.top-bar-right
|
||||
ul.menu
|
||||
li class=('active' if controller_name=='welcome' and action_name=='home')
|
||||
a href="/" Home
|
||||
li class=('active' if controller_name=='packages')
|
||||
a href="/packages" Explore
|
||||
//li.has-dropdown
|
||||
//a href="#" Distributions
|
||||
//ul.dropdown
|
||||
//// TODO: Use proper distribution list
|
||||
//li
|
||||
//a href="#" Debian
|
||||
//li
|
||||
//a href="#" Ubuntu
|
||||
li class=('active' if controller_name=='welcome' and action_name=='about')
|
||||
a href="/about" About
|
||||
li.divider
|
||||
// TODO: Check correct classes in Zurb/Foundation for top bar!
|
||||
.top-bar-right
|
||||
ul.dropdown.menu data-dropdown-menu=true
|
||||
li class=('active' if controller_name=='welcome' and action_name=='home')
|
||||
a href="/" Home
|
||||
li class=('active' if controller_name=='packages')
|
||||
a href="/packages" Explore
|
||||
//li.has-dropdown
|
||||
//a href="#" Distributions
|
||||
//ul.dropdown
|
||||
//// TODO: Use proper distribution list
|
||||
//li
|
||||
//a href="#" Debian
|
||||
//li
|
||||
//a href="#" Ubuntu
|
||||
li class=('active' if controller_name=='welcome' and action_name=='about')
|
||||
a href="/about" About
|
||||
// TODO: Check correct classes in Zurb/Foundation for top bar!
|
||||
- if user_signed_in?
|
||||
li
|
||||
a href='#' Admin
|
||||
ul.menu.vertical
|
||||
li = link_to 'Moderate', moderate_path
|
||||
li = link_to 'Logs', logs_path
|
||||
li
|
||||
- if user_signed_in?
|
||||
li.has-dropdown
|
||||
a href='#' Admin
|
||||
ul.dropdown
|
||||
li = link_to 'Moderate', moderate_path
|
||||
li = link_to 'Logs', logs_path
|
||||
li.has-form
|
||||
- if user_signed_in?
|
||||
= link_to "#{current_user.email} (Logout)", destroy_user_session_path, :method => :delete
|
||||
- else
|
||||
= link_to 'Login', new_user_session_path
|
||||
= link_to "#{current_user.email} (Logout)", destroy_user_session_path, :method => :delete
|
||||
- else
|
||||
= link_to 'Login', new_user_session_path
|
||||
|
|
|
|||
|
|
@ -6,7 +6,8 @@
|
|||
|
||||
.small-6.medium-4.large-3.columns
|
||||
// Search form
|
||||
= render 'packages/searchfield'
|
||||
= form_tag url_for, :method=>'GET'
|
||||
= text_field_tag(:search, params[:search], placeholder: "Search...", maxlength: 50, size: 20, autofocus: true)
|
||||
|
||||
// List of log messages
|
||||
.row
|
||||
|
|
@ -20,7 +21,7 @@
|
|||
th =log.created_at
|
||||
th =log.message
|
||||
- else
|
||||
p No logs. Crazy.
|
||||
p No logs found. Crazy.
|
||||
|
||||
// Second paginator at the bottom so the user does not have to scroll up again
|
||||
// Second paginator at the bottom so the user does not have to scroll up again
|
||||
= render 'logs/paginator'
|
||||
|
|
|
|||
|
|
@ -4,9 +4,10 @@
|
|||
- if @package
|
||||
|
||||
// Progress bar
|
||||
.progress.warning role="progressbar" tabindex="0"
|
||||
span.progress-meter style="width: #{@percent_moderated}%"
|
||||
p.progress-meter-text #{@percent_moderated}%
|
||||
// TODO: Calculation for the progress bar is currently wrong
|
||||
/ .progress.warning role="progressbar" tabindex="0"
|
||||
/ span.progress-meter style="width: #{@percent_moderated}%"
|
||||
/ p.progress-meter-text #{@percent_moderated}%
|
||||
|
||||
h2 Package: #{@package.name}
|
||||
p =@package.description
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
' Please help extend the collection of screenshots.
|
||||
' Just make a screenshot and upload it here. You don't
|
||||
' need to register or anything.
|
||||
a.button.small.expand data-open="upload-modal" Upload now
|
||||
a.button.small.expand href=upload_path(pkg.name) Upload now
|
||||
|
||||
// homepage
|
||||
- if pkg.homepage.present?
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@
|
|||
.small-5.medium-5.columns
|
||||
= render(partial: 'details_rightbox', locals: {pkg: @package})
|
||||
|
||||
= render(partial: 'details_uploadmodal')
|
||||
/ = render(partial: 'details_uploadmodal')
|
||||
|
||||
javascript:
|
||||
$( function() {
|
||||
|
|
|
|||
|
|
@ -1,85 +1,74 @@
|
|||
.row.packagepage
|
||||
.small-12.columns
|
||||
h1 = "Upload a new screenshot for #{@package.name}>"
|
||||
.row
|
||||
h1 = "Upload a screenshot for #{@package.name}"
|
||||
|
||||
.row
|
||||
.small-7.columns
|
||||
p.subtitle = @package.description
|
||||
p
|
||||
' You are about to upload a screenshot for the #{@package.name}
|
||||
' package. Thanks for your contribution.
|
||||
- if @package.screenshots.any?
|
||||
p
|
||||
' Just for your information - these screenshots have already been uploaded.
|
||||
|
||||
.row.packagepage
|
||||
.small-12.medium-7.large-8.columns
|
||||
// First row contains the upload form
|
||||
.row
|
||||
.small-6.columns
|
||||
//input id="fileupload" type="file" name="files[]" data-url=upload_image_path(name: @package.name) multiple=true
|
||||
.small-up-1.medium-up-3.large-up-4.grid-thumbnails
|
||||
- @package.screenshots.all.each do |ss|
|
||||
a.black.fancybox href=ss.image.url(:large, timestamp: false) rel='fancybox-thumb' title=ss.caption
|
||||
= image_tag(ss.image.url(:thumb, timestamp: false), alt: ss.caption, class: 'thumbnail')
|
||||
|
||||
//= form_for @new_screenshot, :url => upload_image_path, :html => { :multipart => true } do |form|
|
||||
// = form.file_field :image
|
||||
// = form.submit 'Save'
|
||||
= form_tag(upload_image_path, multipart: true)
|
||||
= file_field_tag('image')
|
||||
= submit_tag
|
||||
// = render partial: 'packages/grid_thumbnail', locals: { pkg: pkg }
|
||||
|
||||
- else
|
||||
' There are no screenshots yet for #{@package.name}.
|
||||
|
||||
= form_tag(upload_image_path, multipart: true)
|
||||
|
||||
//a.button.radius.expand href=upload_package_by_name_path(name: @package.name)
|
||||
//' Click or drag a PNG screenshot file here
|
||||
.small-6.columns
|
||||
' Form
|
||||
- @package.screenshots.each do |screenshot|
|
||||
.row
|
||||
img src=screenshot.image.url(:large, timestamp: false, alt: screenshot.caption)
|
||||
= link_to "Delete screenshot", delete_screenshot_path(@package.name, screenshot.id), onclick: "return confirm('Really delete the screenshot?');"
|
||||
.small-6.columns
|
||||
input.hidden-inputfile type="file" name="file" id="file" multiple=true
|
||||
label for="file"
|
||||
a.button id="file-select-button"
|
||||
= fa_stacked_icon "image", base: "circle-thin"
|
||||
span id="file-label"
|
||||
' Select screenshot files
|
||||
|
||||
// - @package.screenshots.each do |screenshot|
|
||||
// .listview
|
||||
// a.black.fancybox href=screenshot.image.url(:large, timestamp: false) rel='fancybox-thumb' title=screenshot.caption
|
||||
// = image_tag(screenshot.image.url(:large, timestamp: false), alt: screenshot.caption)
|
||||
// .imgcaption
|
||||
// => screenshot.caption
|
||||
// - if screenshot.uploader
|
||||
// | (Uploaded by
|
||||
// =< screenshot.uploader
|
||||
// | )
|
||||
.small-6.columns
|
||||
button.button type="submit" id="file-submit"
|
||||
= fa_stacked_icon "upload", base: "circle-thin"
|
||||
' Start upload
|
||||
|
||||
.small-12.medium-5.large-4.columns
|
||||
.bigpanel
|
||||
p Thanks for uploading more screenshots. Please note:
|
||||
ul
|
||||
li
|
||||
' Screenshots are made public and can freely be used by anyone.
|
||||
li
|
||||
' Your screenshots must be in PNG format.
|
||||
li
|
||||
' Images larger than 800x600 pixels will automatically be reduced.
|
||||
' So don't try to put too much detail on a screenshot.
|
||||
li
|
||||
' Your screenshot should contain a typical scene when working with it.
|
||||
li
|
||||
' Nice tools for taking screenshots are shutter, ksnapshot (KDE),
|
||||
' gimp, xwd or scrot. See the
|
||||
a href='http://wiki.debian.org/ScreenShots' Debian wiki
|
||||
' for more information on how to make screenshots under Debian.
|
||||
li
|
||||
' Please set your language to english so that everybody understands it.
|
||||
' If you don't use english by default please start your application
|
||||
' from a shell using after setting "export LANG=C".
|
||||
li
|
||||
' Please only take a screenshot of the respective application and not of
|
||||
' your whole desktop (unless the screenshot is meant for a window manager).
|
||||
li
|
||||
' If you are not logged in or lack the reputation then your screenshot
|
||||
' may need to be approved by the moderators first.
|
||||
|
||||
//ul.small-block-grid-1.medium-block-grid-2.large-block-grid-2
|
||||
// - for screenshot in @package.screenshots
|
||||
// li
|
||||
// a.black.fancybox href=screenshot.url('large') rel='fancybox-thumb' title=screenshot.caption
|
||||
// img src=screenshot.url('large')
|
||||
// .imgcaption =screenshot.caption
|
||||
//
|
||||
.small-5.columns.bigpanel
|
||||
p.subtitle Your upload…
|
||||
ul
|
||||
li
|
||||
' should contain a typical scene when working with it.
|
||||
li
|
||||
' should show the actual application and not just
|
||||
' your whole desktop (unless the screenshot is meant for a window manager).
|
||||
li
|
||||
' must be in PNG format.
|
||||
li
|
||||
' can be multiple images at once.
|
||||
li
|
||||
' needs to be approved by the moderators first before it is publicly visible.
|
||||
li
|
||||
' will be reduced if it is lager than 800x600 pixels.
|
||||
' So don't try to capture too much detail in a screenshot. It may become
|
||||
' unreadable. Shrink the applications window if possible.
|
||||
li
|
||||
' will be made public and can freely be used by anyone.
|
||||
li
|
||||
' can be taken by screenshot tools like shutter, ksnapshot (KDE),
|
||||
' gimp, xwd or scrot. See the
|
||||
a href='http://wiki.debian.org/ScreenShots' Debian wiki
|
||||
' for more information on how to make screenshots under Debian.
|
||||
li
|
||||
' should preferably show the application in english.
|
||||
' If you don't use english by default please start your application
|
||||
' from a shell using after setting "export LANG=C".
|
||||
|
||||
//javascript:
|
||||
// $('#fileupload').fileupload({
|
||||
// dataType: 'json',
|
||||
// done: function (e, data) {
|
||||
// $.each(data.result.files, function (index, file) {
|
||||
// $('<p/>').text(file.name).appendTo(document.body);
|
||||
// });
|
||||
// }
|
||||
// });
|
||||
javascript:
|
||||
// Hide the submit button unless images are selected for upload
|
||||
$(document).ready(upload_form_init);
|
||||
// TODO: Move into javascripts/packages/upload...
|
||||
|
|
|
|||
|
|
@ -24,12 +24,8 @@
|
|||
|
||||
div.row
|
||||
hr
|
||||
|
||||
div.row
|
||||
div.large-4.medium-12.small-12.columns.text-center
|
||||
h2 Newest upload
|
||||
// TODO: load actual newest upload and cache it
|
||||
// TODO: link to the package page
|
||||
a.black href=package_path(@newest_upload.package.name)
|
||||
= image_tag(@newest_upload.image.url(:large, timestamp: false), alt: @newest_upload.caption)
|
||||
p
|
||||
|
|
@ -40,8 +36,6 @@ div.row
|
|||
=@newest_upload.package.description
|
||||
div.large-4.medium-12.small-12.columns.text-center
|
||||
h2 Most popular
|
||||
// TODO: load actual most popular package and highest-rated screenshot and cache it
|
||||
// TODO: link to the package page
|
||||
a.black href=package_path(@most_popular_package.name)
|
||||
img src=@most_popular_package.screenshots.first.image.url(:large, timestamp: false)
|
||||
p
|
||||
|
|
@ -52,10 +46,9 @@ div.row
|
|||
=@most_popular_package.description
|
||||
div.large-4.medium-12.small-12.columns.text-center
|
||||
h2 Your help needed
|
||||
// TODO: load actual most popular package without a screenshot and cache it
|
||||
a href=upload_package_by_name_path('firefox')
|
||||
a href=upload_package_by_name_path(@most_wanted_package.name)
|
||||
img src="/images/dummy/no-screenshots-upload-one.svg" width="80%"
|
||||
p
|
||||
' We lack a screenshot for the Firefox package. Can you
|
||||
a href=upload_package_by_name_path('firefox') provide one
|
||||
' We lack a screenshot for the #{@most_wanted_package.name} package. Can you
|
||||
a href=package_path(@most_wanted_package.name) provide one
|
||||
' ?
|
||||
|
|
|
|||
|
|
@ -18,9 +18,9 @@ Debshots::Application.routes.draw do
|
|||
get 'logs' => 'logs#index'
|
||||
get 'package/:name' => 'packages#details', as: :package, name: /[^\/]+/
|
||||
get 'package_reviews/:name' => 'packages#reviews', as: :package_reviews, name: /[^\/]+/
|
||||
get 'upload', to: redirect('/packages') # legacy upload form
|
||||
get 'upload', to: redirect('/packages'), as: :upload_legacy # legacy upload form
|
||||
post 'uploadfile' => 'packages#legacy_uploadfile'
|
||||
get 'upload/:name' => 'packages#upload', as: :upload_package_by_name
|
||||
get 'upload/:name' => 'packages#upload', as: :upload
|
||||
post 'upload_image/:name' => 'packages#upload_image', as: :upload_image, name: /[^\/]+/
|
||||
# TODO: "get" is probably the wrong method to delete a screenshot
|
||||
get 'delete_screenshot/:id' => 'packages#delete_screenshot', as: :delete_screenshot
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue