Rafał Pitoń 11 лет назад
Родитель
Сommit
0dee3f6daf

+ 31 - 0
README.md

@@ -16,6 +16,7 @@ The secondary goal is making Misago a viable foundation for building and maintai
 Finally, while Misago is built using Django, it's not a "Django application" and it won't integrate with existing Django projects. This is the result of a design decision to use custom users/session/auth/permissions functionality instead of native Django applications - however, in the future Misago will provide a web API allowing you to add Misago-powered features to your website and/or application.
 
 
+<<<<<<< HEAD
 Requirements
 ------------
 
@@ -26,15 +27,23 @@ Requirements
 * Pillow Imaging Library for Python
 
 
+=======
+>>>>>>> master
 Dependencies
 ------------
 
 * [Django](http://djangoproject.com)
 * [Django Debug Toolbar](https://github.com/django-debug-toolbar/django-debug-toolbar)
+<<<<<<< HEAD
 * [Django-floppyforms](https://github.com/brutasse/django-floppyforms)
 * [Django Haystack 2](http://haystacksearch.org/)
 * [Django-Jina](https://github.com/niwibe/django-jinja)
 * [Django-MPTT](https://github.com/django-mptt/django-mptt)
+=======
+* [Django-MPTT](https://github.com/django-mptt/django-mptt)
+* [Coffin](https://github.com/coffin/coffin)
+* [Django Haystack 2](http://haystacksearch.org/)
+>>>>>>> master
 * [Jinja2](https://github.com/mitsuhiko/jinja2)
 * [Markdown](http://pypi.python.org/pypi/Markdown)
 * [path](http://pypi.python.org/pypi/path.py)
@@ -73,8 +82,13 @@ sudo python manage.py runserver 192.168.33.10:80 # Private network address as pe
 
 Now navigate to [192.168.33.10](http://192.168.33.10) in your browser of choice to find your forums all set up and ready for testing and development. Puppet will have taken care of bootstrapping your Misago installation with a database, some dummy content and an admin user with the following credentials:
 
+<<<<<<< HEAD
 __Username__: Admin
 __Email__: admin@example.com
+=======
+__Username__: Admin  
+__Email__: admin@example.com  
+>>>>>>> master
 __Password__: password
 
 Be aware that the defualt configuration doesn't contain anything besides the bare-minimum for Misago to run - this meaning that things like an SMTP server will have to added manually if you wish to test Misago's email features.
@@ -87,10 +101,17 @@ Misago comes with the "deployment" Python module that contains an empty Misago c
 
 After you set low-level configuration of Misago ([`deployment/settings.py`](deployment/settings.py)), fire the following commands on manage.py through the Python executable:
 
+<<<<<<< HEAD
 * `startmisago [--quiet]`
   Creates the DB structure for Misago and populates it with default data
 * `adduser [--admin] <username> <email> <password>`
   Adds a new user to the database.
+=======
+* `startmisago [--quiet]`  
+  Creates the DB structure for Misago and populates it with default data
+* `adduser [--admin] <username> <email> <password>`  
+  Adds a new user to the database.  
+>>>>>>> master
   Make sure to do something like `adduser Admin admin@example.com password --admin` to add an admin user when you first setup your forums.
 
 Misago stands on shoulders of Django and Django documentation covers deployment of apps extensively: https://docs.djangoproject.com/en/dev/howto/deployment/
@@ -105,6 +126,11 @@ Updating
 
 You can use the `updatemisago` command to update your forums database to latest version _unless_ you are updating from `0.1` which is incompatibile with `0.2` and later releases.
 
+<<<<<<< HEAD
+=======
+Support for migrations from `0.1` has been dropped with `0.3` release.
+
+>>>>>>> master
 
 Contributing
 ------------
@@ -127,8 +153,13 @@ Authors
 Copyright and license
 ---------------------
 
+<<<<<<< HEAD
 > __Misago__ - Copyright © 2013 [Rafał Pitoń](http://github.com/ralfp)
 > This program comes with ABSOLUTELY NO WARRANTY.
+=======
+> __Misago__ - Copyright © 2013 [Rafał Pitoń](http://github.com/ralfp)  
+> This program comes with ABSOLUTELY NO WARRANTY.  
+>>>>>>> master
 > This is free software and you are welcome to redistribute it under the conditions described in the license.
 >
 > For the complete license, refer to [LICENSE.md](LICENSE.md)

+ 7 - 0
cron.txt

@@ -1,6 +1,9 @@
 0 3 * * * python $HOME/misago/manage.py clearalerts
 0 3 * * * python $HOME/misago/manage.py clearattempts
+<<<<<<< HEAD
 0 3 * * * python $HOME/misago/manage.py pruneattachments
+=======
+>>>>>>> master
 0 */4 * * * python $HOME/misago/manage.py clearsessions
 20 3 * * * python $HOME/misago/manage.py cleartokens
 15 3 * * * python $HOME/misago/manage.py cleartracker
@@ -10,6 +13,10 @@
 10 3 * * * python $HOME/misago/manage.py updateranking
 25 3 * * * python $HOME/misago/manage.py updatethreadranking
 */30 * * * * python $HOME/misago/manage.py countreports
+<<<<<<< HEAD
 0 */2 * * * python $HOME/misago/manage.py update_index --age=3
+=======
+* */2 * * * python $HOME/misago/manage.py update_index --age=2
+>>>>>>> master
 # Uncomment next line for heartbeat cron
 #*/3 * * * * python $HOME/misago/heartbeat.py deployment.settings --log=heartbeats.txt

+ 19 - 0
deployment/settings.py

@@ -16,7 +16,11 @@ BOARD_ADDRESS = 'http://somewhere.com'
 ADMIN_PATH = 'admincp'
 
 # System admins
+<<<<<<< HEAD
 # Enter every god admin using following pattern:
+=======
+# Enter every admin using following pattern:
+>>>>>>> master
 # ('John', 'john@example.com'),
 # Note trailing separator!
 ADMINS = ()
@@ -85,7 +89,11 @@ TIME_ZONE = 'UTC'
 # http://www.i18nguy.com/unicode/language-identifiers.html
 LANGUAGE_CODE = 'en_US'
 
+<<<<<<< HEAD
 # Absolute filesystem path to the directory that will hold publicly available media uploaded by users.
+=======
+# Absolute filesystem path to the directory that will hold user-uploaded files.
+>>>>>>> master
 # Always use forward slashes, even on Windows.
 # Example: "/home/media/media.lawrence.com/media/"
 MEDIA_ROOT = '/vagrant/media/'
@@ -95,11 +103,14 @@ MEDIA_ROOT = '/vagrant/media/'
 # Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
 MEDIA_URL = '/media/'
 
+<<<<<<< HEAD
 # Absolute filesystem path to the directory that will hold post attachments.
 # Always use forward slashes, even on Windows.
 # Example: "/home/media/media.lawrence.com/attachments/"
 ATTACHMENTS_ROOT = '/vagrant/attachments/'
 
+=======
+>>>>>>> master
 # Absolute path to the directory static files should be collected to.
 # Don't put anything in this directory yourself; store your static files
 # Always use forward slashes, even on Windows.
@@ -135,12 +146,17 @@ EMAIL_HOST_PASSWORD = ''
 # Use TLS encryption
 EMAIL_USE_TLS = False
 
+<<<<<<< HEAD
 # Screamer Configuration
 # Screamer is special feature that sends email to users listed under ADMINS when application
 # erros. First setting is origin of error emails, while second is message title prefix that
 # makes messages easier to spot in your inbox
 SERVER_EMAIL = 'root@localhost'
 EMAIL_SUBJECT_PREFIX = '[Misago Screamer]'
+=======
+# E-mail subject prefix added to emails for staff
+EMAIL_SUBJECT_PREFIX = '[Misago]'
+>>>>>>> master
 
 # Catch-all e-mail address
 # If DEBUG_MODE is on, all emails will be sent to this address instead of real recipient.
@@ -176,10 +192,13 @@ WSGI_APPLICATION = 'deployment.wsgi.application'
 if SECRET_KEY == 'yaobeifl1a6hf&3)^uc#^vlu1ud7xp^+*c5zoq*tf)fvs#*o$#':
     SECRET_KEY = ''
 
+<<<<<<< HEAD
 # Disable Jinja2 for django debug toolbar templates
 if DEBUG:
     DEFAULT_JINJA2_TEMPLATE_INTERCEPT_RE = r"(?!debug_toolbar/).*"
 
+=======
+>>>>>>> master
 # Override config if we are in tests
 if 'test' in sys.argv:
     if not SECRET_KEY:

+ 16 - 0
requirements.txt

@@ -1,15 +1,31 @@
+<<<<<<< HEAD
 django<1.6
 django-debug-toolbar
 django-floppyforms
 django-haystack
 django-jinja
 django-mptt<0.6
+=======
+django
+django-debug-toolbar
+django-haystack
+django-mptt
+coffin
+>>>>>>> master
 jinja2
 markdown
 path.py
 Pillow
+<<<<<<< HEAD
 pytz==2013b
 recaptcha-client
 South<0.9
 Unidecode
 whoosh<2.6
+=======
+pytz
+recaptcha-client
+South
+Unidecode
+whoosh<2.5
+>>>>>>> master

+ 21 - 1
static/cranefly/css/cranefly.less

@@ -27,6 +27,10 @@
 @import "bootstrap/tables.less";
 
 // Components: common
+<<<<<<< HEAD
+=======
+@import "bootstrap/sprites.less";
+>>>>>>> master
 @import "bootstrap/dropdowns.less";
 @import "bootstrap/wells.less";
 @import "bootstrap/component-animations.less";
@@ -63,6 +67,7 @@
 // Responsiveness
 @import "bootstrap/responsive-1200px-min.less";
 
+<<<<<<< HEAD
 // Cranefly theme
 @import "cranefly/header.less";
 @import "cranefly/scaffolding.less";
@@ -70,6 +75,12 @@
 @import "cranefly/loader.less";
 @import "cranefly/navbar.less";
 @import "cranefly/midman.less";
+=======
+// Sora theme
+@import "cranefly/header.less";
+@import "cranefly/scaffolding.less";
+@import "cranefly/navbar.less";
+>>>>>>> master
 @import "cranefly/breadcrumbs.less";
 @import "cranefly/messages.less";
 @import "cranefly/forms.less";
@@ -89,13 +100,17 @@
 @import "cranefly/profiles.less";
 @import "cranefly/forum.less";
 @import "cranefly/thread.less";
+<<<<<<< HEAD
 @import "cranefly/poll_votes.less";
+=======
+>>>>>>> master
 @import "cranefly/karmas.less";
 @import "cranefly/changelog.less";
 @import "cranefly/report.less";
 @import "cranefly/reports.less";
 @import "cranefly/search.less";
 
+<<<<<<< HEAD
 // Extra css
 @import "jquery.atwho.css";
 @import "jquery.Jcrop.min.css";
@@ -103,4 +118,9 @@
 @import "font-awesome.min.css";
 
 // Keep ranks last for easy overrides!
-@import "ranks.less";
+@import "ranks.less";
+=======
+// Keep ranks last for easy overrides!
+@import "ranks.less";
+@import "jquery.Jcrop.min.css";
+>>>>>>> master

+ 22 - 0
static/cranefly/css/cranefly/alerts.less

@@ -6,12 +6,31 @@
     vertical-align: middle;
 
     &.alert-icon {
+<<<<<<< HEAD
     	color: @itemOldColor;
     	font-size: @fontSizeLarge;
 
     	&.alert-new {
     		color: @itemNewColor;
     	}
+=======
+      .label {
+        background-color: @gray;
+        border: 1px solid darken(@gray, 15%);
+        border-radius: @baseBorderRadius;
+        padding: 4px;
+        padding-top: 3px;
+
+        i {
+          background-image: url("@{iconWhiteSpritePath}");
+        }
+
+        &.label-warning {
+          background-color: @red;
+          border: 1px solid darken(@red, 15%);
+        }
+      }
+>>>>>>> master
     }
 
     &.alert-message {
@@ -29,6 +48,7 @@
       text-align: right;
     }
   }
+<<<<<<< HEAD
 }
 
 .midman-alerts {
@@ -60,4 +80,6 @@
       text-align: right;
     }
   }
+=======
+>>>>>>> master
 }

+ 20 - 0
static/cranefly/css/cranefly/breadcrumbs.less

@@ -11,6 +11,7 @@ footer {
   	padding: 0px;
 
   	font-weight: bold;
+<<<<<<< HEAD
 		text-shadow: none;
 
     li {
@@ -27,6 +28,25 @@ footer {
 		  &.active {
 		  	color: @gray;
 		  }
+=======
+	text-shadow: none;
+
+    li {
+	  text-shadow: none;
+
+	  a:link, a:active, a:visited, a:hover {
+	    color: @textColor;
+	  }	
+
+	  .divider {
+	  	.opacity(30);
+	  	margin-left: -6px;
+	  }
+
+	  &.active {
+	  	color: @gray;
+	  }
+>>>>>>> master
     }
   }
 }

+ 118 - 0
static/cranefly/css/cranefly/buttons.less

@@ -6,125 +6,220 @@
   background-color: @bodyBackground;
   .box-shadow(none);
 
+<<<<<<< HEAD
   color: @grayLight;
   font-weight: bold;
 
   i {
   	margin-right: 6px;
+=======
+  font-weight: bold;
+  
+  i {
+    .opacity(60);
+    position: relative;
+    bottom: 1px;
+>>>>>>> master
   }
 
   &:hover, &:active {
     background-color: @white;
     border-color: lighten(@grayLight, 5%);
+<<<<<<< HEAD
 
     color: @grayDark;
+=======
+  
+    i {
+      .opacity(90);
+    }
+>>>>>>> master
   }
 
   &.btn-primary {
     background-color: @bluePale;
     border-color: darken(@bluePale, 5%);
 
+<<<<<<< HEAD
     color: @white;
     text-shadow: 0px 1px 0px darken(@bluePale, 15%);
 
     &:hover, &:active {
       color: @white;
 
+=======
+    text-shadow: 0px 1px 0px darken(@bluePale, 15%);
+
+    &:hover, &:active {
+>>>>>>> master
       &:enabled {
         background-color: saturate(@bluePale, 20%);
         border-color: darken(saturate(@bluePale, 20%), 5%);
       }
     }
+<<<<<<< HEAD
+=======
+
+    i {
+      background-image: url("@{iconWhiteSpritePath}");
+    }
+>>>>>>> master
   }
 
   &.btn-info {
     background-color: desaturate(@bluePale, 25%);
     border-color: darken(desaturate(@bluePale, 25%), 5%);
 
+<<<<<<< HEAD
     color: @white;
     text-shadow: 0px 1px 0px darken(desaturate(@bluePale, 25%), 15%);
 
     &:hover, &:active {
       color: @white;
 
+=======
+    text-shadow: 0px 1px 0px darken(desaturate(@bluePale, 25%), 15%);
+
+    &:hover, &:active {
+>>>>>>> master
       &:enabled {
         background-color: desaturate(@bluePale, 10%);
         border-color: darken(desaturate(@bluePale, 10%), 5%);
       }
     }
+<<<<<<< HEAD
+=======
+
+    i {
+      background-image: url("@{iconWhiteSpritePath}");
+    }
+>>>>>>> master
   }
 
   &.btn-success {
     background-color: desaturate(@green, 15%);
     border-color: darken(desaturate(@green, 15%), 5%);
 
+<<<<<<< HEAD
     color: @white;
     text-shadow: 0px 1px 0px darken(@green, 15%);
 
     &:hover, &:active {
       color: @white;
 
+=======
+    text-shadow: 0px 1px 0px darken(@green, 15%);
+
+    &:hover, &:active {
+>>>>>>> master
       &:enabled {
         background-color: @green;
         border-color: darken(@green, 5%);
       }
     }
+<<<<<<< HEAD
+=======
+
+    i {
+      background-image: url("@{iconWhiteSpritePath}");
+    }
+>>>>>>> master
   }
 
   &.btn-warning {
     background-color: desaturate(@orange, 15%);
     border-color: darken(desaturate(@orange, 15%), 5%);
 
+<<<<<<< HEAD
     color: @white;
     text-shadow: 0px 1px 0px darken(@orange, 15%);
 
     &:hover, &:active {
       color: @white;
 
+=======
+    text-shadow: 0px 1px 0px darken(@orange, 15%);
+
+    &:hover, &:active {
+>>>>>>> master
       &:enabled {
         background-color: @orange;
         border-color: darken(@orange, 5%);
       }
     }
+<<<<<<< HEAD
+=======
+
+    i {
+      background-image: url("@{iconWhiteSpritePath}");
+    }
+>>>>>>> master
   }
 
   &.btn-danger {
     background-color: @red;
     border-color: darken(@red, 5%);
 
+<<<<<<< HEAD
     color: @white;
     text-shadow: 0px 1px 0px darken(@red, 15%);
 
     &:hover, &:active {
       color: @white;
 
+=======
+    text-shadow: 0px 1px 0px darken(@red, 15%);
+
+    &:hover, &:active {
+>>>>>>> master
       &:enabled {
         background-color: saturate(@red, 20%);
         border-color: darken(saturate(@red, 20%), 5%);
       }
     }
+<<<<<<< HEAD
+=======
+
+    i {
+      background-image: url("@{iconWhiteSpritePath}");
+    }
+>>>>>>> master
   }
 
   &.btn-inverse {
     background-color: @textColor;
     border-color: darken(@textColor, 5%);
 
+<<<<<<< HEAD
     color: @white;
     text-shadow: 0px 1px 0px darken(@textColor, 15%);
 
     &:hover, &:active {
     	background-color: lighten(@textColor, 10%);
 
+=======
+    text-shadow: 0px 1px 0px darken(@textColor, 15%);
+
+    &:hover, &:active {
+>>>>>>> master
       &:enabled {
         background-color: darken(@textColor, 5%);
         border-color: darken(@textColor, 10%);
       }
     }
+<<<<<<< HEAD
+=======
+
+    i {
+      background-image: url("@{iconWhiteSpritePath}");
+    }
+>>>>>>> master
   }
 
   &.btn-link {
     background: none;
     border: none;
+<<<<<<< HEAD
 
     color: @grayLight;
 
@@ -132,11 +227,22 @@
     	color: @textColor;
 
       &:enabled {
+=======
+    .opacity(70);
+
+    color: @textColor;
+
+    &:hover, &:active, &:focus {
+      &:enabled {
+        .opacity(90);
+        
+>>>>>>> master
         text-decoration: none;
       }
     }
   }
 
+<<<<<<< HEAD
   &.btn-icon {
   	padding-left: 0px !important;
   	padding-right: 0px !important;
@@ -147,11 +253,23 @@
   	i {
   		margin: 0px;
   	}
+=======
+
+  &.btn-primary, &.btn-info, &.btn-success, &.btn-warning, &.btn-danger, &.btn-inverse, &.btn-link {
+    i {
+      .opacity(100);
+    }
+>>>>>>> master
   }
 }
 
 a.btn-link {
   &:hover, &:active, &:focus {
+<<<<<<< HEAD
+=======
+    .opacity(90);
+
+>>>>>>> master
     color: @textColor;
     text-decoration: none;
   }

+ 28 - 0
static/cranefly/css/cranefly/category.less

@@ -47,6 +47,7 @@
 
     .forum-icon {
       float: left;
+<<<<<<< HEAD
     	position: relative;
     	bottom: 1px;
       width: @forumIconSize * 1.5;
@@ -66,11 +67,35 @@
       .icon-comment, .icon-comment-alt {
       	position: relative;
       	bottom: 3px;
+=======
+
+      .forum-icon-wrap {
+        background-color: @itemOldColor;
+        border: 1px solid darken(@itemOldColor, 10%);
+        border-radius: @baseBorderRadius;
+        padding: ((@forumIconSize - 22px) / 2) ((@forumIconSize - 16px) / 2);
+        position: relative;
+        bottom: (@forumIconSize - @baseLineHeight) / 2;
+
+        &.forum-icon-new {
+          background-color: @itemNewColor;
+          border: 1px solid darken(@itemNewColor, 10%);
+        }
+
+        &.forum-icon-redirect {
+          background-color: @itemMovedColor;
+          border: 1px solid darken(@itemMovedColor, 10%);
+        }
+>>>>>>> master
       }
     }
 
     .forum-main {
+<<<<<<< HEAD
       margin-left: (@forumIconSize * 1.5) + (@fontSizeSmall - 2px);
+=======
+      margin-left: @forumIconSize + 10px;
+>>>>>>> master
 
       h3 {
         float: left;
@@ -128,7 +153,10 @@
           background: none;
           border: none;
           box-shadow: none;
+<<<<<<< HEAD
           z-index: 2;
+=======
+>>>>>>> master
 
           .dropdown-shadow{
             border-radius: @baseBorderRadius;

+ 28 - 0
static/cranefly/css/cranefly/editor.less

@@ -5,7 +5,10 @@
   background-color: @editorBackground;
   border: 1px solid darken(@editorBackground, 10%);
   border-radius: @baseBorderRadius;
+<<<<<<< HEAD
   margin-bottom: @baseLineHeight;
+=======
+>>>>>>> master
 
   .editor-error {
     padding: @editorPadding;
@@ -22,14 +25,19 @@
     padding: @editorPadding;
 
     &>div {
+<<<<<<< HEAD
       margin-right: 22px;
       position: relative;
+=======
+      margin-right: 2px;
+>>>>>>> master
 
       textarea {
         border: none;
         box-shadow: none;
         margin: @editorPadding * -1;
         padding: @editorPadding;
+<<<<<<< HEAD
         padding-right: 32px;
         width: 100%;
 
@@ -156,6 +164,12 @@
       &.attachment-removed {
         .opacity(70);
       }
+=======
+        width: 100%;
+
+        font-family: @monoFontFamily;
+      } 
+>>>>>>> master
     }
   }
 
@@ -170,13 +184,17 @@
 
     .editor-tools {
       margin: 0px;
+<<<<<<< HEAD
       margin-right: @editorPadding;
+=======
+>>>>>>> master
 
       li {
         float: left;
         margin-right: @editorPadding;
 
         .btn {
+<<<<<<< HEAD
           display: block;
           padding-left: 0px;
           padding-right: 0px;
@@ -194,6 +212,13 @@
     .editor-help {
       line-height: @baseLineHeight + @editorPadding;
     }
+=======
+          padding-left: 7px;
+          padding-right: 7px;
+        }
+      }
+    }
+>>>>>>> master
   }
 }
 
@@ -205,6 +230,7 @@
       border-top-color: darken(@editorBackground, 20%);
     }
   }
+<<<<<<< HEAD
 }
 
 .zen-overlay {
@@ -295,4 +321,6 @@
       }
     }
   }
+=======
+>>>>>>> master
 }

+ 76 - 0
static/cranefly/css/cranefly/forms.less

@@ -12,6 +12,7 @@
   padding: @baseLineHeight;
   padding-top: @baseLineHeight * -0.75;
 
+<<<<<<< HEAD
   &.container-horizontal {
     margin: 0px ((@baseLineHeight * -2) - 1px);
     margin-bottom: @baseLineHeight;
@@ -28,12 +29,29 @@
       padding: 0px;
 
       font-size: @fontSizeLarge * 1.2;
+=======
+  .form-header {
+  	border-bottom: 1px solid darken(@bodyBackground, 8%);
+  	margin-top: @baseLineHeight * -1;
+  	margin-bottom: @baseLineHeight;
+  	padding: (@baseLineHeight / 2) 0px;
+
+  	h1 {
+  	  margin: 0px;
+  	  padding: 0px;
+
+  	  font-size: @fontSizeLarge;
+>>>>>>> master
 
       small {
         font-size: @fontSizeLarge * 0.75;
         font-weight: bold;
       }
+<<<<<<< HEAD
     }
+=======
+  	}
+>>>>>>> master
 
     .btn {
       margin-left: @baseFontSize;
@@ -47,6 +65,7 @@
     border: 1px solid darken(@bodyBackground, 8%);
     border-radius: @baseBorderRadius;
     margin-bottom: @baseLineHeight;
+<<<<<<< HEAD
     overflow: auto;
     padding: @baseLineHeight;
   }
@@ -100,6 +119,60 @@
     border-radius: 0px 0px @baseBorderRadius @baseBorderRadius;
     margin: (@baseLineHeight * -1);
     margin-top: @baseLineHeight * 0.5;
+=======
+    padding: @baseLineHeight;
+  }
+
+  form {
+  	margin: 0px;
+
+  	fieldset {
+  	  border-top: 1px solid darken(@bodyBackground, 8%);
+  	  padding-top: @baseLineHeight * 0.5;
+
+      legend {
+        margin-bottom: @baseLineHeight * -0.5;
+
+        color: @grayLight;
+        font-size: @baseFontSize;
+        font-weight: bold;
+
+        div {
+          margin-bottom: @baseLineHeight * -0.5;
+        }
+      }
+
+  	  &.first {
+  	  	border-top: none;
+  	  	padding-top: 0px;
+  	  }
+  	}
+
+  	.control-label {
+  	  font-weight: bold;
+  	}
+
+  	&.form-horizontal {
+  		fieldset {
+  			&.last {
+  		    .control-group:last-child {
+  		  		margin-bottom: 0px;
+  		  		padding-bottom: 0px;
+  		    }
+  		  }
+  		}
+
+		  .form-actions {
+	      padding-left: @horizontalComponentOffset + @baseLineHeight;
+		  }
+	  }
+  }
+
+  .form-actions {
+		border-radius: 0px 0px @baseBorderRadius @baseBorderRadius;
+		margin: (@baseLineHeight * -1);
+		margin-top: @baseLineHeight * 0.5;
+>>>>>>> master
 
     .form-actions-protip {
       margin-left: @baseFontSize;
@@ -113,6 +186,7 @@
 // Only v-resize textareas
 textarea {
   resize: vertical;
+<<<<<<< HEAD
 }
 
 // Responsiveness haxxord
@@ -123,4 +197,6 @@ textarea {
       margin-bottom: @baseLineHeight;
     }
   }
+=======
+>>>>>>> master
 }

+ 265 - 0
static/cranefly/css/cranefly/forum.less

@@ -48,6 +48,7 @@
 
     .forum-icon {
       float: left;
+<<<<<<< HEAD
       position: relative;
       bottom: 1px;
       width: @forumIconSize * 1.5;
@@ -67,11 +68,35 @@
       .icon-comment, .icon-comment-alt {
         position: relative;
         bottom: 3px;
+=======
+
+      .forum-icon-wrap {
+        background-color: @itemOldColor;
+        border: 1px solid darken(@itemOldColor, 10%);
+        border-radius: @baseBorderRadius;
+        padding: ((@forumIconSize - 22px) / 2) ((@forumIconSize - 16px) / 2);
+        position: relative;
+        bottom: (@forumIconSize - @baseLineHeight) / 2;
+
+        &.forum-icon-new {
+          background-color: @itemNewColor;
+          border: 1px solid darken(@itemNewColor, 10%);
+        }
+
+        &.forum-icon-redirect {
+          background-color: @itemMovedColor;
+          border: 1px solid darken(@itemMovedColor, 10%);
+        }
+>>>>>>> master
       }
     }
 
     .forum-main {
+<<<<<<< HEAD
       margin-left: (@forumIconSize * 1.5) + (@fontSizeSmall - 2px);
+=======
+      margin-left: 34px;
+>>>>>>> master
 
       h3 {
         float: left;
@@ -129,7 +154,10 @@
           background: none;
           border: none;
           box-shadow: none;
+<<<<<<< HEAD
           z-index: 2;
+=======
+>>>>>>> master
 
           .dropdown-shadow{
             border-radius: @baseBorderRadius;
@@ -298,6 +326,10 @@
   }
 }
 
+<<<<<<< HEAD
+=======
+// Threads list
+>>>>>>> master
 .forum-threads-list {
   background-color: @categoryBackground;
   border: 1px solid @categoryBorder;
@@ -305,6 +337,7 @@
   .box-shadow(0px 0px 0px 3px @categoryShadow);
   margin-bottom: @baseLineHeight;
 
+<<<<<<< HEAD
   .threads-list-empty {
     padding: (@baseFontSize * 2) 0px;
 
@@ -573,6 +606,235 @@
     &>li:last-child {
       border-bottom: none;
     }
+=======
+  .header {
+    background-color: @categoryHeader;
+    border: 1px solid @categoryBorder;
+    border-radius: @borderRadiusSmall @borderRadiusSmall 0px 0px;
+    margin: -1px;
+    margin-bottom: 0px;
+    padding-bottom: 1px;
+    overflow: auto;
+
+    color: @grayLight;
+    font-weight: bold;
+    font-size: @fontSizeSmall;
+
+    .row-fluid {
+      &>div {
+        min-height: auto;
+        padding: @paddingSmall;
+      }
+
+      .thread-replies {
+        float: left;
+        width: 106px;
+      }
+
+      .thread-last {
+        float: left;
+      }
+    }
+
+    .check-cell {
+      label {
+        margin: 0px;
+      }
+    }
+  }
+
+  .thread-row {
+    border-bottom: 1px solid @categoryBorder;
+    height: 38px;
+    overflow: hidden;
+    padding: (@fontSizeSmall - 2px) 0px;
+
+    .row-fluid {
+      &>div {
+        min-height: auto;
+        padding: @paddingSmall;
+        padding-bottom: 0px;
+      }
+    }
+
+    &.thread-last {
+      border-bottom: none;
+
+      &>div {
+        padding-bottom: 1px;
+      }
+    }
+
+    .thread-icon {
+      background-color: @itemOldColor;
+      border: 1px solid darken(@itemOldColor, 10%);
+      .border-radius(@baseBorderRadius);
+      display: block;
+      float: left;
+      margin: -2px 0px;
+      margin-left: -1px;
+      padding: 1px 4px;
+
+      &:hover, &:active {
+        .opacity(100);
+      }
+
+      i {
+        background-image: url("@{iconWhiteSpritePath}");
+      }
+    }
+
+    &.thread-new {
+      .thread-icon {
+        background-color: @itemNewColor;
+        border: 1px solid darken(@itemNewColor, 10%);
+      }
+
+      .thread-name {
+        color: @textColor !important;
+      }
+    }
+
+    &.threads-list-empty {
+      height: auto;
+      padding: @paddingLarge;
+
+      font-size: @fontSizeLarge;
+      text-align: center;
+    }
+
+    .thread-name {
+      margin-left: 10px;
+
+      color: lighten(@textColor, 17%);
+      font-size: @baseFontSize + 2px;
+      font-weight: bold;
+    }
+
+    .thread-details, .thread-last-reply {
+      color: @grayLight;
+      line-height: @baseFontSize;
+
+      a:link, a:visited {
+        color: @textColor;
+      }
+    }
+
+    .thread-details {
+      margin-left: 34px;
+
+      font-size: @fontSizeMini;
+    }
+
+    .thread-flags {
+      float: right;
+      margin: 0px;
+      position: relative;
+      right: -30px;
+      top: 5px;
+      padding: 0px;
+
+      li {
+        .border-radius(@baseBorderRadius);
+        display: block;
+        float: left;
+        margin-left: 3px;
+        padding: 2px 5px;
+
+        &.flag-reported {
+          background-color: @flagReported;
+        }
+
+        &.flag-notreviewed {
+          background-color: @flagReviewed;
+        }
+
+        &.flag-announcement {
+          background-color: @flagAnnouncement;
+        }
+
+        &.flag-sticky {
+          background-color: @flagSticky;
+        }
+
+        &.flag-deleted {
+          background-color: @flagDeleted;
+        }
+
+        &.flag-closed {
+          background-color: @flagClosed;
+        }
+      }
+
+      i {
+        background-image: url("@{iconWhiteSpritePath}");
+      }
+    }
+
+    .thread-activity {
+      border-left: 1px dotted darken(@categoryBackground, 12%);
+      position: relative;
+      bottom: 3px;
+
+      .thread-last-avatar {
+        float: left;
+
+        img {
+          .border-radius(@baseBorderRadius);
+          margin: 0px;
+          margin-right: @baseFontSize;
+          width: 40px;
+          height: 40px;
+        }
+      }
+
+      .thread-replies {
+        float: left;
+        margin-top: -1px;
+        margin-right: @baseFontSize;
+
+        color: @grayLight;
+        font-size: @fontSizeSmall;
+
+        .lead {
+          font-size: @baseFontSize;
+          font-weight: bold;
+          line-height: @baseLineHeight;
+        }
+
+        a:link, a:active, a:visited, a:hover {
+          color: @gray;
+        }
+      }
+
+      .thread-last-reply {
+        border-left: 1px dotted darken(@categoryBackground, 12%);
+        padding-left: @baseFontSize;
+
+      }
+
+      .thread-select {
+        background-color: darken(@categoryBackground, 5%);
+        display: block;
+        float: right;
+        margin: -12px -11px;
+        margin-left: 0px;
+        width: 29px;
+        height: 61px;
+
+        &:hover, &:focus, &:active {
+          background-color: @linkColor;
+        }
+
+        input {
+          margin: 0px;
+          position: relative;
+          right: 2px;
+          top: 26px;
+        }
+      }
+    }
+>>>>>>> master
   }
 
   .threads-actions {
@@ -605,6 +867,7 @@
       color: @textColor;
     }
   }
+<<<<<<< HEAD
 }
 
 .prefix-select {
@@ -753,4 +1016,6 @@
       .opacity(100);
     }
   }
+=======
+>>>>>>> master
 }

+ 23 - 0
static/cranefly/css/cranefly/header.less

@@ -28,7 +28,18 @@
       }
 
       .divider {
+<<<<<<< HEAD
         color: @grayLight
+=======
+        padding-left: 0px;
+        padding-right: 0px;
+
+        i {
+          .opacity(20);
+          position: relative;
+          bottom: 1px;
+        }
+>>>>>>> master
       }
     }
   }
@@ -49,6 +60,7 @@
       float: left;
       margin-right: @baseFontSize;
 
+<<<<<<< HEAD
       .thread-prefix {
         margin-left: 2px;
         position: relative;
@@ -56,6 +68,9 @@
       }
 
       &>a:not(.label) {
+=======
+      &>a {
+>>>>>>> master
         color: @grayLight;
 
         &:hover, &:active {
@@ -152,6 +167,11 @@
           margin: 0px;
           padding: 4px 12px;
 
+<<<<<<< HEAD
+=======
+          color: @textColor;
+
+>>>>>>> master
           i {
             position: relative;
             top: 0px;
@@ -160,8 +180,11 @@
           &:visited, &:hover {
             background-color: @white;
             border-color: lighten(@grayLight, 5%);
+<<<<<<< HEAD
 
             color: @grayDark;
+=======
+>>>>>>> master
           }
         }
       }

+ 38 - 0
static/cranefly/css/cranefly/index.less

@@ -55,6 +55,7 @@
 
     .forum-icon {
       float: left;
+<<<<<<< HEAD
     	position: relative;
     	bottom: 1px;
       width: @forumIconSize * 1.5;
@@ -74,11 +75,35 @@
       .icon-comment, .icon-comment-alt {
       	position: relative;
       	bottom: 3px;
+=======
+
+      .forum-icon-wrap {
+        background-color: @itemOldColor;
+        border: 1px solid darken(@itemOldColor, 10%);
+        border-radius: @baseBorderRadius;
+        padding: ((@forumIconSize - 22px) / 2) ((@forumIconSize - 16px) / 2);
+        position: relative;
+        bottom: (@forumIconSize - @baseLineHeight) / 2;
+
+        &.forum-icon-new {
+          background-color: @itemNewColor;
+          border: 1px solid darken(@itemNewColor, 10%);
+        }
+
+        &.forum-icon-redirect {
+          background-color: @itemMovedColor;
+          border: 1px solid darken(@itemMovedColor, 10%);
+        }
+>>>>>>> master
       }
     }
 
     .forum-main {
+<<<<<<< HEAD
       margin-left: (@forumIconSize * 1.5) + (@fontSizeSmall - 2px);
+=======
+      margin-left: @forumIconSize + 10px;
+>>>>>>> master
 
       h3 {
         float: left;
@@ -136,7 +161,10 @@
           background: none;
           border: none;
           box-shadow: none;
+<<<<<<< HEAD
           z-index: 2;
+=======
+>>>>>>> master
 
           .dropdown-shadow{
             border-radius: @baseBorderRadius;
@@ -390,7 +418,11 @@
 
 // Popular threads
 // -------------------------
+<<<<<<< HEAD
 .index-popular-threads {
+=======
+.index-popular-threads { 
+>>>>>>> master
   h3 {
     margin: 0px;
     margin-bottom: (@baseLineHeight * -0.5);
@@ -430,9 +462,15 @@
 // -------------------------
 .index-stats {
   margin-bottom: @baseLineHeight;
+<<<<<<< HEAD
   overflow: auto;
 
   color: @gray;
+=======
+  .opacity(60);
+  overflow: auto;
+
+>>>>>>> master
   font-weight: bold;
 
   ul {

+ 12 - 0
static/cranefly/css/cranefly/karmas.less

@@ -12,6 +12,7 @@
     .vote-icon {
       background-color: @grayLight;
       border-radius: @baseBorderRadius;
+<<<<<<< HEAD
       display: inline-block;
       padding: 2px 3px;
       position: relative;
@@ -21,6 +22,17 @@
       color: @white;
       font-size: @baseFontSize;
       text-align: center;
+=======
+      padding: 2px 3px;
+      position: relative;
+      bottom: (@fontSizeLarge - @baseFontSize) / 2;
+
+      font-size: @baseFontSize;
+
+      i {
+        background-image: url("@{iconWhiteSpritePath}");
+      }
+>>>>>>> master
     }
   }
 

+ 37 - 0
static/cranefly/css/cranefly/markdown.less

@@ -3,7 +3,11 @@
 
 .markdown, .markdown article {
   margin: 0px;
+<<<<<<< HEAD
   overflow: visible;
+=======
+  overflow: auto;
+>>>>>>> master
 
   &>:first-child {
     margin-top: 0px;
@@ -42,7 +46,10 @@
   blockquote {
     border-left-color: darken(@grayLighter, 5%);
     padding: (@baseFontSize / 3) @baseFontSize;
+<<<<<<< HEAD
     margin: @baseLineHeight / 2;
+=======
+>>>>>>> master
 
     header {
       padding-bottom: (@baseLineHeight / 2);
@@ -63,6 +70,17 @@
     }
   }
 
+<<<<<<< HEAD
+=======
+  code {
+    background-color: @grayDark;
+    border: none;
+
+    color: @grayLighter;
+    font-size: @baseFontSize;
+  }
+
+>>>>>>> master
   pre {
     background-color: @grayDarker;
     padding: (@baseFontSize / 2) @baseFontSize;
@@ -82,6 +100,7 @@
     margin: (@baseLineHeight / 2) 0px;
   }
 
+<<<<<<< HEAD
   .media-border {
     box-shadow: 0px 0px 4px @gray;
   	display: inline-block;
@@ -143,11 +162,14 @@
     }
   }
 
+=======
+>>>>>>> master
   // Blocks margins
   pre, blockquote, iframe {
     margin-top: @baseLineHeight;
     margin-bottom: @baseLineHeight;
 
+<<<<<<< HEAD
     article{
       &>:first-child {
         margin-top: 0px;
@@ -156,14 +178,29 @@
       &>:last-child {
         margin-bottom: 0px;
       }
+=======
+    &>:first-child {
+      margin-top: 0px;
+    }
+
+    &>:last-child {
+      margin-bottom: 0px;
+>>>>>>> master
     }
   }
 
   // Emoticons
   .emoji {
+<<<<<<< HEAD
     border-radius: 0px;
     margin: 0px;
     vertical-align: top;
+=======
+    background: none;
+    border-radius: 0px;
+    margin: 0px;
+    vertical-align: middle;
+>>>>>>> master
   }
 
   h1 {

+ 11 - 0
static/cranefly/css/cranefly/messages.less

@@ -5,9 +5,12 @@
 .messages-list {
   .alert-icon {
     float: left;
+<<<<<<< HEAD
 
     color: @white !important;
     font-size: @fontSizeLarge;
+=======
+>>>>>>> master
   }
 
   p {
@@ -28,7 +31,11 @@
   a:active, a:hover {
     .opacity(100);
   }
+<<<<<<< HEAD
 
+=======
+  
+>>>>>>> master
   .alert-info {
     text-shadow: 0px 1px 0px darken(@infoBorder, 10%);
   }
@@ -42,6 +49,10 @@
   }
 
   .alert-error {
+<<<<<<< HEAD
     text-shadow: 0px 1px 0px darken(@errorBorder, 10%);
+=======
+    text-shadow: 0px 1px 0px darken(@errorBorder, 10%);    
+>>>>>>> master
   }
 }

+ 115 - 0
static/cranefly/css/cranefly/navbar.less

@@ -24,7 +24,11 @@
 
         span {
           color: @navbarMottoColor;
+<<<<<<< HEAD
         }
+=======
+        } 
+>>>>>>> master
       }
     }
 
@@ -40,7 +44,11 @@
         border: 1px solid darken(@navbarBorder, 10%);
         .border-radius(@baseBorderRadius);
         position: absolute;
+<<<<<<< HEAD
         z-index: @zindexFixedNavbar;
+=======
+        z-index: 2;
+>>>>>>> master
 
         .navbar-search-text {
           border: 1px solid darken(@navbarBorder, 10%);
@@ -57,6 +65,7 @@
             margin: 0px;
             width: @navbarSearchWidth;
           }
+<<<<<<< HEAD
 
           .icon-search {
             float: right;
@@ -66,6 +75,8 @@
             position: relative;
             bottom: (@baseLineHeight * -1) + @baseFontSize;
           }
+=======
+>>>>>>> master
         }
 
         &:hover, &.open {
@@ -122,8 +133,11 @@
 
             .btn {
               margin: 0px;
+<<<<<<< HEAD
 
               color: @white;
+=======
+>>>>>>> master
             }
 
             a:link, a:visited {
@@ -146,12 +160,19 @@
     .navbar-blocks {
       margin-left: 6px;
 
+<<<<<<< HEAD
       &>li {
+=======
+      li {
+        margin-left: 6px;
+
+>>>>>>> master
         form {
           margin: 0px;
           padding: 0px;
         }
 
+<<<<<<< HEAD
         &>a:link, &>a:visited, &>.btn-link {
           min-width: 20px;
 
@@ -170,10 +191,31 @@
             color: @white;
             font-size: @baseFontSize;
             text-shadow: 0px -1px 1px darken(@red, 20%);
+=======
+        a:link, a:visited, .btn-link {
+          background-color: lighten(@navbarBackground, 2%);
+          border: 1px solid darken(@navbarBorder, 2%);
+          border-radius: @baseBorderRadius;
+          padding: 5px 8px;
+          margin-top: ((@navbarHeight - @baseLineHeight) / 2) - 6;
+
+          i {
+            .opacity(70);
+          }
+
+          .label {
+            background-color: @red;
+            margin-left: 4px;
+            padding-left: 6px;
+            padding-right: 5px;
+            position: relative;
+            bottom: 1px;
+>>>>>>> master
           }
         }
 
         a:hover, a:active, .btn-link:hover, .btn-link:active {
+<<<<<<< HEAD
         	text-shadow: 0px 0px 3px @white;
         }
 
@@ -185,13 +227,49 @@
 						}
         	}
 
+=======
+          background-color: @linkColor;
+          border-color: darken(@linkColor, 10%);
+
+          &.danger {
+            background-color: @red;
+            border-color: darken(@red, 10%);
+          }
+
+          &.hot {
+            background-color: @orange;
+            border-color: darken(@orange, 10%);
+          }
+
+          &.fresh {
+            background-color: @green;
+            border-color: darken(@green, 10%);
+          }
+
+          i {
+            background-image: url("@{iconWhiteSpritePath}");
+            .opacity(100);
+          }
+
+          .label {
+            background-color: @grayLighter;
+
+            color: @textColor;
+          }
+        }
+
+        &.user-profile {
+>>>>>>> master
           a:link, a:visited, a:hover, a:active {
             background: none;
             border: none;
             margin-right: 8px;
             margin-top: 5px;
 
+<<<<<<< HEAD
             color: @grayDarker;
+=======
+>>>>>>> master
             font-weight: bold;
             text-shadow: none;
 
@@ -210,7 +288,11 @@
 
     .navbar-compact {
       display: none;
+<<<<<<< HEAD
 
+=======
+      
+>>>>>>> master
       li {
         &.user-profile {
           &>a {
@@ -233,8 +315,11 @@
                 margin-left: 8px;
                 padding: 0px 4px;
 
+<<<<<<< HEAD
 								font-size: @baseFontSize;
 
+=======
+>>>>>>> master
                 .caret {
                   margin: 0px;
                   padding: 0px;
@@ -261,8 +346,14 @@
                 background: @red;
                 border-color: @red;
 
+<<<<<<< HEAD
                 color: @white;
                 text-shadow: 0px 1px 1px darken(@red, 10%);
+=======
+                .caret {
+                  border-top-color: @white;
+                }
+>>>>>>> master
               }
             }
           }
@@ -279,7 +370,11 @@
             width: 270px;
 
             &:before {
+<<<<<<< HEAD
               margin-right: 11px;
+=======
+              display: none;
+>>>>>>> master
             }
 
             &:after {
@@ -309,6 +404,7 @@
                 color: @textColor;
                 font-weight: normal;
                 text-align: left;
+<<<<<<< HEAD
 
                 i {
                 	display: inline-block;
@@ -316,6 +412,11 @@
                 	width: 16px;
 
                 	text-align: center;
+=======
+                
+                i {
+                  .opacity(100);
+>>>>>>> master
                 }
 
                 &:link, &:active, &:visited, &:hover {
@@ -329,6 +430,13 @@
                 }
               }
 
+<<<<<<< HEAD
+=======
+              a:link, a:visited {
+                .opacity(80);
+              }
+
+>>>>>>> master
               a:hover {
                 background-color: @gray;
                 .opacity(100);
@@ -339,11 +447,18 @@
               .btn-link {
                 background: none;
                 border: none;
+<<<<<<< HEAD
                 .opacity(100);
+=======
+>>>>>>> master
                 width: 100%;
 
                 &:hover, &:active {
                   background: @red;
+<<<<<<< HEAD
+=======
+                  .opacity(100);
+>>>>>>> master
 
                   color: @white;
                   text-shadow: 0px 1px 0px darken(@red, 20%);

+ 15 - 0
static/cranefly/css/cranefly/pagination.less

@@ -3,7 +3,11 @@
 .pagination {
   margin: 0px;
   padding: 0px;
+<<<<<<< HEAD
 
+=======
+  
+>>>>>>> master
   .count {
     margin-right: @baseFontSize * 0.75;
     padding: 4px 0px;
@@ -29,10 +33,14 @@
         color: @grayLight;
 
         i {
+<<<<<<< HEAD
           display: inline-block;
           width: @baseFontSize - 2px;
 
           text-align: center;
+=======
+          .opacity(55);
+>>>>>>> master
         }
       }
 
@@ -40,6 +48,13 @@
         border: 1px solid @paginationActiveBackground;
 
         color: @gray;
+<<<<<<< HEAD
+=======
+
+        i {
+          .opacity(100);
+        }
+>>>>>>> master
       }
     }
   }

+ 11 - 0
static/cranefly/css/cranefly/profiles.less

@@ -11,7 +11,11 @@
       img {
         border-radius: @baseBorderRadius;
         width: 36px;
+<<<<<<< HEAD
         height: 36px;
+=======
+        height: 36px; 
+>>>>>>> master
       }
     }
 
@@ -54,6 +58,7 @@
     margin: @baseFontSize 0px;
   }
 
+<<<<<<< HEAD
   .stat-header {
     border-bottom: 1px solid darken(@bodyBackground, 10%);
     margin-bottom: @baseFontSize;
@@ -89,6 +94,8 @@
     }
   }
 
+=======
+>>>>>>> master
   .user-details {
     .label {
       font-size: @baseFontSize;
@@ -105,7 +112,11 @@
         img {
           border-radius: @baseBorderRadius;
           width: 36px;
+<<<<<<< HEAD
           height: 36px;
+=======
+          height: 36px; 
+>>>>>>> master
         }
       }
 

+ 4 - 0
static/cranefly/css/cranefly/report.less

@@ -52,6 +52,10 @@
           font-weight: bold !important;
 
           i {
+<<<<<<< HEAD
+=======
+            background-image: url("@{iconWhiteSpritePath}");
+>>>>>>> master
             position: relative;
             top: 0px;
           }

+ 51 - 0
static/cranefly/css/cranefly/reports.less

@@ -2,6 +2,7 @@
 // ------------------------
 
 .reports-list {
+<<<<<<< HEAD
   .report-icon {
     padding-right: @fontSizeLarge;
     position: relative;
@@ -67,5 +68,55 @@
         background-color: @grayDark;
       }
     }
+=======
+  .thread-label {
+    overflow: visible;
+
+    .report-label {
+      .border-radius(3px);
+      float: right;
+      padding: 3px 8px;
+      position: relative;
+      right: -32px;
+      bottom: 2px;
+
+      color: @white;
+      font-weight: bold;
+
+      i {
+        background-image: url("@{iconWhiteSpritePath}");
+      }
+
+      &.report-open {
+        background-color: @orange;
+        text-shadow: 0px 1px 0px darken(@orange, 20%);
+      }
+
+      &.report-resolved {
+        background-color: @green;
+        text-shadow: 0px 1px 0px darken(@green, 20%);
+      }
+
+      &.report-bogus {
+        background-color: @gray;
+        text-shadow: 0px 1px 0px darken(@gray, 20%);
+      }
+    }
+  }
+
+  .thread-name {
+    .report-id {
+      color: @grayLight !important;
+    }
+  }
+
+  .thread-name, .thread-details {
+    margin-left: 0px !important;
+  }
+
+  .thread-icon {
+    display: none !important;
+    float: none;
+>>>>>>> master
   }
 }

+ 16 - 0
static/cranefly/css/cranefly/search.less

@@ -31,6 +31,7 @@
 }
 
 .search-resume {
+<<<<<<< HEAD
 	a:link, a:visited {
 		color: @grayLight;
 
@@ -65,6 +66,18 @@
 		}
 	}
 
+=======
+  .muted {
+    color: lighten(@gray, 15%);
+
+    a {
+      color: @textColor;
+    }
+  }
+}
+
+.search-results {
+>>>>>>> master
   .results-list {
     .result {
       border-bottom: 1px solid darken(@bodyBackground, 5%);
@@ -98,12 +111,15 @@
           a:hover, a:active {
             color: @textColor;
           }
+<<<<<<< HEAD
 
           a:link, a:active, a:visited, a:hover {
 	          strong {
 	            color: @red;
 	          }
           }
+=======
+>>>>>>> master
         }
 
         .post-preview {

+ 7 - 0
static/cranefly/css/cranefly/signin.less

@@ -14,6 +14,7 @@
   }
 
   a:link, a:visited {
+<<<<<<< HEAD
     color: @grayLight;
     font-weight: bold;
 
@@ -28,5 +29,11 @@
   a:hover, a:active {
     color: @textColor;
     text-decoration: none;
+=======
+    .opacity(90);
+
+    color: @textColor;
+    font-weight: bold;
+>>>>>>> master
   }
 }

+ 48 - 0
static/cranefly/css/cranefly/thread.less

@@ -17,6 +17,7 @@
   }
 }
 
+<<<<<<< HEAD
 .thread-poll-body {
   background-color: @categoryBackground;
   border: 1px solid @categoryBorder;
@@ -108,6 +109,8 @@
   }
 }
 
+=======
+>>>>>>> master
 // Thread body styles
 .thread-body {
   .post-wrapper {
@@ -151,8 +154,13 @@
         &:before {
            border-color: transparent;
            border-right-color: @postBorder;
+<<<<<<< HEAD
            border-width: @fontSizeMini + 2;
            top: @baseFontSize - 1;
+=======
+           border-width: @fontSizeMini + 1;
+           top: @baseFontSize;
+>>>>>>> master
            margin-top: (@baseFontSize * -1) + @baseFontSize - 1px;
         }
 
@@ -234,6 +242,7 @@
             padding: @baseFontSize;
           }
 
+<<<<<<< HEAD
           .post-attachments {
             margin: 0px @baseFontSize;
 
@@ -308,6 +317,8 @@
             }
           }
 
+=======
+>>>>>>> master
           .post-signature {
             border-top: 1px dotted darken(@postBackground, 25%);
             .opacity(60);
@@ -362,7 +373,11 @@
               }
 
               &.post-neutral, &.post-like, &.post-hate {
+<<<<<<< HEAD
                 margin-left: (@baseFontSize / 4);
+=======
+                margin-left: (@baseFontSize / 4); 
+>>>>>>> master
               }
 
               &.post-neutral {
@@ -492,7 +507,11 @@
         }
       }
 
+<<<<<<< HEAD
       &.post-muted {
+=======
+      &.post-muted {        
+>>>>>>> master
         .user-avatar {
           width: 50px;
           height: 50px;
@@ -586,6 +605,7 @@
         }
 
         i {
+<<<<<<< HEAD
           margin-right: 2px;
           position: relative;
           top: 2px;
@@ -593,6 +613,9 @@
 
           font-size: @fontSizeLarge;
           text-align: center;
+=======
+          .opacity(43);
+>>>>>>> master
         }
 
         form {
@@ -682,8 +705,13 @@
     &:before {
        border-color: transparent;
        border-right-color: darken(@editorBackground, 10%);
+<<<<<<< HEAD
        border-width: @fontSizeMini + 2;
        top: @baseFontSize - 1;
+=======
+       border-width: @fontSizeMini + 1;
+       top: @baseFontSize;
+>>>>>>> master
        margin-top: (@baseFontSize * -1) + @baseFontSize - 1px;
     }
   }
@@ -720,17 +748,25 @@
         border-radius: @borderRadiusSmall;
         width: 24px;
         height: 24px;
+<<<<<<< HEAD
         position: relative;
         bottom: 1px;
+=======
+>>>>>>> master
       }
 
       a:link, a:active, a:visited, a:hover {
         margin: 0px 4px;
+<<<<<<< HEAD
         position: relative;
         top: 2px;
 
         color: @textColor;
         font-size: @fontSizeLarge;
+=======
+
+        color: @textColor;
+>>>>>>> master
         font-weight: bold;
       }
 
@@ -744,6 +780,7 @@
         padding: 0px;
 
         button {
+<<<<<<< HEAD
           float: left;
           padding-left: 0px;
           padding-right: 0px;
@@ -758,6 +795,14 @@
             top: 1px;
 
             font-size: @fontSizeLarge;
+=======
+          padding-left: 5px;
+          padding-right: 5px;
+
+          i {
+            position: relative;
+            top: 1px;
+>>>>>>> master
           }
         }
       }
@@ -800,6 +845,7 @@
 
       button {
         float: right;
+<<<<<<< HEAD
         position: relative;
         top: 2px;
         left: 2px;
@@ -816,6 +862,8 @@
             color: @textColor;
           }
         }
+=======
+>>>>>>> master
       }
     }
   }

+ 7 - 0
static/cranefly/css/cranefly/usercp.less

@@ -63,6 +63,7 @@
 
     ul.unstyled {
       margin-left: @baseFontSize * -1 + 1px;
+<<<<<<< HEAD
 
       i {
       	display: inline-block;
@@ -70,6 +71,8 @@
 
       	text-align: center;
       }
+=======
+>>>>>>> master
     }
   }
 }
@@ -103,7 +106,11 @@
             .box-shadow(0px 0px 3px @linkColor);
           }
         }
+<<<<<<< HEAD
       }
+=======
+      } 
+>>>>>>> master
     }
   }
 }

+ 19 - 0
static/cranefly/css/cranefly/watchedthreads.less

@@ -2,6 +2,7 @@
 // -------------------------
 
 .watched-threads {
+<<<<<<< HEAD
 	margin-top: @fontSizeSmall;
 
   .thread-actions {
@@ -12,6 +13,18 @@
     position: relative;
     top: 7px;
     z-index: 2;
+=======
+  .thread-last-reply {
+    border-left: none !important;
+    padding-left: 0px !important;
+  }
+
+  .thread-options {
+    float: right;
+    overflow: auto;
+    position: relative;
+    top: 8px;
+>>>>>>> master
 
     form {
       display: inline-block;
@@ -22,6 +35,7 @@
 
       .btn {
         float: right;
+<<<<<<< HEAD
         padding: 4px 10px;
         margin-left: @baseFontSize + 2px;
 
@@ -33,6 +47,11 @@
         	font-size: @fontSizeLarge;
         	text-align: center;
         }
+=======
+        padding: 3px 5px;
+        padding-bottom: 0px;
+        margin-left: @baseFontSize + 2px;
+>>>>>>> master
       }
     }
   }

+ 87 - 0
static/cranefly/js/cranefly.js

@@ -4,12 +4,16 @@ $(function () {
   $('.tooltip-bottom').tooltip({placement: 'bottom', container: 'body'})
   $('.tooltip-left').tooltip({placement: 'left', container: 'body'})
   $('.tooltip-right').tooltip({placement: 'right', container: 'body'})
+<<<<<<< HEAD
 
   $('body').tooltip({placement: 'top', container: 'body', selector: '.tooltip-top'})
   $('body').tooltip({placement: 'bottom', container: 'body', selector: '.tooltip-bottom'})
   $('body').tooltip({placement: 'left', container: 'body', selector: '.tooltip-left'})
   $('body').tooltip({placement: 'right', container: 'body', selector: '.tooltip-right'})
 
+=======
+  
+>>>>>>> master
   // Register popovers
   $('.popover-top').popover({placement: 'top'})
   $('.popover-bottom').popover({placement: 'bottom'})
@@ -22,15 +26,23 @@ $(function () {
       e.preventDefault();
     }
   });
+<<<<<<< HEAD
 
   // Start all dropdowns
   $('.dropdown-toggle').dropdown()
 
+=======
+  
+  // Start all dropdowns
+  $('.dropdown-toggle').dropdown()
+  
+>>>>>>> master
   // Dont hide clickable dropdowns
   $('.dropdown-clickable').on('click', function (e) {
     e.stopPropagation()
   });
 
+<<<<<<< HEAD
   // Ajax Loader
   var ajax_loader = $('#ajax-loader');
   $("body").on({
@@ -42,12 +54,18 @@ $(function () {
     }
   });
 
+=======
+>>>>>>> master
   // Fancy user nav activation
   $('#fancy-user-nav').show();
 
   // Search form extension
   var nav_search_form = $('#navbar-search');
+<<<<<<< HEAD
   nav_search_form.click(function() {
+=======
+  $('#search-field').hover(function() {
+>>>>>>> master
     nav_search_form.addClass('open');
   });
 
@@ -58,7 +76,11 @@ $(function () {
   nav_search_form.click(function(event) {
     event.stopPropagation();
   });
+<<<<<<< HEAD
 
+=======
+  
+>>>>>>> master
   // Checkbox Group Master
   $('input.checkbox-master').live('click', function(){
     if($(this).is(':checked')){
@@ -69,27 +91,43 @@ $(function () {
       $('input.checkbox-member').removeAttr('checked');
     }
   });
+<<<<<<< HEAD
 
+=======
+  
+>>>>>>> master
   // Checkbox Group Member
   $('input.checkbox-member').live('click', function(){
     if(!$(this).is(':checked')){
       $('input.checkbox-master').removeAttr('checked');
     }
   });
+<<<<<<< HEAD
 
+=======
+  
+>>>>>>> master
   // Check Confirmation on links
   $('a.confirm').live('click', function(){
     var decision = confirm(jQuery.data(this, 'jsconfirm'));
     return decision
   });
+<<<<<<< HEAD
 
+=======
+  
+>>>>>>> master
   // Check Confirmation on forms
   $('form.confirm').live('submit', function(){
     data = $(this).data();
     var decision = confirm(data.jsconfirm);
     return decision
   });
+<<<<<<< HEAD
 
+=======
+  
+>>>>>>> master
   // Show go back link?
   if (document.referrer
       && document.referrer.indexOf(location.protocol + "//" + location.host) === 0
@@ -118,27 +156,50 @@ function EnhancePostsMD() {
     // Automagically turn links into players
     var players = new Array();
     $('.markdown.js-extra').each(function() {
+<<<<<<< HEAD
       $(this).find('a').each(function() {
         link2player(this, $.trim($(this).text()));
+=======
+      var post_players = 0;
+      $(this).find('a').each(function() {
+        match = link2player($.trim($(this).text()));
+        if (match && $.inArray(match, players) == -1 && players.length < 16 && post_players < 4) {
+          players.push(match);
+          post_players ++;
+          $(this).replaceWith(match);
+        }
+>>>>>>> master
       });
     });
   });
 }
 
 // Turn link to player
+<<<<<<< HEAD
 function link2player(element, link_href) {
+=======
+function link2player(link_href) {
+>>>>>>> master
   // Youtube link
   var re = /watch\?v=((\w|-)+)/;
   if (re.test(link_href)) {
     media_url = link_href.match(re);
+<<<<<<< HEAD
     return youtube_player(element, media_url[1]);
+=======
+    return '<iframe width="480" height="360" src="http://www.youtube.com/embed/' + media_url[1] + '" frameborder="0" allowfullscreen></iframe>';
+>>>>>>> master
   }
 
   // Youtube feature=embed
   var re = /watch\?feature=player_embedded&v=((\w|-)+)/;
   if (re.test(link_href)) {
     media_url = link_href.match(re);
+<<<<<<< HEAD
     return youtube_player(element, media_url[1]);
+=======
+    return '<iframe width="480" height="360" src="http://www.youtube.com/embed/' + media_url[1] + '" frameborder="0" allowfullscreen></iframe>';
+>>>>>>> master
   }
 
   // Youtube embed with start time
@@ -150,6 +211,7 @@ function link2player(element, link_href) {
     media_url[2] = 0;
     if (media_minutes) { media_url[2] += (media_minutes[1] - 0) * 60; }
     if (media_seconds) { media_url[2] += (media_seconds[1] - 0); }
+<<<<<<< HEAD
     return youtube_player(element, media_url[1], media_url[2]);
   }
 
@@ -158,19 +220,34 @@ function link2player(element, link_href) {
   if (re.test(link_href)) {
     media_url = link_href.match(re);
     return youtube_player(element, media_url[1]);
+=======
+    return '<iframe width="480" height="360" src="http://www.youtube.com/embed/' + media_url[1] + '?start=' + media_url[2] + '" frameborder="0" allowfullscreen></iframe>';
+  }
+  
+  // Youtube embed
+  var re = /youtu.be\/((\w|-)+)/;
+  if (re.test(link_href)) {
+    media_url = link_href.match(re);
+    return '<iframe width="480" height="360" src="http://www.youtube.com/embed/' + media_url[1] + '" frameborder="0" allowfullscreen></iframe>';
+>>>>>>> master
   }
 
   // Vimeo link
   var re = /vimeo.com\/([0-9]+)/;
   if (re.test(link_href)) {
     media_url = link_href.match(re);
+<<<<<<< HEAD
     return $(element).replaceWith('<iframe src="http://player.vimeo.com/video/' + media_url[1] + '?color=CF402E" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>');
+=======
+    return '<iframe src="http://player.vimeo.com/video/' + media_url[1] + '?color=CF402E" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';
+>>>>>>> master
   }
 
   // No link
   return false;
 }
 
+<<<<<<< HEAD
 // Youtube player
 function youtube_player(element, movie_id, startfrom) {
   if (typeof startfrom != 'undefined') {
@@ -282,6 +359,8 @@ $(function() {
   });
 });
 
+=======
+>>>>>>> master
 // Ajax: Post votes
 $(function() {
   $('.post-rating-actions').each(function() {
@@ -296,7 +375,11 @@ $(function() {
           $(action_parent).find('.post-score-total').addClass('post-score-good');
         } else if (data.score_total < 0) {
           $(action_parent).find('.post-score-total').addClass('post-score-bad');
+<<<<<<< HEAD
         }
+=======
+        } 
+>>>>>>> master
         if (data.score_upvotes > 0) {
           $(action_parent).find('.post-score-upvotes').addClass('post-score-good');
         }
@@ -334,7 +417,11 @@ $(function() {
     var button = $(this).find('button');
     $(this).submit(function() {
       var form = this;
+<<<<<<< HEAD
       $.post(form.action, {'_csrf_token': csrf_token}, "json").done(function(data, textStatus, jqXHR) {
+=======
+      $.post(form.action, {'_csrf_token': csrf_token}, "json").done(function(data, textStatus, jqXHR) {        
+>>>>>>> master
         $(button).text(l_post_reported);
         $(button).tooltip('destroy');
         $(button).attr("title", data.message);

+ 120 - 0
static/cranefly/js/editor.js

@@ -1,5 +1,9 @@
 // Basic editor functions
+<<<<<<< HEAD
 function storeCaret(ftext) {
+=======
+function storeCaret(ftext) {    
+>>>>>>> master
   if (ftext.createTextRange) {
     ftext.caretPos = document.selection.createRange().duplicate();
   }
@@ -86,6 +90,7 @@ function extractor(query) {
 
 // Small and nice editor functionality
 $(function() {
+<<<<<<< HEAD
   function textarea(ev) {
     return $(ev).parents('.editor-editable').find('textarea');
   }
@@ -201,5 +206,120 @@ $(function() {
   $('.editor-insert-attachment').click(function() {
     var insertion_code = $(this).data('attachment-md');
     makeReplace(textareaId(this), insertion_code);
+=======
+  $('.editor-tools').fadeIn(600);
+  $('.editor').each(function() {
+    // Get textarea stuff
+    var textarea = $(this).find('textarea');
+    var textarea_id = $(textarea).attr('id');
+    
+    // Do we have emojis?
+    if (1==2 && ed_emojis.length > 1) {
+      var mode = 0;
+      var open = -1;
+
+      $(textarea).focusout(function() {
+        mode = 0;
+        open = -1;
+      });
+
+      $(textarea).keyup(function() {
+        text = $(textarea).val();
+        cursor = getSelection(textarea_id).start;
+        if (cursor > 0) {
+          // Read typed character and previous character
+          input = text.substring(cursor - 1, cursor);
+          if (cursor > 1) {
+            pre = text.substring(cursor - 2, cursor - 1);
+          } else {
+            pre = '';
+          }
+
+          // Act accordingly to current mode
+          if (mode == 0) {
+            if (input == ':' && !pre.match(/^[A-Za-z0-9]+$/i)) {
+              // Test passed, mode 1 engaged!
+              mode = 1;
+              open = cursor;
+            }
+          } else if (mode == 1) {
+            // Inside emoji mode, we are helping user enter emoji input
+            if (cursor > open && !input.match(/^(\+|\-|[_A-Za-z0-9])+$/i)) {
+              // Emoji fail
+              mode = 0;
+            }
+          }
+        }
+      });
+    }
+
+    // Handle buttons
+    $('.editor-bold').click(function() {
+      makeWrap(textarea_id, '**', '**');
+      return false;
+    });
+    
+    $('.editor-emphasis').click(function() {
+      makeWrap(textarea_id, '*', '*');
+      return false;
+    });
+    
+    $('.editor-link').click(function() {
+      var selection = $.trim(getSelectionText(textarea_id));
+      if (is_url(selection)) {
+        var link_url = $.trim(prompt(ed_lang_enter_link_url, selection));
+        selection = false;
+      } else {
+        var link_url = $.trim(prompt(ed_lang_enter_link_url));
+      }
+
+      if (is_url(link_url)) {
+        if (selection) {
+          var link_label = $.trim(prompt(ed_lang_enter_link_label, selection));
+        } else {
+          var link_label = $.trim(prompt(ed_lang_enter_link_label));
+        }
+
+        if (link_label.length > 0) {
+          makeReplace(textarea_id, '[' + link_label + '](' + link_url + ')');
+        } else {
+          makeReplace(textarea_id, '<' + link_url + '>');
+        }
+      }
+
+      return false;
+    });
+    
+    $('.editor-image').click(function() {
+      var selection = $.trim(getSelectionText(textarea_id));
+      if (is_url(selection)) {
+        var image_url = $.trim(prompt(ed_lang_enter_image_url, selection));
+        selection = false;
+      } else {
+        var image_url = $.trim(prompt(ed_lang_enter_image_url));
+      }
+
+      if (is_url(image_url)) {
+        if (selection) {
+          var image_label = $.trim(prompt(ed_lang_enter_image_label, selection));
+        } else {
+          var image_label = $.trim(prompt(ed_lang_enter_image_label));
+        }
+
+        if (image_label.length > 0) {
+          makeReplace(textarea_id, '![' + image_label + '](' + image_url + ')');
+        } else {
+          makeReplace(textarea_id, '!(' + image_url + ')');
+        }
+      }
+
+      return false;
+    });
+    
+    $('.editor-hr').click(function() {
+      makeReplace(textarea_id, '\r\n\r\n- - - - -\r\n\r\n');
+      return false;
+    });
+>>>>>>> master
   });
 });