diff --git a/.codeclimate.yml b/.codeclimate.yml new file mode 100644 index 000000000..4773cc576 --- /dev/null +++ b/.codeclimate.yml @@ -0,0 +1,36 @@ +--- +engines: + brakeman: + enabled: true + bundler-audit: + enabled: true + csslint: + enabled: true + duplication: + enabled: true + config: + languages: + - ruby + - javascript + eslint: + enabled: true + channel: "eslint-2" + fixme: + enabled: true + rubocop: + enabled: true +ratings: + paths: + - Gemfile.lock + - "**.erb" + - "**.haml" + - "**.rb" + - "**.css" + - "**.js" +exclude_paths: +- config/ +- db/ +- features/ +- script/ +- spec/ +- vendor/ diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 000000000..62ba89fda --- /dev/null +++ b/.eslintrc @@ -0,0 +1,258 @@ +{ + "env": { + "browser": true, + "jasmine": true, + "jquery": true + }, + + "globals": { + "_": false, + "autosize": false, + "Backbone": false, + "Bloodhound": false, + "gon": false, + "Handlebars": false, + "HandlebarsTemplates": false, + "ImagePaths": false, + "jsxc": false, + "L": false, + "Routes": false, + "OSM": false, + "qq": false, + "blueimp": false, + + "loginAs": true, + "logout": true, + "spec": true, + "context": true, + "factory": true, + "stubView": true, + + "app": true, + "Diaspora": true, + "Keycodes": true, + "PosixBracketExpressions": true + }, + + "rules": { + "accessor-pairs": 0, + "array-bracket-spacing": [2, "never"], + "array-callback-return": 0, + "arrow-body-style": 0, + "arrow-parens": 0, + "arrow-spacing": 0, + "block-scoped-var": 0, + "block-spacing": [2, "always"], + "brace-style": [2, "1tbs", {"allowSingleLine": true}], + "callback-return": 0, + "camelcase": 2, + "comma-dangle": [2, "never"], + "comma-spacing": [2, {"before": false, "after": true}], + "comma-style": [2, "last"], + "complexity": [1, {"max": 20}], + "computed-property-spacing": [2, "never"], + "consistent-return": 2, + "consistent-this": 0, + "constructor-super": 0, + "curly": [2, "all"], + "default-case": 0, + "dot-location": [2, "property"], + "dot-notation": 2, + "eol-last": 2, + "eqeqeq": [2, "allow-null"], + "func-names": 0, + "func-style": 0, + "generator-star-spacing": 0, + "global-require": 0, + "guard-for-in": 1, + "handle-callback-err": 0, + "id-blacklist": 0, + "id-length": 0, + "id-match": 0, + "indent": [2, 2, {"SwitchCase": 1, "VariableDeclarator": {"var": 2, "let": 2, "const": 3}}], + "init-declarations": 0, + "jsx-quotes": 0, + "key-spacing": [2, {"beforeColon": false, "afterColon": true}], + "keyword-spacing": 2, + "linebreak-style": 0, + "lines-around-comment": 0, + "max-depth": 0, + "max-len": [1, {"code": 120, "ignoreUrls": true}], + "max-lines": 0, + "max-nested-callbacks": 0, + "max-params": 0, + "max-statements": 0, + "max-statements-per-line": 0, + "new-cap": [2, {"capIsNew": false}], + "new-parens": 2, + "newline-after-var": 0, + "newline-before-return": 0, + "newline-per-chained-call": 0, + "no-alert": 0, + "no-array-constructor": 2, + "no-bitwise": 0, + "no-caller": 2, + "no-case-declarations": 2, + "no-catch-shadow": 0, + "no-class-assign": 2, + "no-cond-assign": 2, + "no-confusing-arrow": 2, + "no-console": 2, + "no-const-assign": 2, + "no-constant-condition": 2, + "no-continue": 0, + "no-control-regex": 2, + "no-debugger": 2, + "no-delete-var": 2, + "no-div-regex": 0, + "no-dupe-args": 2, + "no-dupe-class-members": 2, + "no-dupe-keys": 2, + "no-duplicate-case": 2, + "no-duplicate-imports": 0, + "no-else-return": 2, + "no-empty": 2, + "no-empty-character-class": 2, + "no-empty-function": 1, + "no-empty-pattern": 2, + "no-eq-null": 0, + "no-eval": 2, + "no-ex-assign": 2, + "no-extend-native": 2, + "no-extra-bind": 2, + "no-extra-boolean-cast": 2, + "no-extra-label": 0, + "no-extra-parens": 0, + "no-extra-semi": 2, + "no-fallthrough": 2, + "no-floating-decimal": 0, + "no-func-assign": 2, + "no-implicit-coercion": 0, + "no-implicit-globals": 0, + "no-implied-eval": 0, + "no-inline-comments": 0, + "no-inner-declarations": 2, + "no-invalid-regexp": 2, + "no-invalid-this": 0, + "no-irregular-whitespace": 2, + "no-iterator": 0, + "no-label-var": 0, + "no-labels": 0, + "no-lone-blocks": 0, + "no-lonely-if": 2, + "no-loop-func": 2, + "no-magic-numbers": 0, + "no-mixed-operators": 0, + "no-mixed-requires": 0, + "no-mixed-spaces-and-tabs": 2, + "no-multi-spaces": 1, + "no-multi-str": 0, + "no-multiple-empty-lines": [1, {"max": 1}], + "no-native-reassign": 2, + "no-negated-condition": 0, + "no-negated-in-lhs": 2, + "no-nested-ternary": 0, + "no-new": 0, + "no-new-func": 0, + "no-new-object": 0, + "no-new-require": 0, + "no-new-symbol": 0, + "no-new-wrappers": 0, + "no-obj-calls": 2, + "no-octal": 2, + "no-octal-escape": 0, + "no-param-reassign": 0, + "no-path-concat": 0, + "no-plusplus": 0, + "no-process-env": 0, + "no-process-exit": 0, + "no-proto": 2, + "no-prototype-builtins": 0, + "no-redeclare": 2, + "no-regex-spaces": 2, + "no-restricted-globals": 0, + "no-restricted-imports": 0, + "no-restricted-modules": 0, + "no-restricted-syntax": 0, + "no-return-assign": 2, + "no-script-url": 0, + "no-self-assign": 2, + "no-self-compare": 2, + "no-sequences": 2, + "no-shadow": 1, + "no-shadow-restricted-names": 2, + "no-spaced-func": 1, + "no-sparse-arrays": 2, + "no-sync": 0, + "no-ternary": 0, + "no-this-before-super": 2, + "no-throw-literal": 2, + "no-trailing-spaces": 2, + "no-undef": 2, + "no-undef-init": 0, + "no-undefined": 0, + "no-underscore-dangle": 0, + "no-unexpected-multiline": 2, + "no-unmodified-loop-condition": 1, + "no-unneeded-ternary": 1, + "no-unreachable": 2, + "no-unsafe-finally": 1, + "no-unused-expressions": 0, + "no-unused-labels": 2, + "no-unused-vars": 2, + "no-use-before-define": [2, {"functions": false, "classes": true}], + "no-useless-call": 1, + "no-useless-computed-key": 0, + "no-useless-concat": 0, + "no-useless-constructor": 0, + "no-useless-escape": 0, + "no-useless-rename": 0, + "no-var": 0, + "no-void": 0, + "no-warning-comments": 0, + "no-whitespace-before-property": 2, + "no-with": 2, + "object-curly-newline": 0, + "object-curly-spacing": [2, "never"], + "object-property-newline": 0, + "object-shorthand": 0, + "one-var": 0, + "one-var-declaration-per-line": 0, + "operator-assignment": 0, + "operator-linebreak": 0, + "padded-blocks": [2, "never"], + "prefer-arrow-callback": 0, + "prefer-const": 0, + "prefer-reflect": 0, + "prefer-rest-params": 0, + "prefer-spread": 0, + "prefer-template": 0, + "quote-props": 0, + "quotes": [2, "double", "avoid-escape"], + "radix": [2, "always"], + "require-jsdoc": 0, + "require-yield": 0, + "rest-spread-spacing": 0, + "semi": [2, "always"], + "semi-spacing": [2, {"before": false, "after": true}], + "sort-imports": 0, + "sort-vars": 0, + "space-before-blocks": [2, "always"], + "space-before-function-paren": [2, "never"], + "space-in-parens": [2, "never"], + "space-infix-ops": [2, {"int32Hint": true}], + "space-unary-ops": [2, {"words": true, "nonwords": false}], + "spaced-comment": [2, "always", {"markers": ["="]}], + "strict": 0, + "template-curly-spacing": 0, + "unicode-bom": 0, + "use-isnan": 2, + "valid-jsdoc": 0, + "valid-typeof": 2, + "vars-on-top": 0, + "wrap-iife": 0, + "wrap-regex": 0, + "yield-star-spacing": 0, + "yoda": [2, "never"] + } +} diff --git a/.gitignore b/.gitignore index 1e6da2c17..46f688972 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,13 @@ -# xmpp certificates, keys and user data -config/vines/*.crt -config/vines/*.key +# XMPP certificates, keys and user data +config/certs/*.crt +config/certs/*.key +config/prosody.cfg.lua -#trademark sillyness +# Trademark sillyness app/views/home/_show.* app/views/terms/terms.* app/assets/images/custom/ - # Configuration files config/diaspora.yml config/heroku.yml @@ -21,8 +21,9 @@ vendor/cache/ config/database.yml .rvmrc_custom .rvmrc.local +config/oidc_key.pem -#Mailing list stuff +# Mailing list stuff config/email_offset config/mailing_list.csv @@ -42,9 +43,9 @@ public/500.html app/assets/images/branding-*.png app/assets/images/branding/logos-*.png app/assets/images/icons-*.png -app/assets/images/social_media_logos-*.png +app/assets/images/social-media-logos-*.png -#Documentation +# Documentation .yardoc/ doc/ @@ -69,15 +70,18 @@ tmp/ *.swp *~ *# +*.bak +*.save +*.autosave nbproject patches-* capybara-*.html dump.rdb -#Rubinius's JIT +# Rubinius's JIT *.rbc -#IDE +# IDE diaspora.iml # Dolphin's directory's preferences files diff --git a/.haml-lint.yml b/.haml-lint.yml new file mode 100644 index 000000000..bf61f7f60 --- /dev/null +++ b/.haml-lint.yml @@ -0,0 +1,5 @@ +linters: + LineLength: + max: 120 + SpaceInsideHashAttributes: + style: no_space diff --git a/.hound.yml b/.hound.yml deleted file mode 100644 index 9c0f49ddb..000000000 --- a/.hound.yml +++ /dev/null @@ -1,9 +0,0 @@ -java_script: - enabled: true - config_file: config/.jshint.json - ignore_file: config/.jshint_ignore -ruby: - enabled: true - config_file: .rubocop.yml -scss: - enabled: false diff --git a/.jshintignore b/.jshintignore deleted file mode 120000 index e650afb05..000000000 --- a/.jshintignore +++ /dev/null @@ -1 +0,0 @@ -config/.jshint_ignore \ No newline at end of file diff --git a/.jshintrc b/.jshintrc deleted file mode 120000 index 2c12c8897..000000000 --- a/.jshintrc +++ /dev/null @@ -1 +0,0 @@ -config/.jshint.json \ No newline at end of file diff --git a/.pronto.yml b/.pronto.yml new file mode 100644 index 000000000..c5f358b4a --- /dev/null +++ b/.pronto.yml @@ -0,0 +1,4 @@ +all: + exclude: + - "vendor/**/*" +consolidate_comments: true diff --git a/.ruby-version b/.ruby-version index 879b416e6..bb576dbde 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.1 +2.3 diff --git a/.scss-lint.yml b/.scss-lint.yml new file mode 100644 index 000000000..1fc197bb9 --- /dev/null +++ b/.scss-lint.yml @@ -0,0 +1,231 @@ +scss_files: 'app/assets/stylesheets/**/*.scss' +plugin_directories: ['.scss-linters'] + +# List of gem names to load custom linters from (make sure they are already +# installed) +plugin_gems: [] + +linters: + BangFormat: + enabled: true + space_before_bang: true + space_after_bang: false + + BemDepth: + enabled: false + max_elements: 1 + + BorderZero: + enabled: true + convention: zero # or `none` + + ColorKeyword: + enabled: true + + ColorVariable: + enabled: true + + Comment: + enabled: true + + DebugStatement: + enabled: true + + DeclarationOrder: + enabled: true + + DisableLinterReason: + enabled: true + + DuplicateProperty: + enabled: true + + ElsePlacement: + enabled: true + style: same_line # or 'new_line' + + EmptyLineBetweenBlocks: + enabled: true + ignore_single_line_blocks: true + + EmptyRule: + enabled: true + + ExtendDirective: + enabled: false + + FinalNewline: + enabled: true + present: true + + HexLength: + enabled: true + style: short # or 'long' + + HexNotation: + enabled: true + style: lowercase # or 'uppercase' + + HexValidation: + enabled: true + + IdSelector: + enabled: true + + ImportantRule: + enabled: true + + ImportPath: + enabled: true + leading_underscore: false + filename_extension: false + + Indentation: + enabled: true + allow_non_nested_indentation: false + character: space # or 'tab' + width: 2 + + LeadingZero: + enabled: true + style: exclude_zero # or 'include_zero' + + MergeableSelector: + enabled: true + force_nesting: true + + NameFormat: + enabled: true + allow_leading_underscore: true + convention: hyphenated_lowercase # or 'camel_case', or 'snake_case', or a regex pattern + + NestingDepth: + enabled: true + max_depth: 3 + ignore_parent_selectors: false + + PlaceholderInExtend: + enabled: true + + PropertyCount: + enabled: false + include_nested: false + max_properties: 10 + + PropertySortOrder: + enabled: true + ignore_unspecified: false + min_properties: 2 + separate_groups: false + + PropertySpelling: + enabled: true + extra_properties: [] + + PropertyUnits: + enabled: true + global: [ + 'ch', 'em', 'ex', 'rem', # Font-relative lengths + 'cm', 'in', 'mm', 'pc', 'pt', 'px', 'q', # Absolute lengths + 'vh', 'vw', 'vmin', 'vmax', # Viewport-percentage lengths + 'deg', 'grad', 'rad', 'turn', # Angle + 'ms', 's', # Duration + 'Hz', 'kHz', # Frequency + 'dpi', 'dpcm', 'dppx', # Resolution + '%'] # Other + properties: {} + + QualifyingElement: + enabled: true + allow_element_with_attribute: false + allow_element_with_class: false + allow_element_with_id: false + + SelectorDepth: + enabled: true + max_depth: 3 + + SelectorFormat: + enabled: true + convention: hyphenated_lowercase # or 'strict_BEM', or 'hyphenated_BEM', or 'snake_case', or 'camel_case', or a regex pattern + + Shorthand: + enabled: true + allowed_shorthands: [1, 2, 3] + + SingleLinePerProperty: + enabled: true + allow_single_line_rule_sets: true + + SingleLinePerSelector: + enabled: true + + SpaceAfterComma: + enabled: true + + SpaceAfterPropertyColon: + enabled: true + style: one_space # or 'no_space', or 'at_least_one_space', or 'aligned' + + SpaceAfterPropertyName: + enabled: true + + SpaceAfterVariableName: + enabled: true + + SpaceAroundOperator: + enabled: true + style: one_space # or 'no_space' + + SpaceBeforeBrace: + enabled: true + style: space # or 'new_line' + allow_single_line_padding: false + + SpaceBetweenParens: + enabled: true + spaces: 0 + + StringQuotes: + enabled: true + style: single_quotes # or double_quotes + + TrailingSemicolon: + enabled: true + + TrailingWhitespace: + enabled: true + + TrailingZero: + enabled: false + + TransitionAll: + enabled: false + + UnnecessaryMantissa: + enabled: true + + UnnecessaryParentReference: + enabled: true + + UrlFormat: + enabled: true + + UrlQuotes: + enabled: true + + VariableForProperty: + enabled: false + properties: [] + + VendorPrefix: + enabled: true + identifier_list: base + additional_identifiers: [] + excluded_identifiers: [] + + ZeroUnit: + enabled: true + + Compass::*: + enabled: false diff --git a/.travis.yml b/.travis.yml index 6d57bbc8c..1bcd8421a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,14 +1,14 @@ language: ruby rvm: + - 2.3.1 - 2.1 - - 2.0 env: - - DB=postgres BUILD_TYPE=other - - DB=mysql BUILD_TYPE=other - - DB=postgres BUILD_TYPE=cucumber + - DB=postgresql BUILD_TYPE=cucumber - DB=mysql BUILD_TYPE=cucumber + - DB=postgresql BUILD_TYPE=other + - DB=mysql BUILD_TYPE=other sudo: false cache: @@ -19,11 +19,17 @@ cache: branches: only: - 'master' - - 'stable' + - 'next-minor' - 'develop' -before_install: gem install bundler -bundler_args: "--without development production heroku --jobs 3 --retry 3" +before_install: + - gem install bundler + - mkdir travis-phantomjs + - wget http://cifiles.diasporafoundation.org/phantomjs-2.1.1-linux-x86_64.tar.bz2 -O $PWD/travis-phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2 + - tar -xvf $PWD/travis-phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2 -C $PWD/travis-phantomjs + - export PATH=$PWD/travis-phantomjs/phantomjs-2.1.1-linux-x86_64/bin:$PATH + +bundler_args: "--deployment --without development production --with mysql postgresql --jobs 3 --retry 3" script: "./script/ci/build.sh" diff --git a/Changelog.md b/Changelog.md index a62e25875..9a162a2a4 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,208 @@ +# 0.6.0.0 + +## Warning: This release contains long migrations + +This diaspora\* releases comes with a few database cleanup migrations and they could possible take a while. While you should always do that, it is especially important this time to make sure you run the migrations inside a detachable environment like `screen` or `tmux`. A interrupted SSH session could possibly harm your database. Also, please make a backup. + +## The DB environment variable is gone + +With Bundler 1.10 supporting optional groups, we removed the DB environment variable. When updating to this release, please update +bundler and select the database support you want: + +```sh +gem install bundler +bundle install --with mysql # For MySQL and MariaDB +bundle install --with postgresql # For PostgreSQL +``` + +For production setups we now additionally recommend adding the `--deployment` flag. +If you set the DB environment variable anywhere, that's no longer necessary. + +## Supported Ruby versions + +This release recommends using Ruby 2.3, while retaining Ruby 2.1 as an officially supported version. +Ruby 2.0 is no longer officially supported. + +## Configuration changes + +Please note that the default listen parameter for production setups got +changed. diaspora\* will no longer listen on `0.0.0.0:3000` as it will now +bind to an UNIX socket at `unix:tmp/diaspora.sock`. Please change your local +`diaspora.yml` if necessary. + +## Redis namespace support dropped + +We dropped support for Redis namespaces in this release. If you previously set +a custom namespace, please note that diaspora\* will no longer use the +configured value. By default, Redis supports up to 8 databases which can be +selected via the Redis URL in `diaspora.yml`. Please check the examples +provided in our configuration example file. + +## Terms of Use design changes + +With the port to Bootstrap 3, app/views/terms/default.haml has a new structure. If you have created a customised app/views/terms/terms.haml or app/views/terms/terms.erb file, you will need to edit those files to base your customisations on the new default.haml file. + +## API authentication + +This release makes diaspora\* a OpenID Connect provider. This means you can authenticate to third parties with your diaspora\* account and let +them act as your diaspora\* account on your behalf. This feature is still considered in early development, we still expect edge cases and advanced +features of the specificiation to not be handled correctly or be missing. But we expect a basic OpenID Connect compliant client to work. Please submit issues! +We will also most likely still change the authorization scopes we offer and started with a very minimal set. +Most work still required is on documentation as well as designing and implementing the data API for all of Diaspora's functionality. +Contributions are very welcome, the hard work is done! + +## Vines got replaced by Prosody + +Due to many issues with Vines, we decided to remove Vines and offer a Prosody +example configuration instead. [Check the +wiki](https://wiki.diasporafoundation.org/Integration/Chat#Vines_to_Prosody) +for more information on how to migrate to Prosody if you've been using Vines +before. + +## Sidekiq queue changes + +We've decreased the amount of sidekiq queues from 13 to 5 in PR [#6950](https://github.com/diaspora/diaspora/pull/6950). +The new queues are organized according to priority for the jobs they will process. When upgrading please make sure to +empty the sidekiq queues before shutting down the server for an update. + +If you run your sidekiq with a custom queue configuration, please make sure to update that for the new queues. + +The new queues are: `urgent, high, medium, low, default`. + +When you upgrade to the new version, some jobs may persist in the old queues. To move them to the default queue, +so they're processed, run: + +``` +bin/rake migrations:legacy_queues +``` + +Note that this will retry all dead jobs, if you want to prevent that empty the dead queue first. + +The command will report queues that still have jobs and launch sidekiq process for that queues. + +## Refactor +* Improve bookmarklet [#5904](https://github.com/diaspora/diaspora/pull/5904) +* Update listen configuration to listen on unix sockets by default [#5974](https://github.com/diaspora/diaspora/pull/5974) +* Port to Bootstrap 3 [#6015](https://github.com/diaspora/diaspora/pull/6015) +* Use a fixed width for the mobile drawer [#6057](https://github.com/diaspora/diaspora/pull/6057) +* Replace jquery.autoresize with autosize [#6104](https://github.com/diaspora/diaspora/pull/6104) +* Improve mobile conversation design [#6087](https://github.com/diaspora/diaspora/pull/6087) +* Replace remaining faceboxes with Bootstrap modals [#6106](https://github.com/diaspora/diaspora/pull/6106) [#6161](https://github.com/diaspora/diaspora/pull/6161) +* Rewrite header using Bootstrap 3 [#6109](https://github.com/diaspora/diaspora/pull/6109) [#6130](https://github.com/diaspora/diaspora/pull/6130) [#6132](https://github.com/diaspora/diaspora/pull/6132) +* Use upstream CSS mappings for Entypo [#6158](https://github.com/diaspora/diaspora/pull/6158) +* Replace some mobile icons with Entypo [#6218](https://github.com/diaspora/diaspora/pull/6218) +* Refactor publisher backbone view [#6228](https://github.com/diaspora/diaspora/pull/6228) +* Replace MBP.autogrow with autosize on mobile [#6261](https://github.com/diaspora/diaspora/pull/6261) +* Improve mobile drawer transition [#6233](https://github.com/diaspora/diaspora/pull/6233) +* Remove unused header icons and an unused favicon [#6283](https://github.com/diaspora/diaspora/pull/6283) +* Replace mobile icons for post interactions with Entypo icons [#6291](https://github.com/diaspora/diaspora/pull/6291) +* Replace jquery.autocomplete with typeahead.js [#6293](https://github.com/diaspora/diaspora/pull/6293) +* Redesign sidebars on stream pages [#6309](https://github.com/diaspora/diaspora/pull/6309) +* Improve ignored users styling [#6349](https://github.com/diaspora/diaspora/pull/6349) +* Use Blueimp image gallery instead of lightbox [#6301](https://github.com/diaspora/diaspora/pull/6301) +* Unify mobile and desktop header design [#6285](https://github.com/diaspora/diaspora/pull/6285) +* Add white background and box-shadow to stream elements [#6324](https://github.com/diaspora/diaspora/pull/6324) +* Override Bootstrap list group design [#6345](https://github.com/diaspora/diaspora/pull/6345) +* Clean up publisher code [#6336](https://github.com/diaspora/diaspora/pull/6336) +* Port conversations to new design [#6431](https://github.com/diaspora/diaspora/pull/6431) +* Hide cancel button in publisher on small screens [#6435](https://github.com/diaspora/diaspora/pull/6435) +* Replace mobile background with color [#6415](https://github.com/diaspora/diaspora/pull/6415) +* Port flash messages to backbone [#6395](https://github.com/diaspora/diaspora/pull/6395) +* Change login/registration/forgot password button color [#6504](https://github.com/diaspora/diaspora/pull/6504) +* A note regarding ignoring users was added to the failure messages on commenting/liking [#6646](https://github.com/diaspora/diaspora/pull/6646) +* Replace sidetiq with sidekiq-cron [#6616](https://github.com/diaspora/diaspora/pull/6616) +* Refactor mobile comment section [#6509](https://github.com/diaspora/diaspora/pull/6509) +* Set vertical resize as default for all textareas [#6654](https://github.com/diaspora/diaspora/pull/6654) +* Unifiy max-widths and page layouts [#6675](https://github.com/diaspora/diaspora/pull/6675) +* Enable autosizing for all textareas [#6674](https://github.com/diaspora/diaspora/pull/6674) +* Stream faces are gone [#6686](https://github.com/diaspora/diaspora/pull/6686) +* Refactor mobile javascript and add tests [#6394](https://github.com/diaspora/diaspora/pull/6394) +* Dropped `parent_author_signature` from relayables [#6586](https://github.com/diaspora/diaspora/pull/6586) +* Attached ShareVisibilities to the User, not the Contact [#6723](https://github.com/diaspora/diaspora/pull/6723) +* Refactor mentions input, now based on typeahead.js [#6728](https://github.com/diaspora/diaspora/pull/6728) +* Optimized the pod up checks [#6727](https://github.com/diaspora/diaspora/pull/6727) +* Prune and do not create aspect visibilities for public posts [#6732](https://github.com/diaspora/diaspora/pull/6732) +* Optimized mobile login and registration forms [#6764](https://github.com/diaspora/diaspora/pull/6764) +* Redesign stream pages [#6535](https://github.com/diaspora/diaspora/pull/6535) +* Improve search and mentions suggestions [#6788](https://github.com/diaspora/diaspora/pull/6788) +* Redesign back to top button [#6782](https://github.com/diaspora/diaspora/pull/6782) +* Adjusted Facebook integration for a successful review [#6778](https://github.com/diaspora/diaspora/pull/6778) +* Redirect to the sign-in page instead of the stream on account deletion [#6784](https://github.com/diaspora/diaspora/pull/6784) +* Removed own unicorn killer by a maintained third-party gem [#6792](https://github.com/diaspora/diaspora/pull/6792) +* Removed deprecated `REDISTOGO_URL` environment variable [#6863](https://github.com/diaspora/diaspora/pull/6863) +* Use Poltergeist instead of Selenium [#6768](https://github.com/diaspora/diaspora/pull/6768) +* Redesigned the landing page and added dedicated notes for podmins [#6268](https://github.com/diaspora/diaspora/pull/6268) +* Moved the entire federation implementation into its own gem. 🎉 [#6873](https://github.com/diaspora/diaspora/pull/6873) +* Remove `StatusMessage#raw_message` [#6921](https://github.com/diaspora/diaspora/pull/6921) +* Extract photo export into a service class [#6922](https://github.com/diaspora/diaspora/pull/6922) +* Use handlebars template for aspect membership dropdown [#6864](https://github.com/diaspora/diaspora/pull/6864) +* Extract relayable signatures into their own tables [#6932](https://github.com/diaspora/diaspora/pull/6932) +* Remove outdated columns from posts table [#6940](https://github.com/diaspora/diaspora/pull/6940) +* Remove some unused routes [#6781](https://github.com/diaspora/diaspora/pull/6781) +* Consolidate sidekiq queues [#6950](https://github.com/diaspora/diaspora/pull/6950) +* Don't re-render the whole comment stream when adding comments [#6406](https://github.com/diaspora/diaspora/pull/6406) +* Drop legacy invitation system [#6976](https://github.com/diaspora/diaspora/pull/6976) +* More consistent and updated meta tags throughout [#6998](https://github.com/diaspora/diaspora/pull/6998) + +## Bug fixes +* Destroy Participation when removing interactions with a post [#5852](https://github.com/diaspora/diaspora/pull/5852) +* Improve accessibility of a couple pages [#6227](https://github.com/diaspora/diaspora/pull/6227) +* Capitalize "Powered by diaspora" [#6254](https://github.com/diaspora/diaspora/pull/6254) +* Display username and avatar for NSFW posts in mobile view [#6245](https://github.com/diaspora/diaspora/pull/6245) +* Prevent multiple comment boxes on mobile [#6363](https://github.com/diaspora/diaspora/pull/6363) +* Correctly display location in post preview [#6429](https://github.com/diaspora/diaspora/pull/6429) +* Do not fail when submitting an empty comment in the mobile view [#6543](https://github.com/diaspora/diaspora/pull/6543) +* Limit flash message width on small devices [#6529](https://github.com/diaspora/diaspora/pull/6529) +* Add navbar on mobile when not logged in [#6483](https://github.com/diaspora/diaspora/pull/6483) +* Fix timeago tooltips for reshares [#6648](https://github.com/diaspora/diaspora/pull/6648) +* "Getting started" is now turned off after first visit on mobile [#6681](https://github.com/diaspora/diaspora/pull/6681) +* Fixed a 500 when liking on mobile without JS enabled [#6683](https://github.com/diaspora/diaspora/pull/6683) +* Fixed profile image upload in the mobile UI [#6684](https://github.com/diaspora/diaspora/pull/6684) +* Fixed eye not stopping all processes when trying to exit `script/server` [#6693](https://github.com/diaspora/diaspora/pull/6693) +* Do not change contacts count when marking notifications on the contacts page as read [#6718](https://github.com/diaspora/diaspora/pull/6718) +* Fix typeahead for non-latin characters [#6741](https://github.com/diaspora/diaspora/pull/6741) +* Fix upload size error on mobile [#6803](https://github.com/diaspora/diaspora/pull/6803) +* Connection tester handles invalid NodeInfo implementations [#6890](https://github.com/diaspora/diaspora/pull/6890) +* Do not allow to change email to an already used one [#6905](https://github.com/diaspora/diaspora/pull/6905) +* Correctly filter mentions on the server side [#6902](https://github.com/diaspora/diaspora/pull/6902) +* Add aspects to the aspect membership dropdown when creating them on the getting started page [#6864](https://github.com/diaspora/diaspora/pull/6864) +* Strip markdown from message preview in conversations list [#6923](https://github.com/diaspora/diaspora/pull/6923) +* Improve tag stream performance [#6903](https://github.com/diaspora/diaspora/pull/6903) +* Only show mutual contacts in conversations auto suggestions [#7001](https://github.com/diaspora/diaspora/pull/7001) + +## Features +* Support color themes [#6033](https://github.com/diaspora/diaspora/pull/6033) +* Add mobile services and privacy settings pages [#6086](https://github.com/diaspora/diaspora/pull/6086) +* Optionally make your extended profile details public [#6162](https://github.com/diaspora/diaspora/pull/6162) +* Add admin dashboard showing latest diaspora\* version [#6216](https://github.com/diaspora/diaspora/pull/6216) +* Display poll & location on mobile [#6238](https://github.com/diaspora/diaspora/pull/6238) +* Update counts on contacts page dynamically [#6240](https://github.com/diaspora/diaspora/pull/6240) +* Add support for relay based public post federation [#6207](https://github.com/diaspora/diaspora/pull/6207) +* Bigger mobile publisher [#6261](https://github.com/diaspora/diaspora/pull/6261) +* Backend information panel & health checks for known pods [#6290](https://github.com/diaspora/diaspora/pull/6290) +* Allow users to view a posts locations on an OpenStreetMap [#6256](https://github.com/diaspora/diaspora/pull/6256) +* Redesign and unify error pages [#6428](https://github.com/diaspora/diaspora/pull/6428) +* Redesign and refactor report admin interface [#6378](https://github.com/diaspora/diaspora/pull/6378) +* Add permalink icon to stream elements [#6457](https://github.com/diaspora/diaspora/pull/6457) +* Move reshare count to interactions for stream elements [#6487](https://github.com/diaspora/diaspora/pull/6487) +* Posts of ignored users are now visible on that profile page [#6617](https://github.com/diaspora/diaspora/pull/6617) +* Add white color theme [#6631](https://github.com/diaspora/diaspora/pull/6631) +* Add answer counts to poll [#6641](https://github.com/diaspora/diaspora/pull/6641) +* Check for collapsible posts after images in posts have loaded [#6671](https://github.com/diaspora/diaspora/pull/6671) +* Add reason for post report to email sent to admins [#6679](https://github.com/diaspora/diaspora/pull/6679) +* Add links to the single post view of the related post to photos in the photo stream [#6621](https://github.com/diaspora/diaspora/pull/6621) +* Add a note for people with disabled JavaScript [#6777](https://github.com/diaspora/diaspora/pull/6777) +* Do not include conversation subject in notification mail [#6910](https://github.com/diaspora/diaspora/pull/6910) +* Add 'Be excellent to each other!' to the sidebar [#6914](https://github.com/diaspora/diaspora/pull/6914) +* Expose Sidekiq dead queue configuration options +* Properly support pluralization in timeago strings [#6926](https://github.com/diaspora/diaspora/pull/6926) +* Return all contacts in people search [#6951](https://github.com/diaspora/diaspora/pull/6951) +* Make screenreaders read alerts [#6973](https://github.com/diaspora/diaspora/pull/6973) +* Display message when there are no posts in a stream [#6974](https://github.com/diaspora/diaspora/pull/6974) +* Add bootstrap-markdown editor to the publisher [#6551](https://github.com/diaspora/diaspora/pull/6551) +* Don't create notifications for ignored users [#6984](https://github.com/diaspora/diaspora/pull/6984) +* Fetch missing persons when receiving a mention for them [#6992](https://github.com/diaspora/diaspora/pull/6992) + # 0.5.10.2 Update to Rails 4.2.7.1 which fixes [CVE-2016-6316](https://groups.google.com/forum/#!topic/ruby-security-ann/8B2iV2tPRSE) and [CVE-2016-6317](https://groups.google.com/forum/#!topic/ruby-security-ann/WccgKSKiPZA). @@ -193,6 +398,7 @@ and on a pod that received that data. * Update perfect-scrollbar [#6085](https://github.com/diaspora/diaspora/pull/6085) * Remove top margin for first heading in a post [#6110](https://github.com/diaspora/diaspora/pull/6110) * Add link to pod statistics in right navigation [#6117](https://github.com/diaspora/diaspora/pull/6117) +* Update to Rails 4.2.3 [#6140](https://github.com/diaspora/diaspora/pull/6140) * Refactor person related URL generation [#6168](https://github.com/diaspora/diaspora/pull/6168) * Move webfinger and HCard generation out of the core and embed the `diaspora_federation-rails` gem [#6151](https://github.com/diaspora/diaspora/pull/6151/) * Refactor rspec tests to to use `let` instead of before blocks [#6199](https://github.com/diaspora/diaspora/pull/6199) diff --git a/Gemfile b/Gemfile index 72d68ce10..66efbfd37 100644 --- a/Gemfile +++ b/Gemfile @@ -9,22 +9,23 @@ gem "responders", "2.2.0" # Appserver gem "unicorn", "5.1.0", require: false +gem "unicorn-worker-killer", "0.4.4" # Federation -gem "diaspora_federation-rails", "0.0.13" +gem "diaspora_federation-rails", "0.1.4" # API and JSON -gem "acts_as_api", "0.4.2" +gem "acts_as_api", "0.4.3" gem "json", "1.8.3" gem "json-schema", "2.6.2" # Authentication -gem "devise", "3.5.6" +gem "devise", "4.2.0" gem "devise_lastseenable", "0.0.6" -gem "devise-token_authenticatable", "0.4.6" +gem "devise-token_authenticatable", "0.5.2" # Captcha @@ -32,16 +33,16 @@ gem "simple_captcha2", "0.4.0", require: "simple_captcha" # Background processing -gem "sidekiq", "3.4.2" +gem "sidekiq", "4.1.4" gem "sinatra", "1.4.7" # Scheduled processing -gem "sidetiq", "0.6.3" +gem "sidekiq-cron", "0.4.2" # Compression -gem "uglifier", "3.0.0" +gem "uglifier", "3.0.1" # Configuration @@ -53,19 +54,23 @@ gem "rack-cors", "0.4.0", require: "rack/cors" # CSS -gem "bootstrap-sass", "2.3.2.2" +gem "bootstrap-sass", "3.3.7" gem "compass-rails", "2.0.5" -gem "sass-rails", "5.0.4" -gem "autoprefixer-rails", "6.3.6.2" +gem "sass-rails", "5.0.6" +gem "autoprefixer-rails", "6.4.0.2" +gem "bootstrap-switch-rails", "3.3.3" # Database -ENV["DB"] ||= "mysql" +group :mysql, optional: true do + gem "mysql2", "0.4.4" +end +group :postgresql, optional: true do + gem "pg", "0.18.4" +end -gem "mysql2", "0.4.4" if ENV["DB"] == "all" || ENV["DB"] == "mysql" -gem "pg", "0.18.4" if ENV["DB"] == "all" || ENV["DB"] == "postgres" -gem "activerecord-import", "0.13.0" +gem "activerecord-import", "0.15.0" # File uploading @@ -79,40 +84,39 @@ gem "uuid", "2.3.8" # Icons -gem "entypo-rails", "2.2.3" +gem "entypo-rails", "3.0.0.pre.rc2" # JavaScript gem "backbone-on-rails", "1.2.0.0" -gem "handlebars_assets", "0.23.0" +gem "handlebars_assets", "0.23.1" gem "jquery-rails", "4.1.1" gem "jquery-ui-rails", "5.0.5" gem "js_image_paths", "0.1.0" -gem "js-routes", "1.2.6" +gem "js-routes", "1.2.9" source "https://rails-assets.org" do - gem "rails-assets-jquery", "1.12.0" # Should be kept in sync with jquery-rails + gem "rails-assets-jquery", "2.2.1" # Should be kept in sync with jquery-rails - gem "rails-assets-markdown-it", "6.0.5" + gem "rails-assets-markdown-it", "7.0.0" gem "rails-assets-markdown-it-hashtag", "0.4.0" - gem "rails-assets-markdown-it-diaspora-mention", "0.4.0" - gem "rails-assets-markdown-it-sanitizer", "0.4.1" + gem "rails-assets-markdown-it-diaspora-mention", "1.0.0" + gem "rails-assets-markdown-it-sanitizer", "0.4.2" gem "rails-assets-markdown-it--markdown-it-for-inline", "0.1.1" gem "rails-assets-markdown-it-sub", "1.0.0" gem "rails-assets-markdown-it-sup", "1.0.0" - gem "rails-assets-highlightjs", "9.4.0" + gem "rails-assets-highlightjs", "9.6.0" + gem "rails-assets-bootstrap-markdown", "2.10.0" # jQuery plugins - gem "rails-assets-jeresig--jquery.hotkeys", "0.2.0" gem "rails-assets-jquery-placeholder", "2.3.1" gem "rails-assets-jquery-textchange", "0.2.3" - gem "rails-assets-perfect-scrollbar", "0.6.11" - gem "rails-assets-jakobmattsson--jquery-elastic", "1.6.11" + gem "rails-assets-perfect-scrollbar", "0.6.12" + gem "rails-assets-autosize", "3.0.17" + gem "rails-assets-blueimp-gallery", "2.21.3" end -gem "facebox-rails", "0.2.0" - # Localization gem "http_accept_language", "2.0.5" @@ -122,33 +126,37 @@ gem "rails-i18n", "4.0.8" # Mail gem "markerb", "1.1.0" -gem "messagebus_ruby_api", "1.0.3" + +# Map +gem "leaflet-rails", "0.7.7" # Parsing gem "nokogiri", "1.6.8" gem "redcarpet", "3.3.4" -gem "twitter-text", "1.13.4" -gem "roxml", "3.1.6" +gem "twitter-text", "1.14.0" gem "ruby-oembed", "0.10.1" gem "open_graph_reader", "0.6.1" # Services gem "omniauth", "1.3.1" -gem "omniauth-facebook", "3.0.0" +gem "omniauth-facebook", "4.0.0" gem "omniauth-tumblr", "1.2" gem "omniauth-twitter", "1.2.1" gem "twitter", "5.16.0" gem "omniauth-wordpress", "0.2.2" +# OpenID Connect +gem "openid_connect", "0.12.0" + # Serializers gem "active_model_serializers", "0.9.5" # XMPP chat dependencies -gem "diaspora-vines", "0.2.0.develop.4" -gem "rails-assets-diaspora_jsxc", "0.1.4", source: "https://rails-assets.org" +gem "diaspora-prosody-config", "0.0.5" +gem "rails-assets-diaspora_jsxc", "0.1.5.develop.1", source: "https://rails-assets.org" # Tags @@ -160,12 +168,12 @@ gem "addressable", "2.3.8", require: "addressable/uri" gem "faraday", "0.9.2" gem "faraday_middleware", "0.10.0" gem "faraday-cookie_jar", "0.0.6" -gem "typhoeus", "1.0.2" +gem "typhoeus", "1.1.0" # Views -gem "gon", "6.0.1" -gem "haml", "4.0.7" +gem "gon", "6.1.0" +gem "hamlit", "2.5.0" gem "mobile-fu", "1.3.1" gem "will_paginate", "3.1.0" gem "rails-timeago", "2.11.0" @@ -185,6 +193,8 @@ gem "rubyzip", "1.2.0", require: "zip" # https://github.com/discourse/discourse/pull/238 gem "minitest" +gem "versionist", "1.5.0" + # Windows and OSX have an execjs compatible runtime built-in, Linux users should # install Node.js or use "therubyracer". # @@ -208,7 +218,7 @@ group :production do # we don"t install these on travis to speed up test runs # Process management - gem "eye", "0.7" + gem "eye", "0.8.1" # Redirects @@ -223,20 +233,24 @@ end group :development do # Automatic test runs gem "guard", "2.14.0", require: false - gem "listen", "~> 3.0.0", require: false gem "guard-cucumber", "2.1.2", require: false - gem "guard-rspec", "4.7.2", require: false + gem "guard-rspec", "4.7.3", require: false gem "guard-rubocop", "1.2.0", require: false gem "rb-fsevent", "0.9.7", require: false gem "rb-inotify", "0.9.7", require: false # Linters - gem "jshintrb", "0.3.0" - gem "rubocop", "0.40.0" + gem "rubocop", "0.40.0" + gem "haml_lint", "0.18.1" + gem "pronto", "0.7.0" + gem "pronto-eslint", "0.7.0" + gem "pronto-rubocop", "0.7.0" + gem "pronto-haml", "0.7.0" + gem "pronto-scss", "0.7.0", require: false # Preloading environment - gem "spring", "1.7.1" + gem "spring", "1.7.2" gem "spring-commands-rspec", "1.0.4" gem "spring-commands-cucumber", "1.0.1" @@ -245,7 +259,7 @@ group :development do gem "pry-byebug" # test coverage - gem "simplecov", "0.11.2", require: false + gem "simplecov", "0.12.0", require: false gem "turbo_dev_assets", "0.0.2" end @@ -254,14 +268,17 @@ group :test do # RSpec (unit tests, some integration tests) gem "fixture_builder", "0.4.1" - gem "fuubar", "2.0.0" - gem "test_after_commit", "1.0.0" + gem "fuubar", "2.1.1" + gem "test_after_commit", "1.1.0" # Cucumber (integration tests) gem "capybara", "2.7.1" gem "database_cleaner", "1.5.3" - gem "selenium-webdriver", "2.47.1" + gem "poltergeist", "1.10.0" + + gem "cucumber-api-steps", "0.13", require: false + gem "json_spec", "1.1.4" # General helpers @@ -270,15 +287,18 @@ group :test do gem "webmock", "2.1.0", require: false gem "shoulda-matchers", "3.1.1" - gem "diaspora_federation-test", "0.0.13" + gem "diaspora_federation-test", "0.1.4" + + # Coverage + gem 'coveralls', require: false end group :development, :test do # RSpec (unit tests, some integration tests) - gem "rspec-rails", "3.4.2" + gem "rspec-rails", "3.5.1" # Cucumber (integration tests) - gem "cucumber-rails", "1.4.3", require: false + gem "cucumber-rails", "1.4.4", require: false # Jasmine (client side application tests (JS)) gem "jasmine", "2.4.0" diff --git a/Gemfile.lock b/Gemfile.lock index 252d02825..b8906af72 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -34,8 +34,8 @@ GEM activemodel (= 4.2.7.1) activesupport (= 4.2.7.1) arel (~> 6.0) - activerecord-import (0.13.0) - activerecord (>= 3.0) + activerecord-import (0.15.0) + activerecord (>= 3.2) activesupport (4.2.7.1) i18n (~> 0.7) json (~> 1.7, >= 1.7.7) @@ -44,7 +44,7 @@ GEM tzinfo (~> 1.1) acts-as-taggable-on (3.5.0) activerecord (>= 3.2, < 5) - acts_as_api (0.4.2) + acts_as_api (0.4.3) activemodel (>= 3.0.0) activesupport (>= 3.0.0) rack (>= 1.1.0) @@ -55,7 +55,8 @@ GEM fog (>= 1.8.0) unf ast (2.3.0) - autoprefixer-rails (6.3.6.2) + attr_required (1.0.1) + autoprefixer-rails (6.4.0.2) execjs backbone-on-rails (1.2.0.0) eco @@ -63,8 +64,11 @@ GEM jquery-rails railties bcrypt (3.1.11) - bootstrap-sass (2.3.2.2) - sass (~> 3.2) + bindata (2.3.1) + bootstrap-sass (3.3.7) + autoprefixer-rails (>= 5.2.1) + sass (>= 3.3.4) + bootstrap-switch-rails (3.3.3) buftok (0.2.0) builder (3.2.2) byebug (9.0.5) @@ -81,18 +85,33 @@ GEM json (>= 1.7) mime-types (>= 1.16) mimemagic (>= 0.3.0) - celluloid (0.16.0) - timers (~> 4.0.0) - celluloid-io (0.16.2) - celluloid (>= 0.16.0) - nio4r (>= 1.1.0) - childprocess (0.5.9) - ffi (~> 1.0, >= 1.0.11) - chunky_png (1.3.5) + celluloid (0.17.3) + celluloid-essentials + celluloid-extras + celluloid-fsm + celluloid-pool + celluloid-supervision + timers (>= 4.1.1) + celluloid-essentials (0.20.5) + timers (>= 4.1.1) + celluloid-extras (0.20.5) + timers (>= 4.1.1) + celluloid-fsm (0.20.5) + timers (>= 4.1.1) + celluloid-io (0.17.3) + celluloid (>= 0.17.2) + nio4r (>= 1.1) + timers (>= 4.1.1) + celluloid-pool (0.20.5) + timers (>= 4.1.1) + celluloid-supervision (0.20.6) + timers (>= 4.1.1) + chunky_png (1.3.6) + cliver (0.3.2) coderay (1.1.1) - coffee-rails (4.1.1) + coffee-rails (4.2.1) coffee-script (>= 2.2.0) - railties (>= 4.0.0, < 5.1.x) + railties (>= 4.0.0, < 5.2.x) coffee-script (2.4.1) coffee-script-source execjs @@ -113,8 +132,15 @@ GEM compass (~> 1.0.0) sass-rails (< 5.1) sprockets (< 2.13) + concurrent-ruby (1.0.2) configurate (0.3.1) connection_pool (2.2.0) + coveralls (0.8.15) + json (>= 1.8, < 3) + simplecov (~> 0.12.0) + term-ansicolor (~> 1.3) + thor (~> 0.19.1) + tins (>= 1.6.0, < 2) crack (0.4.3) safe_yaml (~> 1.0.0) cucumber (2.4.0) @@ -125,50 +151,47 @@ GEM gherkin (~> 4.0) multi_json (>= 1.7.5, < 2.0) multi_test (>= 0.1.2) + cucumber-api-steps (0.13) + cucumber (>= 1.2.1) + jsonpath (>= 0.1.2) + rspec (>= 2.12.0) cucumber-core (1.5.0) gherkin (~> 4.0) - cucumber-rails (1.4.3) + cucumber-rails (1.4.4) capybara (>= 1.1.2, < 3) cucumber (>= 1.3.8, < 3) mime-types (>= 1.16, < 4) nokogiri (~> 1.5) - railties (>= 3, < 5) + railties (>= 3, < 5.1) cucumber-wire (0.0.1) database_cleaner (1.5.3) - devise (3.5.6) + devise (4.2.0) bcrypt (~> 3.0) orm_adapter (~> 0.1) - railties (>= 3.2.6, < 5) + railties (>= 4.1.0, < 5.1) responders - thread_safe (~> 0.1) warden (~> 1.2.3) - devise-token_authenticatable (0.4.6) - devise (>= 3.5.2, < 4.0.0) + devise-token_authenticatable (0.5.2) + devise (>= 4.0.0, < 4.3.0) devise_lastseenable (0.0.6) devise rails (>= 3.0.4) - diaspora-vines (0.2.0.develop.4) - activerecord (~> 4.1) - bcrypt (~> 3.1) - em-hiredis (~> 0.3.0) - eventmachine (~> 1.0.8) - http_parser.rb (~> 0.6) - nokogiri (~> 1.6) - diaspora_federation (0.0.13) + diaspora-prosody-config (0.0.5) + diaspora_federation (0.1.4) faraday (~> 0.9.0) faraday_middleware (~> 0.10.0) - nokogiri (~> 1.6, >= 1.6.7.2) + nokogiri (~> 1.6, >= 1.6.8) typhoeus (~> 1.0) valid (~> 1.0) - diaspora_federation-rails (0.0.13) - diaspora_federation (= 0.0.13) + diaspora_federation-rails (0.1.4) + diaspora_federation (= 0.1.4) rails (~> 4.2) - diaspora_federation-test (0.0.13) - diaspora_federation (= 0.0.13) - factory_girl (~> 4.5, >= 4.5.0) + diaspora_federation-test (0.1.4) + diaspora_federation (= 0.1.4) + factory_girl (~> 4.7) diff-lcs (1.2.5) docile (1.1.5) - domain_name (0.5.20160310) + domain_name (0.5.20160615) unf (>= 0.0.5, < 1.0.0) eco (1.0.0) coffee-script @@ -176,27 +199,24 @@ GEM execjs eco-source (1.1.0.rc.1) ejs (1.1.1) - em-hiredis (0.3.1) - eventmachine (~> 1.0) - hiredis (~> 0.6.0) - entypo-rails (2.2.3) - railties (>= 3.1, <= 5) + entypo-rails (3.0.0.pre.rc2) + railties (>= 4.1, <= 5) equalizer (0.0.10) erubis (2.7.0) + eslintrb (2.1.0) + execjs + multi_json (>= 1.3) + rake ethon (0.9.0) ffi (>= 1.3.0) - eventmachine (1.0.9.1) excon (0.49.0) execjs (2.7.0) - eye (0.7) - celluloid (~> 0.16.0) - celluloid-io (~> 0.16.0) + eye (0.8.1) + celluloid (~> 0.17.3) + celluloid-io (~> 0.17.0) sigar (~> 0.7.3) state_machine thor - facebox-rails (0.2.0) - railties (>= 3.0, < 5.0) - thor (>= 0.14, < 2.0) factory_girl (4.7.0) activesupport (>= 3.0.0) factory_girl_rails (4.7.0) @@ -209,7 +229,7 @@ GEM http-cookie (~> 1.0.0) faraday_middleware (0.10.0) faraday (>= 0.7.4, < 0.10) - ffi (1.9.10) + ffi (1.9.14) fission (0.5.0) CFPropertyList (~> 2.2) fixture_builder (0.4.1) @@ -342,16 +362,20 @@ GEM fog-xml (0.1.2) fog-core nokogiri (~> 1.5, >= 1.5.11) - font-awesome-rails (4.6.3.0) + font-awesome-rails (4.6.3.1) railties (>= 3.2, < 5.1) formatador (0.2.5) - fuubar (2.0.0) + fuubar (2.1.1) rspec (~> 3.0) ruby-progressbar (~> 1.4) + get_process_mem (0.2.1) gherkin (4.0.0) + gitlab (3.6.1) + httparty + terminal-table globalid (0.3.7) activesupport (>= 4.1.0) - gon (6.0.1) + gon (6.1.0) actionpack (>= 3.0) json multi_json @@ -370,7 +394,7 @@ GEM cucumber (~> 2.0) guard-compat (~> 1.0) nenv (~> 0.1) - guard-rspec (4.7.2) + guard-rspec (4.7.3) guard (~> 2.1) guard-compat (~> 1.1) rspec (>= 2.99.0, < 4.0) @@ -379,7 +403,16 @@ GEM rubocop (~> 0.20) haml (4.0.7) tilt - handlebars_assets (0.23.0) + haml_lint (0.18.1) + haml (~> 4.0) + rake (>= 10, < 12) + rubocop (>= 0.36.0) + sysexits (~> 1.1) + hamlit (2.5.0) + temple (~> 0.7.6) + thor + tilt + handlebars_assets (0.23.1) execjs (~> 2.0) multi_json (~> 1.0) sprockets (>= 2.0.0) @@ -387,7 +420,6 @@ GEM hashdiff (0.3.0) hashie (3.4.4) hike (1.2.3) - hiredis (0.6.1) hitimes (1.2.4) http (1.0.4) addressable (~> 2.3) @@ -399,6 +431,10 @@ GEM http-form_data (1.0.1) http_accept_language (2.0.5) http_parser.rb (0.6.0) + httparty (0.13.7) + json (~> 1.8) + multi_xml (>= 0.5.2) + httpclient (2.8.1) i18n (0.7.0) i18n-inflector (2.6.7) i18n (>= 0.4.1) @@ -406,7 +442,6 @@ GEM actionpack (>= 3.0.0) i18n-inflector (~> 2.6) railties (>= 3.0.0) - ice_cube (0.11.1) inflecto (0.0.2) ipaddress (0.8.3) jasmine (2.4.0) @@ -422,26 +457,35 @@ GEM thor (>= 0.14, < 2.0) jquery-ui-rails (5.0.5) railties (>= 3.2.16) - js-routes (1.2.6) + js-routes (1.2.9) railties (>= 3.2) sprockets-rails js_image_paths (0.1.0) rails (~> 4.0) - jshintrb (0.3.0) - execjs - multi_json (>= 1.3) - rake json (1.8.3) + json-jwt (1.6.3) + activesupport + bindata + multi_json (>= 1.3) + securecompare + url_safe_base64 json-schema (2.6.2) addressable (~> 2.3.8) - jwt (1.5.1) + json_spec (1.1.4) + multi_json (~> 1.0) + rspec (>= 2.0, < 4.0) + jsonpath (0.5.8) + multi_json + jwt (1.5.4) kaminari (0.16.3) actionpack (>= 3.0.0) activesupport (>= 3.0.0) kgio (2.10.0) - listen (3.0.8) + leaflet-rails (0.7.7) + listen (3.1.5) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) little-plugger (1.1.4) logging (2.1.0) little-plugger (~> 1.1) @@ -458,7 +502,6 @@ GEM markerb (1.1.0) memoizable (0.4.2) thread_safe (~> 0.3, >= 0.3.1) - messagebus_ruby_api (1.0.3) method_source (0.8.2) mime-types (3.1) mime-types-data (~> 3.2015) @@ -478,24 +521,26 @@ GEM naught (1.1.0) nenv (0.3.0) nested_form (0.3.2) - nio4r (1.2.0) + nio4r (1.2.1) nokogiri (1.6.8) mini_portile2 (~> 2.1.0) pkg-config (~> 1.1.7) - notiffany (0.1.0) + notiffany (0.1.1) nenv (~> 0.1) shellany (~> 0.0) oauth (0.5.1) - oauth2 (1.1.0) + oauth2 (1.2.0) faraday (>= 0.8, < 0.10) - jwt (~> 1.0, < 1.5.2) + jwt (~> 1.0) multi_json (~> 1.3) multi_xml (~> 0.5) rack (>= 1.2, < 3) + octokit (4.3.0) + sawyer (~> 0.7.0, >= 0.5.3) omniauth (1.3.1) hashie (>= 1.2, < 4) rack (>= 1.0, < 3) - omniauth-facebook (3.0.0) + omniauth-facebook (4.0.0) omniauth-oauth2 (~> 1.2) omniauth-oauth (1.1.0) oauth @@ -514,13 +559,48 @@ GEM open_graph_reader (0.6.1) faraday (~> 0.9.0) nokogiri (~> 1.6) + openid_connect (0.12.0) + activemodel + attr_required (>= 1.0.0) + json (>= 1.4.3) + json-jwt (>= 1.5.0) + rack-oauth2 (>= 1.3.1) + swd (>= 1.0.0) + tzinfo + validate_email + validate_url + webfinger (>= 1.0.1) orm_adapter (0.5.0) parser (2.3.1.2) ast (~> 2.2) + pg (0.18.4) phantomjs (2.1.1.0) pkg-config (1.1.7) + poltergeist (1.10.0) + capybara (~> 2.1) + cliver (~> 0.3.1) + websocket-driver (>= 0.2.0) powerpack (0.1.1) - pry (0.10.3) + pronto (0.7.0) + gitlab (~> 3.6, >= 3.4.0) + httparty (~> 0.13.7) + octokit (~> 4.3, >= 4.1.0) + rainbow (~> 2.1) + rugged (~> 0.24, >= 0.23.0) + thor (~> 0.19.0) + pronto-eslint (0.7.0) + eslintrb (~> 2.0, >= 2.0.0) + pronto (~> 0.7.0) + pronto-haml (0.7.0) + haml_lint (~> 0.16, >= 0.15.0) + pronto (~> 0.7.0) + pronto-rubocop (0.7.0) + pronto (~> 0.7.0) + rubocop (~> 0.38, >= 0.35.0) + pronto-scss (0.7.0) + pronto (~> 0.7.0) + scss_lint (~> 0.43, >= 0.43.0) + pry (0.10.4) coderay (~> 1.1.0) method_source (~> 0.8.1) slop (~> 3.4) @@ -536,6 +616,12 @@ GEM activesupport rack-mobile-detect (0.4.0) rack + rack-oauth2 (1.4.0) + activesupport (>= 2.3) + attr_required (>= 0.0.5) + httpclient (>= 2.4) + multi_json (>= 1.3.6) + rack (>= 1.1) rack-piwik (0.3.0) rack-pjax (0.8.0) nokogiri (~> 1.5) @@ -558,7 +644,13 @@ GEM bundler (>= 1.3.0, < 2.0) railties (= 4.2.7.1) sprockets-rails - rails-assets-diaspora_jsxc (0.1.4) + rails-assets-autosize (3.0.17) + rails-assets-blueimp-gallery (2.21.3) + rails-assets-bootstrap (3.3.7) + rails-assets-jquery (>= 1.9.1, < 4) + rails-assets-bootstrap-markdown (2.10.0) + rails-assets-bootstrap (~> 3) + rails-assets-diaspora_jsxc (0.1.5.develop.1) rails-assets-favico.js (~> 0.3.9) rails-assets-jquery (>= 1.11) rails-assets-jquery-colorbox (~> 1.6.3) @@ -566,15 +658,11 @@ GEM rails-assets-jquery.slimscroll (~> 1.3.6) rails-assets-jquery.ui (~> 1.11.4) rails-assets-favico.js (0.3.10) - rails-assets-highlightjs (9.4.0) - rails-assets-jakobmattsson--jquery-elastic (1.6.11) - rails-assets-jquery (>= 1.2.6) + rails-assets-highlightjs (9.6.0) rails-assets-jasmine (2.4.1) rails-assets-jasmine-ajax (3.2.0) rails-assets-jasmine (~> 2) - rails-assets-jeresig--jquery.hotkeys (0.2.0) - rails-assets-jquery (>= 1.4.2) - rails-assets-jquery (1.12.0) + rails-assets-jquery (2.2.1) rails-assets-jquery-colorbox (1.6.4) rails-assets-jquery (>= 1.3.2) rails-assets-jquery-fullscreen-plugin (0.5.0) @@ -582,17 +670,17 @@ GEM rails-assets-jquery (>= 1.6) rails-assets-jquery-textchange (0.2.3) rails-assets-jquery - rails-assets-jquery.slimscroll (1.3.7) + rails-assets-jquery.slimscroll (1.3.8) rails-assets-jquery.ui (1.11.4) rails-assets-jquery (>= 1.6) rails-assets-markdown-it--markdown-it-for-inline (0.1.1) - rails-assets-markdown-it (6.0.5) - rails-assets-markdown-it-diaspora-mention (0.4.0) + rails-assets-markdown-it (7.0.0) + rails-assets-markdown-it-diaspora-mention (1.0.0) rails-assets-markdown-it-hashtag (0.4.0) - rails-assets-markdown-it-sanitizer (0.4.1) + rails-assets-markdown-it-sanitizer (0.4.2) rails-assets-markdown-it-sub (1.0.0) rails-assets-markdown-it-sup (1.0.0) - rails-assets-perfect-scrollbar (0.6.11) + rails-assets-perfect-scrollbar (0.6.12) rails-deprecated_sanitizer (1.0.3) activesupport (>= 4.2.0.alpha) rails-dom-testing (1.0.7) @@ -637,37 +725,34 @@ GEM nokogiri (>= 1.4.1) trollop redcarpet (3.3.4) - redis (3.2.2) + redis (3.3.1) redis-namespace (1.5.2) redis (~> 3.0, >= 3.0.4) remotipart (1.2.1) request_store (1.3.1) responders (2.2.0) railties (>= 4.2.0, < 5.1) - roxml (3.1.6) - activesupport (>= 2.3.0) - nokogiri (>= 1.3.3) - rspec (3.4.0) - rspec-core (~> 3.4.0) - rspec-expectations (~> 3.4.0) - rspec-mocks (~> 3.4.0) - rspec-core (3.4.4) - rspec-support (~> 3.4.0) - rspec-expectations (3.4.0) + rspec (3.5.0) + rspec-core (~> 3.5.0) + rspec-expectations (~> 3.5.0) + rspec-mocks (~> 3.5.0) + rspec-core (3.5.2) + rspec-support (~> 3.5.0) + rspec-expectations (3.5.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.4.0) - rspec-mocks (3.4.1) + rspec-support (~> 3.5.0) + rspec-mocks (3.5.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.4.0) - rspec-rails (3.4.2) - actionpack (>= 3.0, < 4.3) - activesupport (>= 3.0, < 4.3) - railties (>= 3.0, < 4.3) - rspec-core (~> 3.4.0) - rspec-expectations (~> 3.4.0) - rspec-mocks (~> 3.4.0) - rspec-support (~> 3.4.0) - rspec-support (3.4.1) + rspec-support (~> 3.5.0) + rspec-rails (3.5.1) + actionpack (>= 3.0) + activesupport (>= 3.0) + railties (>= 3.0) + rspec-core (~> 3.5.0) + rspec-expectations (~> 3.5.0) + rspec-mocks (~> 3.5.0) + rspec-support (~> 3.5.0) + rspec-support (3.5.0) rubocop (0.40.0) parser (>= 2.3.1.0, < 3.0) powerpack (~> 0.1) @@ -676,40 +761,44 @@ GEM unicode-display_width (~> 1.0, >= 1.0.1) ruby-oembed (0.10.1) ruby-progressbar (1.8.1) + ruby_dep (1.3.1) rubyzip (1.2.0) + rufus-scheduler (3.2.1) + rugged (0.24.0) safe_yaml (1.0.4) sass (3.4.22) - sass-rails (5.0.4) - railties (>= 4.0.0, < 5.0) + sass-rails (5.0.6) + railties (>= 4.0.0, < 6) sass (~> 3.1) sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) tilt (>= 1.1, < 3) - selenium-webdriver (2.47.1) - childprocess (~> 0.5) - multi_json (~> 1.0) - rubyzip (~> 1.0) - websocket (~> 1.0) + sawyer (0.7.0) + addressable (>= 2.3.5, < 2.5) + faraday (~> 0.8, < 0.10) + scss_lint (0.49.0) + rake (>= 0.9, < 12) + sass (~> 3.4.20) + securecompare (1.0.0) shellany (0.0.1) shoulda-matchers (3.1.1) activesupport (>= 4.0.0) - sidekiq (3.4.2) - celluloid (~> 0.16.0) + sidekiq (4.1.4) + concurrent-ruby (~> 1.0) connection_pool (~> 2.2, >= 2.2.0) - json (~> 1.0) redis (~> 3.2, >= 3.2.1) - redis-namespace (~> 1.5, >= 1.5.2) - sidetiq (0.6.3) - celluloid (>= 0.14.1) - ice_cube (= 0.11.1) - sidekiq (>= 3.0.0) + sinatra (>= 1.4.7) + sidekiq-cron (0.4.2) + redis-namespace (>= 1.5.2) + rufus-scheduler (>= 2.0.24) + sidekiq (>= 4.0.0) sigar (0.7.3) simple_captcha2 (0.4.0) rails (>= 4.1) simple_oauth (0.3.1) - simplecov (0.11.2) + simplecov (0.12.0) docile (~> 1.1.0) - json (~> 1.8) + json (>= 1.8, < 3) simplecov-html (~> 0.10.0) simplecov-html (0.10.0) sinatra (1.4.7) @@ -719,7 +808,7 @@ GEM sinon-rails (1.15.0) railties (>= 3.1) slop (3.6.0) - spring (1.7.1) + spring (1.7.2) spring-commands-cucumber (1.0.1) spring (>= 0.9.1) spring-commands-rspec (1.0.4) @@ -734,15 +823,27 @@ GEM activesupport (>= 3.0) sprockets (>= 2.8, < 4.0) state_machine (1.2.0) + swd (1.0.1) + activesupport (>= 3) + attr_required (>= 0.0.5) + httpclient (>= 2.4) + i18n + json (>= 1.4.3) + sysexits (1.2.0) systemu (2.6.5) - test_after_commit (1.0.0) + temple (0.7.7) + term-ansicolor (1.3.2) + tins (~> 1.0) + terminal-table (1.6.0) + test_after_commit (1.1.0) activerecord (>= 3.2) thor (0.19.1) thread_safe (0.3.5) tilt (1.4.1) timecop (0.8.1) - timers (4.0.4) + timers (4.1.1) hitimes + tins (1.12.0) trollop (2.1.2) turbo_dev_assets (0.0.2) twitter (5.16.0) @@ -756,104 +857,135 @@ GEM memoizable (~> 0.4.0) naught (~> 1.0) simple_oauth (~> 0.3.0) - twitter-text (1.13.4) + twitter-text (1.14.0) unf (~> 0.1.0) - typhoeus (1.0.2) + typhoeus (1.1.0) ethon (>= 0.9.0) tzinfo (1.2.2) thread_safe (~> 0.1) - uglifier (3.0.0) + uglifier (3.0.1) execjs (>= 0.3.0, < 3) unf (0.1.4) unf_ext unf_ext (0.0.7.2) - unicode-display_width (1.0.5) + unicode-display_width (1.1.0) unicorn (5.1.0) kgio (~> 2.6) raindrops (~> 0.7) + unicorn-worker-killer (0.4.4) + get_process_mem (~> 0) + unicorn (>= 4, < 6) + url_safe_base64 (0.2.2) uuid (2.3.8) macaddr (~> 1.0) - valid (1.1.0) + valid (1.2.0) + validate_email (0.1.6) + activemodel (>= 3.0) + mail (>= 2.2.5) + validate_url (1.0.2) + activemodel (>= 3.0.0) + addressable + versionist (1.5.0) + activesupport (>= 3) + railties (>= 3) + yard (~> 0.7) warden (1.2.6) rack (>= 1.0) + webfinger (1.0.2) + activesupport + httpclient (>= 2.4) + multi_json webmock (2.1.0) addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff - websocket (1.2.3) + websocket-driver (0.6.4) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.2) will_paginate (3.1.0) xml-simple (1.1.5) xpath (2.0.0) nokogiri (~> 1.3) + yard (0.8.7.6) PLATFORMS ruby DEPENDENCIES active_model_serializers (= 0.9.5) - activerecord-import (= 0.13.0) + activerecord-import (= 0.15.0) acts-as-taggable-on (= 3.5.0) - acts_as_api (= 0.4.2) + acts_as_api (= 0.4.3) addressable (= 2.3.8) asset_sync (= 1.1.0) - autoprefixer-rails (= 6.3.6.2) + autoprefixer-rails (= 6.4.0.2) backbone-on-rails (= 1.2.0.0) - bootstrap-sass (= 2.3.2.2) + bootstrap-sass (= 3.3.7) + bootstrap-switch-rails (= 3.3.3) capybara (= 2.7.1) carrierwave (= 0.11.2) compass-rails (= 2.0.5) configurate (= 0.3.1) - cucumber-rails (= 1.4.3) + coveralls + cucumber-api-steps (= 0.13) + cucumber-rails (= 1.4.4) database_cleaner (= 1.5.3) - devise (= 3.5.6) - devise-token_authenticatable (= 0.4.6) + devise (= 4.2.0) + devise-token_authenticatable (= 0.5.2) devise_lastseenable (= 0.0.6) - diaspora-vines (= 0.2.0.develop.4) - diaspora_federation-rails (= 0.0.13) - diaspora_federation-test (= 0.0.13) - entypo-rails (= 2.2.3) - eye (= 0.7) - facebox-rails (= 0.2.0) + diaspora-prosody-config (= 0.0.5) + diaspora_federation-rails (= 0.1.4) + diaspora_federation-test (= 0.1.4) + entypo-rails (= 3.0.0.pre.rc2) + eye (= 0.8.1) factory_girl_rails (= 4.7.0) faraday (= 0.9.2) faraday-cookie_jar (= 0.0.6) faraday_middleware (= 0.10.0) fixture_builder (= 0.4.1) fog (= 1.38.0) - fuubar (= 2.0.0) - gon (= 6.0.1) + fuubar (= 2.1.1) + gon (= 6.1.0) guard (= 2.14.0) guard-cucumber (= 2.1.2) - guard-rspec (= 4.7.2) + guard-rspec (= 4.7.3) guard-rubocop (= 1.2.0) - haml (= 4.0.7) - handlebars_assets (= 0.23.0) + haml_lint (= 0.18.1) + hamlit (= 2.5.0) + handlebars_assets (= 0.23.1) http_accept_language (= 2.0.5) i18n-inflector-rails (= 1.0.7) jasmine (= 2.4.0) jasmine-jquery-rails (= 2.0.3) jquery-rails (= 4.1.1) jquery-ui-rails (= 5.0.5) - js-routes (= 1.2.6) + js-routes (= 1.2.9) js_image_paths (= 0.1.0) - jshintrb (= 0.3.0) json (= 1.8.3) json-schema (= 2.6.2) - listen (~> 3.0.0) + json_spec (= 1.1.4) + leaflet-rails (= 0.7.7) logging-rails (= 0.5.0) markerb (= 1.1.0) - messagebus_ruby_api (= 1.0.3) mini_magick (= 4.5.1) minitest mobile-fu (= 1.3.1) mysql2 (= 0.4.4) nokogiri (= 1.6.8) omniauth (= 1.3.1) - omniauth-facebook (= 3.0.0) + omniauth-facebook (= 4.0.0) omniauth-tumblr (= 1.2) omniauth-twitter (= 1.2.1) omniauth-wordpress (= 0.2.2) open_graph_reader (= 0.6.1) + openid_connect (= 0.12.0) + pg (= 0.18.4) + poltergeist (= 1.10.0) + pronto (= 0.7.0) + pronto-eslint (= 0.7.0) + pronto-haml (= 0.7.0) + pronto-rubocop (= 0.7.0) + pronto-scss (= 0.7.0) pry pry-byebug quiet_assets (= 1.1.0) @@ -864,22 +996,23 @@ DEPENDENCIES rack-rewrite (= 1.5.1) rack-ssl (= 1.4.1) rails (= 4.2.7.1) - rails-assets-diaspora_jsxc (= 0.1.4)! - rails-assets-highlightjs (= 9.4.0)! - rails-assets-jakobmattsson--jquery-elastic (= 1.6.11)! + rails-assets-autosize (= 3.0.17)! + rails-assets-blueimp-gallery (= 2.21.3)! + rails-assets-bootstrap-markdown (= 2.10.0)! + rails-assets-diaspora_jsxc (= 0.1.5.develop.1)! + rails-assets-highlightjs (= 9.6.0)! rails-assets-jasmine-ajax (= 3.2.0)! - rails-assets-jeresig--jquery.hotkeys (= 0.2.0)! - rails-assets-jquery (= 1.12.0)! + rails-assets-jquery (= 2.2.1)! rails-assets-jquery-placeholder (= 2.3.1)! rails-assets-jquery-textchange (= 0.2.3)! - rails-assets-markdown-it (= 6.0.5)! + rails-assets-markdown-it (= 7.0.0)! rails-assets-markdown-it--markdown-it-for-inline (= 0.1.1)! - rails-assets-markdown-it-diaspora-mention (= 0.4.0)! + rails-assets-markdown-it-diaspora-mention (= 1.0.0)! rails-assets-markdown-it-hashtag (= 0.4.0)! - rails-assets-markdown-it-sanitizer (= 0.4.1)! + rails-assets-markdown-it-sanitizer (= 0.4.2)! rails-assets-markdown-it-sub (= 1.0.0)! rails-assets-markdown-it-sup (= 1.0.0)! - rails-assets-perfect-scrollbar (= 0.6.11)! + rails-assets-perfect-scrollbar (= 0.6.12)! rails-i18n (= 4.0.8) rails-timeago (= 2.11.0) rails_admin (= 0.8.1) @@ -888,32 +1021,32 @@ DEPENDENCIES redcarpet (= 3.3.4) remotipart (= 1.2.1) responders (= 2.2.0) - roxml (= 3.1.6) - rspec-rails (= 3.4.2) + rspec-rails (= 3.5.1) rubocop (= 0.40.0) ruby-oembed (= 0.10.1) rubyzip (= 1.2.0) - sass-rails (= 5.0.4) - selenium-webdriver (= 2.47.1) + sass-rails (= 5.0.6) shoulda-matchers (= 3.1.1) - sidekiq (= 3.4.2) - sidetiq (= 0.6.3) + sidekiq (= 4.1.4) + sidekiq-cron (= 0.4.2) simple_captcha2 (= 0.4.0) - simplecov (= 0.11.2) + simplecov (= 0.12.0) sinatra (= 1.4.7) sinon-rails (= 1.15.0) - spring (= 1.7.1) + spring (= 1.7.2) spring-commands-cucumber (= 1.0.1) spring-commands-rspec (= 1.0.4) - test_after_commit (= 1.0.0) + test_after_commit (= 1.1.0) timecop (= 0.8.1) turbo_dev_assets (= 0.0.2) twitter (= 5.16.0) - twitter-text (= 1.13.4) - typhoeus (= 1.0.2) - uglifier (= 3.0.0) + twitter-text (= 1.14.0) + typhoeus (= 1.1.0) + uglifier (= 3.0.1) unicorn (= 5.1.0) + unicorn-worker-killer (= 0.4.4) uuid (= 2.3.8) + versionist (= 1.5.0) webmock (= 2.1.0) will_paginate (= 3.1.0) diff --git a/README.md b/README.md index bdacd7bb7..c91fc94fe 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,17 @@ # diaspora* ### A privacy-aware, distributed, open source social network -**master:** [![Build Status master](https://secure.travis-ci.org/diaspora/diaspora.png?branch=master)](http://travis-ci.org/diaspora/diaspora) -**stable:** [![Build Status stable](https://secure.travis-ci.org/diaspora/diaspora.png?branch=stable)](http://travis-ci.org/diaspora/diaspora) | -**develop:** [![Build Status develop](https://secure.travis-ci.org/diaspora/diaspora.png?branch=develop)](http://travis-ci.org/diaspora/diaspora) | -[![Dependency Status](https://gemnasium.com/diaspora/diaspora.png?travis)](https://gemnasium.com/diaspora/diaspora) -[![Code Climate](https://codeclimate.com/github/diaspora/diaspora.png)](https://codeclimate.com/github/diaspora/diaspora) +**master:** [![Build Status master](https://secure.travis-ci.org/diaspora/diaspora.svg?branch=master)](http://travis-ci.org/diaspora/diaspora) +**next-minor:** [![Build Status next-minor](https://secure.travis-ci.org/diaspora/diaspora.svg?branch=next-minor)](http://travis-ci.org/diaspora/diaspora) +[![Coverage Status next-minor](https://coveralls.io/repos/github/diaspora/diaspora/badge.svg?branch=next-minor)](https://coveralls.io/github/diaspora/diaspora?branch=next-minor)| +**develop:** [![Build Status develop](https://secure.travis-ci.org/diaspora/diaspora.svg?branch=develop)](http://travis-ci.org/diaspora/diaspora) +[![Coverage Status develop](https://coveralls.io/repos/github/diaspora/diaspora/badge.svg?branch=develop)](https://coveralls.io/github/diaspora/diaspora?branch=develop) | +[![Dependency Status](https://gemnasium.com/badges/github.com/diaspora/diaspora.svg)](https://gemnasium.com/diaspora/diaspora) +[![Code Climate](https://codeclimate.com/github/diaspora/diaspora/badges/gpa.svg)](https://codeclimate.com/github/diaspora/diaspora) [Project site](https://diasporafoundation.org) | [Wiki](https://wiki.diasporafoundation.org) | -[Bugtracker](http://github.com/diaspora/diaspora/issues) | +[Bugtracker](https://github.com/diaspora/diaspora/issues) | [Discussions](https://www.loomio.org/groups/194) | [Mailing lists](https://wiki.diasporafoundation.org/How_We_Communicate#Mailing_Lists) | [License](/COPYRIGHT) | @@ -17,7 +19,6 @@ ## Installation - You don't have to install diaspora* to use the network. There are many servers connected to diaspora*s network which are open to anyone, and you can create an account on one of these servers. Have a look at our [tips for finding a home](https://wiki.diasporafoundation.org/Choosing_a_pod), or you can just go straight to the [list of open servers](http://podupti.me) to sign up. Want to own your data and install diaspora*? Whether you just want to try it out, want to install it on your server or want to contribute and need a development setup, our [installation guides](https://wiki.diasporafoundation.org/Installation) will get you started! @@ -36,5 +37,4 @@ Everyone interacting in diaspora’s codebases, issue trackers, chat rooms, mail ## Security -Found a security issue? Please disclose it responsibly. We have a team of developers listening to [security@diasporafoundation.org](mailto:security@diasporafoundation.org). The PGP fingerprint is [AB0D AB02 0FC5 D398 03AB 3CE1 6F70 243F 27AD 886A](http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x6F70243F27AD886A) - +Found a security issue? Please disclose it responsibly. We have a team of developers listening to [security@diasporafoundation.org](mailto:security@diasporafoundation.org). The PGP fingerprint is [AB0D AB02 0FC5 D398 03AB 3CE1 6F70 243F 27AD 886A](https://pgp.mit.edu/pks/lookup?op=get&search=0x6F70243F27AD886A). diff --git a/app/assets/images/ajax-loader.gif b/app/assets/images/ajax-loader.gif deleted file mode 100644 index e40f19a28..000000000 Binary files a/app/assets/images/ajax-loader.gif and /dev/null differ diff --git a/app/assets/images/mobile/asterisk_white_mobile.png b/app/assets/images/branding/logos/asterisk_white_mobile.png similarity index 100% rename from app/assets/images/mobile/asterisk_white_mobile.png rename to app/assets/images/branding/logos/asterisk_white_mobile.png diff --git a/app/assets/images/branding/logos/header-logo.png b/app/assets/images/branding/logos/header-logo.png deleted file mode 100644 index 0e47dd91e..000000000 Binary files a/app/assets/images/branding/logos/header-logo.png and /dev/null differ diff --git a/app/assets/images/branding/logos/header-logo_hover.png b/app/assets/images/branding/logos/header-logo_hover.png deleted file mode 100644 index dae58b943..000000000 Binary files a/app/assets/images/branding/logos/header-logo_hover.png and /dev/null differ diff --git a/app/assets/images/branding/logos/powered_by_diaspora.png b/app/assets/images/branding/logos/powered_by_diaspora.png deleted file mode 100644 index 3979f5be7..000000000 Binary files a/app/assets/images/branding/logos/powered_by_diaspora.png and /dev/null differ diff --git a/app/assets/images/branding/logos/white2x.png b/app/assets/images/branding/logos/white2x.png deleted file mode 100644 index fa0aafb95..000000000 Binary files a/app/assets/images/branding/logos/white2x.png and /dev/null differ diff --git a/app/assets/images/dandelion.jpg b/app/assets/images/dandelion.jpg new file mode 100644 index 000000000..5766b5840 Binary files /dev/null and b/app/assets/images/dandelion.jpg differ diff --git a/app/assets/images/favicon.ico b/app/assets/images/favicon.ico deleted file mode 100644 index c07db7363..000000000 Binary files a/app/assets/images/favicon.ico and /dev/null differ diff --git a/app/assets/images/fonts/Roboto-Bold.ttf b/app/assets/images/fonts/Roboto-Bold.ttf deleted file mode 100644 index 91ec21227..000000000 Binary files a/app/assets/images/fonts/Roboto-Bold.ttf and /dev/null differ diff --git a/app/assets/images/fonts/Roboto-Light.ttf b/app/assets/images/fonts/Roboto-Light.ttf deleted file mode 100644 index d43e94331..000000000 Binary files a/app/assets/images/fonts/Roboto-Light.ttf and /dev/null differ diff --git a/app/assets/images/fonts/Roboto-Regular.ttf b/app/assets/images/fonts/Roboto-Regular.ttf deleted file mode 100644 index 7d9a6c4c3..000000000 Binary files a/app/assets/images/fonts/Roboto-Regular.ttf and /dev/null differ diff --git a/app/assets/images/fonts/diaspora-custom.ttf b/app/assets/images/fonts/diaspora-custom.ttf new file mode 100644 index 000000000..4b21e9b84 Binary files /dev/null and b/app/assets/images/fonts/diaspora-custom.ttf differ diff --git a/app/assets/images/fonts/svg-icons/compose_mobile.svg b/app/assets/images/fonts/svg-icons/compose_mobile.svg new file mode 100644 index 000000000..ff020cd60 --- /dev/null +++ b/app/assets/images/fonts/svg-icons/compose_mobile.svg @@ -0,0 +1,21 @@ + + + + + + diff --git a/app/assets/images/header-bg-long.jpg b/app/assets/images/header-bg-long.jpg deleted file mode 100644 index da0492bc7..000000000 Binary files a/app/assets/images/header-bg-long.jpg and /dev/null differ diff --git a/app/assets/images/header-bg.png b/app/assets/images/header-bg.png deleted file mode 100644 index fa7d7d8aa..000000000 Binary files a/app/assets/images/header-bg.png and /dev/null differ diff --git a/app/assets/images/icons/mail_grey.png b/app/assets/images/icons/mail_grey.png deleted file mode 100644 index 3f503af53..000000000 Binary files a/app/assets/images/icons/mail_grey.png and /dev/null differ diff --git a/app/assets/images/icons/mail_grey_hover.png b/app/assets/images/icons/mail_grey_hover.png deleted file mode 100644 index a4dbff838..000000000 Binary files a/app/assets/images/icons/mail_grey_hover.png and /dev/null differ diff --git a/app/assets/images/icons/notifications_grey.png b/app/assets/images/icons/notifications_grey.png deleted file mode 100644 index 78ad7c779..000000000 Binary files a/app/assets/images/icons/notifications_grey.png and /dev/null differ diff --git a/app/assets/images/icons/notifications_grey_hover.png b/app/assets/images/icons/notifications_grey_hover.png deleted file mode 100644 index 4558a55a9..000000000 Binary files a/app/assets/images/icons/notifications_grey_hover.png and /dev/null differ diff --git a/app/assets/images/img/glyphicons-halflings-blue.png b/app/assets/images/img/glyphicons-halflings-blue.png deleted file mode 100644 index a8dca0fcc..000000000 Binary files a/app/assets/images/img/glyphicons-halflings-blue.png and /dev/null differ diff --git a/app/assets/images/img/glyphicons-halflings-red.png b/app/assets/images/img/glyphicons-halflings-red.png deleted file mode 100644 index 30c315fe0..000000000 Binary files a/app/assets/images/img/glyphicons-halflings-red.png and /dev/null differ diff --git a/app/assets/images/landing/cog.png b/app/assets/images/landing/cog.png deleted file mode 100644 index 06e693960..000000000 Binary files a/app/assets/images/landing/cog.png and /dev/null differ diff --git a/app/assets/images/landing/pen_write.png b/app/assets/images/landing/pen_write.png deleted file mode 100644 index 34a2fdffc..000000000 Binary files a/app/assets/images/landing/pen_write.png and /dev/null differ diff --git a/app/assets/images/landing/smiley_laughing.png b/app/assets/images/landing/smiley_laughing.png deleted file mode 100644 index e2e6dc0b8..000000000 Binary files a/app/assets/images/landing/smiley_laughing.png and /dev/null differ diff --git a/app/assets/images/mobile/arrow-left.png b/app/assets/images/mobile/arrow-left.png deleted file mode 100644 index 8ae1a3d0e..000000000 Binary files a/app/assets/images/mobile/arrow-left.png and /dev/null differ diff --git a/app/assets/images/mobile/arrow-right.png b/app/assets/images/mobile/arrow-right.png deleted file mode 100644 index 9683d7bba..000000000 Binary files a/app/assets/images/mobile/arrow-right.png and /dev/null differ diff --git a/app/assets/images/mobile/arrow_down_small.png b/app/assets/images/mobile/arrow_down_small.png deleted file mode 100644 index 392d82125..000000000 Binary files a/app/assets/images/mobile/arrow_down_small.png and /dev/null differ diff --git a/app/assets/images/mobile/arrow_up_small.png b/app/assets/images/mobile/arrow_up_small.png deleted file mode 100644 index 970a8e596..000000000 Binary files a/app/assets/images/mobile/arrow_up_small.png and /dev/null differ diff --git a/app/assets/images/mobile/camera.png b/app/assets/images/mobile/camera.png deleted file mode 100644 index cc4d3bd54..000000000 Binary files a/app/assets/images/mobile/camera.png and /dev/null differ diff --git a/app/assets/images/mobile/check_yes_ok.png b/app/assets/images/mobile/check_yes_ok.png deleted file mode 100644 index da33bf6fd..000000000 Binary files a/app/assets/images/mobile/check_yes_ok.png and /dev/null differ diff --git a/app/assets/images/mobile/compose_mobile.png b/app/assets/images/mobile/compose_mobile.png deleted file mode 100644 index 22bfd6f77..000000000 Binary files a/app/assets/images/mobile/compose_mobile.png and /dev/null differ diff --git a/app/assets/images/mobile/deletelabel.png b/app/assets/images/mobile/deletelabel.png deleted file mode 100644 index b3e53ee3a..000000000 Binary files a/app/assets/images/mobile/deletelabel.png and /dev/null differ diff --git a/app/assets/images/mobile/hatched-light.jpg b/app/assets/images/mobile/hatched-light.jpg deleted file mode 100644 index 0282e7eb7..000000000 Binary files a/app/assets/images/mobile/hatched-light.jpg and /dev/null differ diff --git a/app/assets/images/mobile/heart_mobile_grey.png b/app/assets/images/mobile/heart_mobile_grey.png deleted file mode 100644 index 9e5ce387c..000000000 Binary files a/app/assets/images/mobile/heart_mobile_grey.png and /dev/null differ diff --git a/app/assets/images/mobile/heart_mobile_red.png b/app/assets/images/mobile/heart_mobile_red.png deleted file mode 100644 index e2b5dc42b..000000000 Binary files a/app/assets/images/mobile/heart_mobile_red.png and /dev/null differ diff --git a/app/assets/images/mobile/mail_white.png b/app/assets/images/mobile/mail_white.png deleted file mode 100644 index ad215505f..000000000 Binary files a/app/assets/images/mobile/mail_white.png and /dev/null differ diff --git a/app/assets/images/mobile/menu.png b/app/assets/images/mobile/menu.png deleted file mode 100644 index 59b11180c..000000000 Binary files a/app/assets/images/mobile/menu.png and /dev/null differ diff --git a/app/assets/images/mobile/notifications_white.png b/app/assets/images/mobile/notifications_white.png deleted file mode 100644 index 3f94e2848..000000000 Binary files a/app/assets/images/mobile/notifications_white.png and /dev/null differ diff --git a/app/assets/images/mobile/pencil_mobile_grey.png b/app/assets/images/mobile/pencil_mobile_grey.png deleted file mode 100644 index da72cc3d4..000000000 Binary files a/app/assets/images/mobile/pencil_mobile_grey.png and /dev/null differ diff --git a/app/assets/images/mobile/pencil_mobile_grey_active.png b/app/assets/images/mobile/pencil_mobile_grey_active.png deleted file mode 100644 index 5d4147ea0..000000000 Binary files a/app/assets/images/mobile/pencil_mobile_grey_active.png and /dev/null differ diff --git a/app/assets/images/mobile/reshare_mobile.png b/app/assets/images/mobile/reshare_mobile.png deleted file mode 100644 index 91883ea03..000000000 Binary files a/app/assets/images/mobile/reshare_mobile.png and /dev/null differ diff --git a/app/assets/images/mobile/reshare_mobile_active.png b/app/assets/images/mobile/reshare_mobile_active.png deleted file mode 100644 index 71a1feb5b..000000000 Binary files a/app/assets/images/mobile/reshare_mobile_active.png and /dev/null differ diff --git a/app/assets/images/social_media_logos/Readme.txt b/app/assets/images/social-media-logos/Readme.txt similarity index 100% rename from app/assets/images/social_media_logos/Readme.txt rename to app/assets/images/social-media-logos/Readme.txt diff --git a/app/assets/images/social_media_logos/facebook-16x16.png b/app/assets/images/social-media-logos/facebook-16x16.png similarity index 100% rename from app/assets/images/social_media_logos/facebook-16x16.png rename to app/assets/images/social-media-logos/facebook-16x16.png diff --git a/app/assets/images/social_media_logos/facebook-24x24.png b/app/assets/images/social-media-logos/facebook-24x24.png similarity index 100% rename from app/assets/images/social_media_logos/facebook-24x24.png rename to app/assets/images/social-media-logos/facebook-24x24.png diff --git a/app/assets/images/social_media_logos/facebook-32x32.png b/app/assets/images/social-media-logos/facebook-32x32.png similarity index 100% rename from app/assets/images/social_media_logos/facebook-32x32.png rename to app/assets/images/social-media-logos/facebook-32x32.png diff --git a/app/assets/images/social_media_logos/tumblr-16x16.png b/app/assets/images/social-media-logos/tumblr-16x16.png similarity index 100% rename from app/assets/images/social_media_logos/tumblr-16x16.png rename to app/assets/images/social-media-logos/tumblr-16x16.png diff --git a/app/assets/images/social_media_logos/tumblr-24x24.png b/app/assets/images/social-media-logos/tumblr-24x24.png similarity index 100% rename from app/assets/images/social_media_logos/tumblr-24x24.png rename to app/assets/images/social-media-logos/tumblr-24x24.png diff --git a/app/assets/images/social_media_logos/tumblr-32x32.png b/app/assets/images/social-media-logos/tumblr-32x32.png similarity index 100% rename from app/assets/images/social_media_logos/tumblr-32x32.png rename to app/assets/images/social-media-logos/tumblr-32x32.png diff --git a/app/assets/images/social_media_logos/twitter-16x16.png b/app/assets/images/social-media-logos/twitter-16x16.png similarity index 100% rename from app/assets/images/social_media_logos/twitter-16x16.png rename to app/assets/images/social-media-logos/twitter-16x16.png diff --git a/app/assets/images/social_media_logos/twitter-24x24.png b/app/assets/images/social-media-logos/twitter-24x24.png similarity index 100% rename from app/assets/images/social_media_logos/twitter-24x24.png rename to app/assets/images/social-media-logos/twitter-24x24.png diff --git a/app/assets/images/social_media_logos/twitter-32x32.png b/app/assets/images/social-media-logos/twitter-32x32.png similarity index 100% rename from app/assets/images/social_media_logos/twitter-32x32.png rename to app/assets/images/social-media-logos/twitter-32x32.png diff --git a/app/assets/images/social_media_logos/wordpress-16x16.png b/app/assets/images/social-media-logos/wordpress-16x16.png similarity index 100% rename from app/assets/images/social_media_logos/wordpress-16x16.png rename to app/assets/images/social-media-logos/wordpress-16x16.png diff --git a/app/assets/images/social_media_logos/wordpress-24x24.png b/app/assets/images/social-media-logos/wordpress-24x24.png similarity index 100% rename from app/assets/images/social_media_logos/wordpress-24x24.png rename to app/assets/images/social-media-logos/wordpress-24x24.png diff --git a/app/assets/images/social_media_logos/wordpress-32x32.png b/app/assets/images/social-media-logos/wordpress-32x32.png similarity index 100% rename from app/assets/images/social_media_logos/wordpress-32x32.png rename to app/assets/images/social-media-logos/wordpress-32x32.png diff --git a/app/assets/images/static-loader.png b/app/assets/images/static-loader.png deleted file mode 100644 index 1b3709935..000000000 Binary files a/app/assets/images/static-loader.png and /dev/null differ diff --git a/app/assets/javascripts/api/authorization_page.js b/app/assets/javascripts/api/authorization_page.js new file mode 100644 index 000000000..d61b941ec --- /dev/null +++ b/app/assets/javascripts/api/authorization_page.js @@ -0,0 +1,5 @@ +$(document).ready(function() { + $("#js-app-logo").error(function () { + $(this).attr("src", ImagePaths.get("user/default.png")); + }); +}); diff --git a/app/assets/javascripts/app/app.js b/app/assets/javascripts/app/app.js index 007304793..1046bd66a 100644 --- a/app/assets/javascripts/app/app.js +++ b/app/assets/javascripts/app/app.js @@ -46,8 +46,8 @@ var app = { app.router = new app.Router(); this.setupDummyPreloads(); - this.setupFacebox(); this.setupUser(); + this.setupAspects(); this.setupHeader(); this.setupBackboneLinks(); this.setupGlobalViews(); @@ -66,7 +66,7 @@ var app = { }, parsePreload : function(prop) { - if(!app.hasPreload(prop)) { return } + if(!app.hasPreload(prop)) { return; } var preload = window.gon.preloads[prop]; delete window.gon.preloads[prop]; //prevent dirty state across navigates @@ -84,6 +84,10 @@ var app = { app.currentUser = app.user(window.gon.user) || new app.models.User(); }, + setupAspects: function() { + app.aspects = new app.collections.Aspects(app.currentUser.get("aspects")); + }, + setupHeader: function() { if(app.currentUser.authenticated()) { app.header = new app.views.Header(); @@ -92,12 +96,6 @@ var app = { } }, - setupFacebox: function() { - $.facebox.settings.closeImage = ImagePaths.get('facebox/closelabel.png'); - $.facebox.settings.loadingImage = ImagePaths.get('facebox/loading.gif'); - $.facebox.settings.opacity = 0.75; - }, - setupBackboneLinks: function() { Backbone.history.start({pushState: true}); @@ -110,12 +108,6 @@ var app = { evt.preventDefault(); var link = $(this); - if(link.data("stream-title") && link.data("stream-title").length) { - $(".stream_title").text(link.data("stream-title")); - } else { - $(".stream_title").text(link.text()); - } - $("html, body").animate({scrollTop: 0}); // app.router.navigate doesn't tell us if it changed the page, @@ -127,16 +119,14 @@ var app = { setupGlobalViews: function() { app.hovercard = new app.views.Hovercard(); - $('.aspect_membership_dropdown').each(function(){ - new app.views.AspectMembership({el: this}); - }); app.sidebar = new app.views.Sidebar(); app.backToTop = new app.views.BackToTop({el: $(document)}); + app.flashMessages = new app.views.FlashMessages({el: $("#flash-container")}); }, /* mixpanel wrapper function */ instrument : function(type, name, object, callback) { - if(!window.mixpanel) { return } + if(!window.mixpanel) { return; } window.mixpanel[type](name, object, callback); }, @@ -150,6 +140,9 @@ var app = { // add placeholder support for old browsers $("input, textarea").placeholder(); + // init autosize plugin + autosize($("textarea")); + // setup remote forms $(document).on("ajax:success", "form[data-remote]", function() { $(this).clearForm(); diff --git a/app/assets/javascripts/app/collections/aspect_memberships.js b/app/assets/javascripts/app/collections/aspect_memberships.js index dc3c0410b..5c53b6ead 100644 --- a/app/assets/javascripts/app/collections/aspect_memberships.js +++ b/app/assets/javascripts/app/collections/aspect_memberships.js @@ -1,6 +1,10 @@ // @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later app.collections.AspectMemberships = Backbone.Collection.extend({ - model: app.models.AspectMembership + model: app.models.AspectMembership, + + findByAspectId: function(id) { + return this.find(function(membership) { return membership.belongsToAspect(id); }); + } }); // @license-end diff --git a/app/assets/javascripts/app/collections/aspect_selections.js b/app/assets/javascripts/app/collections/aspect_selections.js new file mode 100644 index 000000000..bfe3fb94e --- /dev/null +++ b/app/assets/javascripts/app/collections/aspect_selections.js @@ -0,0 +1,31 @@ +// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later + +app.collections.AspectSelections = Backbone.Collection.extend({ + model: app.models.AspectSelection, + + selectedGetAttribute: function(attribute) { + return _.pluck(_.filter(this.toJSON(), function(a) { + return a.selected; + }), attribute); + }, + + allSelected: function() { + return this.length === _.filter(this.toJSON(), function(a) { return a.selected; }).length; + }, + + selectAll: function() { + this.map(function(a) { a.set({"selected": true}); }); + }, + + deselectAll: function() { + this.map(function(a) { a.set({"selected": false}); }); + }, + + toSentence: function() { + var separator = Diaspora.I18n.t("comma") + " "; + var pattern = new RegExp(Diaspora.I18n.t("comma") + "\\s([^" + Diaspora.I18n.t("comma") + "]+)$"); + return this.selectedGetAttribute("name").join(separator).replace(pattern, " " + Diaspora.I18n.t("and") + " $1") + || Diaspora.I18n.t("my_aspects"); + } +}); +// @license-end diff --git a/app/assets/javascripts/app/collections/aspects.js b/app/assets/javascripts/app/collections/aspects.js index 7b25d33b5..4cecea647 100644 --- a/app/assets/javascripts/app/collections/aspects.js +++ b/app/assets/javascripts/app/collections/aspects.js @@ -1,29 +1,7 @@ // @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later app.collections.Aspects = Backbone.Collection.extend({ - model: app.models.AspectSelection, - - selectedAspects: function(attribute){ - return _.pluck(_.filter(this.toJSON(), function(a){ - return a.selected; - }), attribute); - }, - - allSelected: function(){ - return this.length === _.filter(this.toJSON(), function(a){ return a.selected; }).length; - }, - - selectAll: function(){ - this.map(function(a){ a.set({ 'selected' : true })} ); - }, - - deselectAll: function(){ - this.map(function(a){ a.set({ 'selected' : false })} ); - }, - - toSentence: function(){ - var separator = Diaspora.I18n.t("comma") + ' '; - return this.selectedAspects('name').join(separator).replace(/,\s([^,]+)$/, ' ' + Diaspora.I18n.t("and") + ' $1') || Diaspora.I18n.t("my_aspects"); - } + model: app.models.Aspect, + url: "/aspects" }); // @license-end diff --git a/app/assets/javascripts/app/collections/comments.js b/app/assets/javascripts/app/collections/comments.js index f096363e0..9ecf4f047 100644 --- a/app/assets/javascripts/app/collections/comments.js +++ b/app/assets/javascripts/app/collections/comments.js @@ -2,19 +2,20 @@ app.collections.Comments = Backbone.Collection.extend({ model: app.models.Comment, - url: function() { return _.result(this.post, 'url') + '/comments'; }, + url: function() { + return _.result(this.post, "url") + "/comments"; + }, initialize : function(models, options) { this.post = options.post; }, - make : function(text){ + make : function(text) { var self = this; - - var comment = new app.models.Comment({text: text }); + var comment = new app.models.Comment({ "text": text }); var deferred = comment.save({}, { - url: '/posts/'+this.post.id+'/comments', + url: "/posts/"+ this.post.id +"/comments", success: function() { comment.set({author: app.currentUser.toJSON(), parent: self.post }); self.add(comment); diff --git a/app/assets/javascripts/app/collections/pods.js b/app/assets/javascripts/app/collections/pods.js new file mode 100644 index 000000000..1264d09c4 --- /dev/null +++ b/app/assets/javascripts/app/collections/pods.js @@ -0,0 +1,10 @@ +// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later +app.collections.Pods = Backbone.Collection.extend({ + model: app.models.Pod, + + comparator: function(model) { + var host = model.get("host") || ""; + return host.toLowerCase(); + } +}); +// @license-end diff --git a/app/assets/javascripts/app/collections/posts.js b/app/assets/javascripts/app/collections/posts.js index fc5fe1bbe..d05ed6bbc 100644 --- a/app/assets/javascripts/app/collections/posts.js +++ b/app/assets/javascripts/app/collections/posts.js @@ -5,4 +5,3 @@ app.collections.Posts = Backbone.Collection.extend({ url : "/posts" }); // @license-end - diff --git a/app/assets/javascripts/app/collections/reshares.js b/app/assets/javascripts/app/collections/reshares.js index 28ce59c24..1aee51053 100644 --- a/app/assets/javascripts/app/collections/reshares.js +++ b/app/assets/javascripts/app/collections/reshares.js @@ -5,4 +5,3 @@ app.collections.Reshares = Backbone.Collection.extend({ url : "/reshares" }); // @license-end - diff --git a/app/assets/javascripts/app/helpers/handlebars-helpers.js b/app/assets/javascripts/app/helpers/handlebars-helpers.js index d27f4df96..0a75ebbb6 100644 --- a/app/assets/javascripts/app/helpers/handlebars-helpers.js +++ b/app/assets/javascripts/app/helpers/handlebars-helpers.js @@ -47,7 +47,7 @@ Handlebars.registerHelper("sharingMessage", function(person) { var icon = "circle"; if( person.is_sharing ) { i18nScope = "people.helper.is_sharing"; - icon = "entypo check"; + icon = "entypo-check"; } var title = Diaspora.I18n.t(i18nScope, {name: _.escape(person.name)}); @@ -60,11 +60,8 @@ Handlebars.registerHelper("sharingMessage", function(person) { // allow hovercards for users that are not the current user. // returns the html class name used to trigger hovercards. -Handlebars.registerHelper('hovercardable', function(person) { - if( app.currentUser.get('guid') !== person.guid ) { - return 'hovercardable'; - } - return ''; +Handlebars.registerHelper("hovercardable", function(person) { + return app.currentUser.get("guid") === person.guid ? "" : "hovercardable"; }); Handlebars.registerHelper('personImage', function(person, size, imageClass) { @@ -78,10 +75,11 @@ Handlebars.registerHelper('personImage', function(person, size, imageClass) { size = ( !_.isString(size) ) ? "small" : size; imageClass = ( !_.isString(imageClass) ) ? size : imageClass; - return _.template('<%= title %>')({ - 'src': avatar[size], - 'img_class': imageClass, - 'title': _.escape(name) + return _.template("\" class=\"<%= imageClass %>\" " + + "title=\"<%= title %>\" alt=\"<%= title %>\" />")({ + src: avatar[size], + imageClass: imageClass + " avatar img-responsive center-block", + title: _.escape(name) }); }); @@ -120,7 +118,7 @@ Handlebars.registerHelper("isCurrentProfilePage", function(id, diasporaHandle, o Handlebars.registerHelper('aspectMembershipIndicator', function(contact,in_aspect) { if(!app.aspect || !app.aspect.get('id')) return '
'; - var html = 'OpenStreetMap contributors, " + + "CC-BY-SA, " + + "Imagery © Mapbox", + maxZoom: 18 + }); + } + + // maptiles from the Heidelberg University are used by default. + return L.tileLayer("http://korona.geog.uni-heidelberg.de/tiles/roads/x={x}&y={y}&z={z}", { + attribution: "Map data © OpenStreetMap contributors, " + + "rendering " + + "GIScience Research Group @ Heidelberg University", + maxZoom: 18 + }); + } + }; +})(); diff --git a/app/assets/javascripts/app/helpers/modal_helper.js b/app/assets/javascripts/app/helpers/modal_helper.js new file mode 100644 index 000000000..01aaac4b7 --- /dev/null +++ b/app/assets/javascripts/app/helpers/modal_helper.js @@ -0,0 +1,13 @@ +(function(){ + app.helpers.showModal = function(id){ + $(id).modal(); + var modalBody = $(id).find(".modal-body"); + + var url = $(id).attr("href"); + + modalBody.load(url, function(){ + $(id).find("#modalWaiter").remove(); + $(id).trigger("modal:loaded"); + }); + }; +})(); diff --git a/app/assets/javascripts/app/helpers/text_formatter.js b/app/assets/javascripts/app/helpers/text_formatter.js index 163f938ed..ea237832c 100644 --- a/app/assets/javascripts/app/helpers/text_formatter.js +++ b/app/assets/javascripts/app/helpers/text_formatter.js @@ -26,7 +26,12 @@ array[index][1] = attribute[1].replace(/^www\./, "http://www."); } }); - tokens[idx].attrPush([ "target", "_blank" ]); + tokens[idx].attrPush(["target", "_blank"]); + tokens[idx].attrPush(["rel", "noopener noreferrer"]); + }); + + md.use(inlinePlugin, "responsive_images", "image", function (tokens, idx) { + tokens[idx].attrPush(["class", "img-responsive"]); }); var hashtagPlugin = window.markdownitHashtag; @@ -49,7 +54,7 @@ var supPlugin = window.markdownitSup; md.use(supPlugin); var sanitizerPlugin = window.markdownitSanitizer; - md.use(sanitizerPlugin); + md.use(sanitizerPlugin, {imageClass: "img-responsive"}); var hljs = window.hljs; md.set({ @@ -76,7 +81,6 @@ // Bootstrap table markup md.renderer.rules.table_open = function () { return "\n"; }; - return md.render(text); }; })(); diff --git a/app/assets/javascripts/app/models.js b/app/assets/javascripts/app/models.js index 286e990c6..87dfe9843 100644 --- a/app/assets/javascripts/app/models.js +++ b/app/assets/javascripts/app/models.js @@ -5,7 +5,6 @@ // Requires: // this = model with "created_at" attribute app.models.formatDateMixin = { - timeOf: function(field) { return app.helpers.dateFormatter.parse(this.get(field)) / 1000; }, @@ -13,7 +12,5 @@ app.models.formatDateMixin = { createdAt: function() { return this.timeOf("created_at"); } - }; // @license-end - diff --git a/app/assets/javascripts/app/models/aspect_membership.js b/app/assets/javascripts/app/models/aspect_membership.js index ddb503702..bfae08b50 100644 --- a/app/assets/javascripts/app/models/aspect_membership.js +++ b/app/assets/javascripts/app/models/aspect_membership.js @@ -5,7 +5,11 @@ * (only valid for the context of the current user) */ app.models.AspectMembership = Backbone.Model.extend({ - urlRoot: "/aspect_memberships" + urlRoot: "/aspect_memberships", + + belongsToAspect: function(aspectId) { + var aspect = this.get("aspect"); + return aspect && aspect.id === aspectId; + } }); // @license-end - diff --git a/app/assets/javascripts/app/models/comment.js b/app/assets/javascripts/app/models/comment.js index f2778f718..d382b731f 100644 --- a/app/assets/javascripts/app/models/comment.js +++ b/app/assets/javascripts/app/models/comment.js @@ -4,4 +4,3 @@ app.models.Comment = Backbone.Model.extend({ urlRoot: "/comments" }); // @license-end - diff --git a/app/assets/javascripts/app/models/contact.js b/app/assets/javascripts/app/models/contact.js index 5457f2c4e..2c72ae41d 100644 --- a/app/assets/javascripts/app/models/contact.js +++ b/app/assets/javascripts/app/models/contact.js @@ -2,12 +2,15 @@ app.models.Contact = Backbone.Model.extend({ initialize : function() { - this.aspect_memberships = new app.collections.AspectMemberships(this.get('aspect_memberships')); - if( this.get('person') ) this.person = new app.models.Person(this.get('person')); + this.aspectMemberships = new app.collections.AspectMemberships(this.get("aspect_memberships")); + if (this.get("person")) { + this.person = new app.models.Person(this.get("person")); + this.person.contact = this; + } }, inAspect : function(id) { - return this.aspect_memberships.any(function(membership){ return membership.get('aspect').id === id; }); + return this.aspectMemberships.any(function(membership) { return membership.belongsToAspect(id); }); } }); // @license-end diff --git a/app/assets/javascripts/app/models/person.js b/app/assets/javascripts/app/models/person.js index 8c9a7241a..4d70fada4 100644 --- a/app/assets/javascripts/app/models/person.js +++ b/app/assets/javascripts/app/models/person.js @@ -6,8 +6,13 @@ app.models.Person = Backbone.Model.extend({ }, initialize: function() { - if( this.get('profile') ) - this.profile = new app.models.Profile(this.get('profile')); + if (this.get("profile")) { + this.profile = new app.models.Profile(this.get("profile")); + } + if (this.get("contact")) { + this.contact = new app.models.Contact(this.get("contact")); + this.contact.person = this; + } }, isSharing: function() { diff --git a/app/assets/javascripts/app/models/pod.js b/app/assets/javascripts/app/models/pod.js new file mode 100644 index 000000000..5ea497df5 --- /dev/null +++ b/app/assets/javascripts/app/models/pod.js @@ -0,0 +1,15 @@ +// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later +app.models.Pod = Backbone.Model.extend({ + urlRoot: Routes.adminPods(), + + recheck: function() { + var self = this, + url = Routes.adminPodRecheck(this.id).toString(); + + return $.ajax({url: url, method: "POST", dataType: "json"}) + .done(function(newAttributes) { + self.set(newAttributes); + }); + } +}); +// @license-end diff --git a/app/assets/javascripts/app/models/post/interactions.js b/app/assets/javascripts/app/models/post/interactions.js index d992440f7..e837f96bc 100644 --- a/app/assets/javascripts/app/models/post/interactions.js +++ b/app/assets/javascripts/app/models/post/interactions.js @@ -32,7 +32,7 @@ app.models.Post.Interactions = Backbone.Model.extend({ }, likesCount : function(){ - return (this.get("fetched") ? this.likes.models.length : this.get("likes_count") ); + return this.get("fetched") ? this.likes.models.length : this.get("likes_count"); }, resharesCount : function(){ @@ -44,12 +44,15 @@ app.models.Post.Interactions = Backbone.Model.extend({ }, userLike : function(){ - return this.likes.select(function(like){ return like.get("author").guid === app.currentUser.get("guid")})[0]; + return this.likes.select(function(like){ + return like.get("author") && like.get("author").guid === app.currentUser.get("guid"); + })[0]; }, userReshare : function(){ return this.reshares.select(function(reshare){ - return reshare.get("author") && reshare.get("author").guid === app.currentUser.get("guid")})[0]; + return reshare.get("author") && reshare.get("author").guid === app.currentUser.get("guid"); + })[0]; }, toggleLike : function() { @@ -62,10 +65,15 @@ app.models.Post.Interactions = Backbone.Model.extend({ like : function() { var self = this; - this.likes.create({}, {success : function(){ - self.trigger("change"); - self.set({"likes_count" : self.get("likes_count") + 1}); - }}); + this.likes.create({}, { + success: function() { + self.trigger("change"); + self.set({"likes_count" : self.get("likes_count") + 1}); + }, + error: function() { + app.flashMessages.error(Diaspora.I18n.t("failed_to_like")); + } + }); app.instrument("track", "Like"); }, @@ -84,11 +92,7 @@ app.models.Post.Interactions = Backbone.Model.extend({ var self = this; this.comments.make(text).fail(function () { - var flash = new Diaspora.Widgets.FlashMessages(); - flash.render({ - success: false, - notice: Diaspora.I18n.t("failed_to_post_message") - }); + app.flashMessages.error(Diaspora.I18n.t("failed_to_comment")); }).done(function() { self.trigger('change'); //updates after sync }); @@ -99,16 +103,11 @@ app.models.Post.Interactions = Backbone.Model.extend({ }, reshare : function(){ - var interactions = this - , reshare = this.post.reshare() - , flash = new Diaspora.Widgets.FlashMessages(); + var interactions = this; - reshare.save() + this.post.reshare().save() .done(function(reshare) { - flash.render({ - success: true, - notice: Diaspora.I18n.t("reshares.successful") - }); + app.flashMessages.success(Diaspora.I18n.t("reshares.successful")); interactions.reshares.add(reshare); if (app.stream && /^\/(?:stream|activity|aspects)/.test(app.stream.basePath())) { app.stream.addNow(reshare); @@ -116,10 +115,7 @@ app.models.Post.Interactions = Backbone.Model.extend({ interactions.trigger("change"); }) .fail(function(){ - flash.render({ - success: false, - notice: Diaspora.I18n.t("reshares.duplicate") - }); + app.flashMessages.error(Diaspora.I18n.t("reshares.duplicate")); }); app.instrument("track", "Reshare"); diff --git a/app/assets/javascripts/app/models/status_message.js b/app/assets/javascripts/app/models/status_message.js index f8469662a..d233b09eb 100644 --- a/app/assets/javascripts/app/models/status_message.js +++ b/app/assets/javascripts/app/models/status_message.js @@ -21,4 +21,3 @@ app.models.StatusMessage = app.models.Post.extend({ } }); // @license-end - diff --git a/app/assets/javascripts/app/models/stream_aspects.js b/app/assets/javascripts/app/models/stream_aspects.js index e64d3ea5b..a3d18a5c7 100644 --- a/app/assets/javascripts/app/models/stream_aspects.js +++ b/app/assets/javascripts/app/models/stream_aspects.js @@ -17,7 +17,7 @@ app.models.StreamAspects = app.models.Stream.extend({ }, fetch: function() { - if(this.isFetching()){ return false } + if(this.isFetching()) { return false; } var url = this.url(); var ids = this.aspects_ids; this.deferred = this.items.fetch(this._fetchOpts({url : url, data : { 'a_ids': ids }})) @@ -26,10 +26,9 @@ app.models.StreamAspects = app.models.Stream.extend({ fetchDone: function() { this.triggerFetchedEvents(); - if (app.aspects) { - app.aspects.trigger('aspectStreamFetched'); + if (app.aspectSelections) { + app.aspectSelections.trigger("aspectStreamFetched"); } } }); // @license-end - diff --git a/app/assets/javascripts/app/pages/admin_dashboard.js b/app/assets/javascripts/app/pages/admin_dashboard.js new file mode 100644 index 000000000..4826c12ea --- /dev/null +++ b/app/assets/javascripts/app/pages/admin_dashboard.js @@ -0,0 +1,75 @@ +// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later + +app.pages.AdminDashboard = Backbone.View.extend({ + initialize: function() { + this.updatePodStatus(); + }, + + updatePodStatus: function() { + var self = this, + tagName = ""; + $.get("https://api.github.com/repos/diaspora/diaspora/releases/latest") + .done(function(data) { + // the response might be malformed + try { + /* jshint camelcase: false */ + tagName = data.tag_name; + /* jshint camelcase: true */ + if(tagName.charAt(0) !== "v") { + self.updatePodStatusFail(); + return; + } + } catch(e) { + self.updatePodStatusFail(); + return; + } + + // split version into components + self.latestVersion = tagName.slice(1).split(".").map(Number); + if(self.podUpToDate() === null) { + self.updatePodStatusFail(); + } else { + self.updatePodStatusSuccess(); + } + }) + .fail(function() { + self.updatePodStatusFail(); + }); + }, + + updatePodStatusSuccess: function() { + $("#pod-status .alert").removeClass("alert-info"); + var podStatusMessage = Diaspora.I18n.t("admins.dashboard.up_to_date"); + if(this.podUpToDate()) { + $("#pod-status .alert").addClass("alert-success"); + } else { + podStatusMessage = Diaspora.I18n.t("admins.dashboard.outdated"); + $("#pod-status .alert").addClass("alert-danger"); + } + $("#pod-status .alert") + .html("" + podStatusMessage + "") + .append(" ") + .append(Diaspora.I18n.t("admins.dashboard.compare_versions", { + latestVersion: "v" + this.latestVersion.join("."), + podVersion: "v" + gon.podVersion + })); + }, + + updatePodStatusFail: function() { + $("#pod-status .alert") + .removeClass("alert-info") + .addClass("alert-warning") + .text(Diaspora.I18n.t("admins.dashboard.error")); + }, + + podUpToDate: function() { + var podVersion = gon.podVersion.split(/\.|\-/).map(Number); + if(this.latestVersion.length < 4 || podVersion.length < 4) { return null; } + for(var i = 0; i < 4; i++) { + if(this.latestVersion[i] < podVersion[i]) { return true; } + if(this.latestVersion[i] > podVersion[i]) { return false; } + } + return true; + } +}); +// @license-end diff --git a/app/assets/javascripts/app/pages/admin_pods.js b/app/assets/javascripts/app/pages/admin_pods.js new file mode 100644 index 000000000..27fb1979e --- /dev/null +++ b/app/assets/javascripts/app/pages/admin_pods.js @@ -0,0 +1,52 @@ +// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later + +app.pages.AdminPods = app.views.Base.extend({ + templateName: "pod_table", + + tooltipSelector: "th i", + + initialize: function() { + this.pods = new app.collections.Pods(app.parsePreload("pods")); + this.rows = []; // contains the table row views + }, + + postRenderTemplate: function() { + var self = this; + this._showMessages(); + + // avoid reflowing the page for every entry + var fragment = document.createDocumentFragment(); + this.pods.each(function(pod) { + self.rows.push(new app.views.PodEntry({ + parent: fragment, + model: pod + }).render()); + }); + this.$("tbody").append(fragment); + + return this; + }, + + _showMessages: function() { + var msgs = document.createDocumentFragment(); + if( gon.uncheckedCount && gon.uncheckedCount > 0 ) { + var unchecked = $("
`s and ``s. +// $table-cell-padding: 8px +//** Padding for cells in `.table-condensed`. +// $table-condensed-cell-padding: 5px + +//** Default background color used for all tables. +// $table-bg: transparent +//** Background color used for `.table-striped`. +// $table-bg-accent: #f9f9f9 +//** Background color used for `.table-hover`. +// $table-bg-hover: #f5f5f5 +// $table-bg-active: $table-bg-hover + +//** Border color for table and cell borders. +// $table-border-color: #ddd + + +//== Buttons +// +//## For each of Bootstrap's buttons, define text, background and border color. + +// $btn-font-weight: normal + +// $btn-default-color: #333 +// $btn-default-bg: #fff +// $btn-default-border: #ccc + +// $btn-primary-color: #fff +// $btn-primary-bg: $brand-primary +// $btn-primary-border: darken($btn-primary-bg, 5%) + +$btn-success-color: #333 !default; +// $btn-success-bg: $brand-success +// $btn-success-border: darken($btn-success-bg, 5%) + +// $btn-info-color: #fff +// $btn-info-bg: $brand-info +// $btn-info-border: darken($btn-info-bg, 5%) + +// $btn-warning-color: #fff +// $btn-warning-bg: $brand-warning +// $btn-warning-border: darken($btn-warning-bg, 5%) + +// $btn-danger-color: #fff +// $btn-danger-bg: $brand-danger +// $btn-danger-border: darken($btn-danger-bg, 5%) + +// $btn-link-disabled-color: $gray-light + + +//== Forms +// +//## + +//** `` background color +// $input-bg: #fff +//** `` background color +// $input-bg-disabled: $gray-lighter + +//** Text color for ``s +// $input-color: $gray +//** `` border color +// $input-border: #ccc + +// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4 +//** Default `.form-control` border radius +// This has no effect on ``s in CSS. +// $input-border-radius: $border-radius-base +//** Large `.form-control` border radius +// $input-border-radius-large: $border-radius-large +//** Small `.form-control` border radius +// $input-border-radius-small: $border-radius-small + +//** Border color for inputs on focus +// $input-border-focus: #66afe9 + +//** Placeholder text color +// $input-color-placeholder: #999 + +//** Default `.form-control` height +// $input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2) +//** Large `.form-control` height +// $input-height-large: (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) +//** Small `.form-control` height +// $input-height-small: (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) + +//** `.form-group` margin +// $form-group-margin-bottom: 15px + +// $legend-color: $gray-dark +// $legend-border-color: #e5e5e5 + +//** Background color for textual input addons +// $input-group-addon-bg: $gray-lighter +//** Border color for textual input addons +// $input-group-addon-border-color: $input-border + +//** Disabled cursor for form controls and buttons. +// $cursor-disabled: not-allowed + + +//== Dropdowns +// +//## Dropdown menu container and contents. + +//** Background for the dropdown menu. +// $dropdown-bg: #fff +//** Dropdown menu `border-color`. +// $dropdown-border: rgba(0,0,0,.15) +//** Dropdown menu `border-color` **for IE8**. +// $dropdown-fallback-border: #ccc +//** Divider color for between dropdown items. +// $dropdown-divider-bg: #e5e5e5 + +//** Dropdown link text color. +// $dropdown-link-color: $gray-dark +//** Hover color for dropdown links. +// $dropdown-link-hover-color: darken($gray-dark, 5%) +//** Hover background for dropdown links. +// $dropdown-link-hover-bg: #f5f5f5 + +//** Active dropdown menu item text color. +// $dropdown-link-active-color: $component-active-color +//** Active dropdown menu item background color. +// $dropdown-link-active-bg: $component-active-bg + +//** Disabled dropdown menu item background color. +// $dropdown-link-disabled-color: $gray-light + +//** Text color for headers within dropdown menus. +// $dropdown-header-color: $gray-light + +//** Deprecated `$dropdown-caret-color` as of v3.1.0 +// $dropdown-caret-color: #000 + + +//-- Z-index master list +// +// Warning: Avoid customizing these values. They're used for a bird's eye view +// of components dependent on the z-axis and are designed to all work together. +// +// Note: These variables are not generated into the Customizer. + +// $zindex-navbar: 1000 +// $zindex-dropdown: 1000 +// $zindex-popover: 1060 +// $zindex-tooltip: 1070 +// $zindex-navbar-fixed: 1030 +// $zindex-modal-background: 1040 +// $zindex-modal: 1050 + + +//== Media queries breakpoints +// +//## Define the breakpoints at which your layout will change, adapting to different screen sizes. + +// Extra small screen / phone +//** Deprecated `$screen-xs` as of v3.0.1 +// $screen-xs: 480px +//** Deprecated `$screen-xs-min` as of v3.2.0 +// $screen-xs-min: $screen-xs +//** Deprecated `$screen-phone` as of v3.0.1 +// $screen-phone: $screen-xs-min + +// Small screen / tablet +//** Deprecated `$screen-sm` as of v3.0.1 +// $screen-sm: 768px +// $screen-sm-min: $screen-sm +//** Deprecated `$screen-tablet` as of v3.0.1 +// $screen-tablet: $screen-sm-min + +// Medium screen / desktop +//** Deprecated `$screen-md` as of v3.0.1 +// $screen-md: 992px +// $screen-md-min: $screen-md +//** Deprecated `$screen-desktop` as of v3.0.1 +// $screen-desktop: $screen-md-min + +// Large screen / wide desktop +//** Deprecated `$screen-lg` as of v3.0.1 +// $screen-lg: 1200px +// $screen-lg-min: $screen-lg +//** Deprecated `$screen-lg-desktop` as of v3.0.1 +// $screen-lg-desktop: $screen-lg-min + +// So media queries don't overlap when required, provide a maximum +// $screen-xs-max: ($screen-sm-min - 1) +// $screen-sm-max: ($screen-md-min - 1) +// $screen-md-max: ($screen-lg-min - 1) + + +//== Grid system +// +//## Define your custom responsive grid. + +//** Number of columns in the grid. +// $grid-columns: 12 +//** Padding between columns. Gets divided in half for the left and right. +// $grid-gutter-width: 30px +// Navbar collapse +//** Point at which the navbar becomes uncollapsed. +$grid-float-breakpoint: 992px !default; // $screen-md-min +//** Point at which the navbar begins collapsing. +// $grid-float-breakpoint-max: ($grid-float-breakpoint - 1) + + +//== Container sizes +// +//## Define the maximum width of `.container` for different screen sizes. + +// Small screen / tablet +// $container-tablet: (720px + $grid-gutter-width) +//** For `$screen-sm-min` and up. +// $container-sm: $container-tablet + +// Medium screen / desktop +// $container-desktop: (940px + $grid-gutter-width) +//** For `$screen-md-min` and up. +// $container-md: $container-desktop + +// Large screen / wide desktop +// $container-large-desktop: (1140px + $grid-gutter-width) +//** For `$screen-lg-min` and up. +// $container-lg: $container-large-desktop + + +//== Navbar +// +//## + +// Basics of a navbar +$navbar-height: 50px; +// $navbar-margin-bottom: $line-height-computed +// $navbar-border-radius: $border-radius-base +// $navbar-padding-horizontal: floor(($grid-gutter-width / 2)) +// $navbar-padding-vertical: (($navbar-height - $line-height-computed) / 2) +$navbar-collapse-max-height: 480px; + +// $navbar-default-color: #777 +// $navbar-default-bg: #f8f8f8 +// $navbar-default-border: darken($navbar-default-bg, 6.5%) + +// Navbar links +// $navbar-default-link-color: #777 +// $navbar-default-link-hover-color: #333 +// $navbar-default-link-hover-bg: transparent +// $navbar-default-link-active-color: #555 +// $navbar-default-link-active-bg: darken($navbar-default-bg, 6.5%) +// $navbar-default-link-disabled-color: #ccc +// $navbar-default-link-disabled-bg: transparent + +// Navbar brand label +// $navbar-default-brand-color: $navbar-default-link-color +// $navbar-default-brand-hover-color: darken($navbar-default-brand-color, 10%) +// $navbar-default-brand-hover-bg: transparent + +// Navbar toggle +// $navbar-default-toggle-hover-bg: #ddd +// $navbar-default-toggle-icon-bar-bg: #888 +// $navbar-default-toggle-border-color: #ddd + + +// Inverted navbar +// Reset inverted navbar basics +// $navbar-inverse-color: lighten($gray-light, 15%) +// $navbar-inverse-bg: #222 +// $navbar-inverse-border: darken($navbar-inverse-bg, 10%) + +// Inverted navbar links +// $navbar-inverse-link-color: lighten($gray-light, 15%) +// $navbar-inverse-link-hover-color: #fff +// $navbar-inverse-link-hover-bg: transparent +// $navbar-inverse-link-active-color: $navbar-inverse-link-hover-color +// $navbar-inverse-link-active-bg: darken($navbar-inverse-bg, 10%) +// $navbar-inverse-link-disabled-color: #444 +// $navbar-inverse-link-disabled-bg: transparent + +// Inverted navbar brand label +// $navbar-inverse-brand-color: $navbar-inverse-link-color +// $navbar-inverse-brand-hover-color: #fff +// $navbar-inverse-brand-hover-bg: transparent + +// Inverted navbar toggle +// $navbar-inverse-toggle-hover-bg: #333 +// $navbar-inverse-toggle-icon-bar-bg: #fff +// $navbar-inverse-toggle-border-color: #333 + + +//== Navs +// +//## + +//=== Shared nav styles +// $nav-link-padding: 10px 15px +// $nav-link-hover-bg: $gray-lighter + +// $nav-disabled-link-color: $gray-light +// $nav-disabled-link-hover-color: $gray-light + +//== Tabs +// $nav-tabs-border-color: #ddd + +// $nav-tabs-link-hover-border-color: $gray-lighter + +// $nav-tabs-active-link-hover-bg: $body-bg +// $nav-tabs-active-link-hover-color: $gray +// $nav-tabs-active-link-hover-border-color: #ddd + +// $nav-tabs-justified-link-border-color: #ddd +// $nav-tabs-justified-active-link-border-color: $body-bg + +//== Pills +// $nav-pills-border-radius: $border-radius-base +// $nav-pills-active-link-hover-bg: $component-active-bg +// $nav-pills-active-link-hover-color: $component-active-color + + +//== Pagination +// +//## + +// $pagination-color: $link-color +// $pagination-bg: #fff +// $pagination-border: #ddd + +// $pagination-hover-color: $link-hover-color +// $pagination-hover-bg: $gray-lighter +// $pagination-hover-border: #ddd + +// $pagination-active-color: #fff +// $pagination-active-bg: $brand-primary +// $pagination-active-border: $brand-primary + +// $pagination-disabled-color: $gray-light +// $pagination-disabled-bg: #fff +// $pagination-disabled-border: #ddd + + +//== Pager +// +//## + +// $pager-bg: $pagination-bg +// $pager-border: $pagination-border +// $pager-border-radius: 15px + +// $pager-hover-bg: $pagination-hover-bg + +// $pager-active-bg: $pagination-active-bg +// $pager-active-color: $pagination-active-color + +// $pager-disabled-color: $pagination-disabled-color + + +//== Jumbotron +// +//## + +// $jumbotron-padding: 30px +// $jumbotron-color: inherit +// $jumbotron-bg: $gray-lighter +// $jumbotron-heading-color: inherit +// $jumbotron-font-size: ceil(($font-size-base * 1.5)) + + +//== Form states and alerts +// +//## Define colors for form feedback states and, by default, alerts. + +// $state-success-text: #3c763d +// $state-success-bg: #dff0d8 +// $state-success-border: darken(adjust-hue($state-success-bg, -10), 5%) + +// $state-info-text: #31708f +// $state-info-bg: #d9edf7 +// $state-info-border: darken(adjust-hue($state-info-bg, -10), 7%) + +// $state-warning-text: #8a6d3b +// $state-warning-bg: #fcf8e3 +// $state-warning-border: darken(adjust-hue($state-warning-bg, -10), 5%) + +// $state-danger-text: #a94442 +// $state-danger-bg: #f2dede +// $state-danger-border: darken(adjust-hue($state-danger-bg, -10), 5%) + + +//== Tooltips +// +//## + +//** Tooltip max width +// $tooltip-max-width: 200px +//** Tooltip text color +// $tooltip-color: #fff +//** Tooltip background color +// $tooltip-bg: #000 +// $tooltip-opacity: .9 + +//** Tooltip arrow width +// $tooltip-arrow-width: 5px +//** Tooltip arrow color +// $tooltip-arrow-color: $tooltip-bg + + +//== Popovers +// +//## + +//** Popover body background color +// $popover-bg: #fff +//** Popover maximum width +// $popover-max-width: 276px +//** Popover border color +// $popover-border-color: rgba(0,0,0,.2) +//** Popover fallback border color +// $popover-fallback-border-color: #ccc + +//** Popover title background color +// $popover-title-bg: darken($popover-bg, 3%) + +//** Popover arrow width +// $popover-arrow-width: 10px +//** Popover arrow color +// $popover-arrow-color: $popover-bg + +//** Popover outer arrow width +// $popover-arrow-outer-width: ($popover-arrow-width + 1) +//** Popover outer arrow color +// $popover-arrow-outer-color: fade_in($popover-border-color, 0.05) +//** Popover outer arrow fallback color +// $popover-arrow-outer-fallback-color: darken($popover-fallback-border-color, 20%) + + +//== Labels +// +//## + +//** Default label background color +// $label-default-bg: $gray-light +//** Primary label background color +// $label-primary-bg: $brand-primary +//** Success label background color +// $label-success-bg: $brand-success +//** Info label background color +// $label-info-bg: $brand-info +//** Warning label background color +// $label-warning-bg: $brand-warning +//** Danger label background color +// $label-danger-bg: $brand-danger + +//** Default label text color +// $label-color: #fff +//** Default text color of a linked label +// $label-link-hover-color: #fff + + +//== Modals +// +//## + +//** Padding applied to the modal body +// $modal-inner-padding: 15px + +//** Padding applied to the modal title +// $modal-title-padding: 15px +//** Modal title line-height +// $modal-title-line-height: $line-height-base + +//** Background color of modal content area +// $modal-content-bg: #fff +//** Modal content border color +// $modal-content-border-color: rgba(0,0,0,.2) +//** Modal content border color **for IE8** +// $modal-content-fallback-border-color: #999 + +//** Modal backdrop background color +// $modal-backdrop-bg: #000 +//** Modal backdrop opacity +// $modal-backdrop-opacity: .5 +//** Modal header border color +// $modal-header-border-color: #e5e5e5 +//** Modal footer border color +// $modal-footer-border-color: $modal-header-border-color + +// $modal-lg: 900px +// $modal-md: 600px +// $modal-sm: 300px + + +//== Alerts +// +//## Define alert colors, border radius, and padding. + +// $alert-padding: 15px +// $alert-border-radius: $border-radius-base +// $alert-link-font-weight: bold + +// $alert-success-bg: $state-success-bg +// $alert-success-text: $state-success-text +// $alert-success-border: $state-success-border + +// $alert-info-bg: $state-info-bg +// $alert-info-text: $state-info-text +// $alert-info-border: $state-info-border + +// $alert-warning-bg: $state-warning-bg +// $alert-warning-text: $state-warning-text +// $alert-warning-border: $state-warning-border + +// $alert-danger-bg: $state-danger-bg +// $alert-danger-text: $state-danger-text +// $alert-danger-border: $state-danger-border + + +//== Progress bars +// +//## + +//** Background color of the whole progress component +// $progress-bg: #f5f5f5 +//** Progress bar text color +// $progress-bar-color: #fff +//** Variable for setting rounded corners on progress bar. +// $progress-border-radius: $border-radius-base + +//** Default progress bar color +// $progress-bar-bg: $brand-primary +//** Success progress bar color +// $progress-bar-success-bg: $brand-success +//** Warning progress bar color +// $progress-bar-warning-bg: $brand-warning +//** Danger progress bar color +// $progress-bar-danger-bg: $brand-danger +//** Info progress bar color +// $progress-bar-info-bg: $brand-info + + +//== List group +// +//## +//** Background color on `.list-group-item` +$list-group-bg: $white; +//** `.list-group-item` border color +$list-group-border: transparent; +//** List group border radius +$list-group-border-radius: 0; + +//** Background color of single list items on hover +$list-group-hover-bg: $blue; +//** Text color of active list items +$list-group-active-color: $white; +//** Background color of active list items +$list-group-active-bg: $gray; +//** Border color of active list elements +// $list-group-active-border: $list-group-active-bg +//** Text color for content within active list items +$list-group-active-text-color: $white; + +//** Text color of disabled list items +// $list-group-disabled-color: $gray-light +//** Background color of disabled list items +// $list-group-disabled-bg: $gray-lighter +//** Text color for content within disabled list items +// $list-group-disabled-text-color: $list-group-disabled-color + +// $list-group-link-color: #555 +$list-group-link-hover-color: $white; +// $list-group-link-heading-color: #333 + + +//== Panels +// +//## + +// $panel-bg: #fff +// $panel-body-padding: 15px +// $panel-heading-padding: 10px 15px +// $panel-footer-padding: $panel-heading-padding +// $panel-border-radius: $border-radius-base + +//** Border color for elements within panels +// $panel-inner-border: #ddd +// $panel-footer-bg: #f5f5f5 + +// $panel-default-text: $gray-dark +// $panel-default-border: #ddd +// $panel-default-heading-bg: #f5f5f5 + +// $panel-primary-text: #fff +// $panel-primary-border: $brand-primary +// $panel-primary-heading-bg: $brand-primary + +// $panel-success-text: $state-success-text +// $panel-success-border: $state-success-border +// $panel-success-heading-bg: $state-success-bg + +// $panel-info-text: $state-info-text +// $panel-info-border: $state-info-border +// $panel-info-heading-bg: $state-info-bg + +// $panel-warning-text: $state-warning-text +// $panel-warning-border: $state-warning-border +// $panel-warning-heading-bg: $state-warning-bg + +// $panel-danger-text: $state-danger-text +// $panel-danger-border: $state-danger-border +// $panel-danger-heading-bg: $state-danger-bg + + +//== Thumbnails +// +//## + +//** Padding around the thumbnail image +// $thumbnail-padding: 4px +//** Thumbnail background color +// $thumbnail-bg: $body-bg +//** Thumbnail border color +// $thumbnail-border: #ddd +//** Thumbnail border radius +// $thumbnail-border-radius: $border-radius-base + +//** Custom text color for thumbnail captions +// $thumbnail-caption-color: $text-color +//** Padding around the thumbnail caption +// $thumbnail-caption-padding: 9px + + +//== Wells +// +//## + +// $well-bg: #f5f5f5 +// $well-border: darken($well-bg, 7%) + + +//== Badges +// +//## + +// $badge-color: #fff +//** Linked badge text color on hover +// $badge-link-hover-color: #fff +// $badge-bg: $gray-light + +//** Badge text color in active nav link +// $badge-active-color: $link-color +//** Badge background color in active nav link +// $badge-active-bg: #fff + +// $badge-font-weight: bold +// $badge-line-height: 1 +// $badge-border-radius: 10px + + +//== Breadcrumbs +// +//## + +// $breadcrumb-padding-vertical: 8px +// $breadcrumb-padding-horizontal: 15px +//** Breadcrumb background color +// $breadcrumb-bg: #f5f5f5 +//** Breadcrumb text color +// $breadcrumb-color: #ccc +//** Text color of current page in the breadcrumb +// $breadcrumb-active-color: $gray-light +//** Textual separator for between breadcrumb elements +// $breadcrumb-separator: "/" + + +//== Carousel +// +//## + +// $carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6) + +// $carousel-control-color: #fff +// $carousel-control-width: 15% +// $carousel-control-opacity: .5 +// $carousel-control-font-size: 20px + +// $carousel-indicator-active-bg: #fff +// $carousel-indicator-border-color: #fff + +// $carousel-caption-color: #fff + + +//== Close +// +//## + +// $close-font-weight: bold +// $close-color: #000 +// $close-text-shadow: 0 1px 0 #fff + + +//== Code +// +//## + +// $code-color: #c7254e +// $code-bg: #f9f2f4 + +// $kbd-color: #fff +// $kbd-bg: #333 + +// $pre-bg: #f5f5f5 +// $pre-color: $gray-dark +// $pre-border-color: #ccc +// $pre-scrollable-max-height: 340px + + +//== Type +// +//## + +//** Horizontal offset for forms and lists. +// $component-offset-horizontal: 180px +//** Text muted color +// $text-muted: $gray-light +//** Abbreviations and acronyms border color +// $abbr-border-color: $gray-light +//** Headings small color +// $headings-small-color: $gray-light +//** Blockquote small color +// $blockquote-small-color: $gray-light +//** Blockquote font size +$blockquote-font-size: $font-size-base !default; +//** Blockquote border color +// $blockquote-border-color: $gray-lighter +//** Page header border color +// $page-header-border-color: $gray-lighter +//** Width of horizontal description list titles +// $dl-horizontal-offset: $component-offset-horizontal +//** Horizontal line color. +// $hr-border: $gray-lighter diff --git a/app/assets/stylesheets/card-footer.scss b/app/assets/stylesheets/card-footer.scss new file mode 100644 index 000000000..118c8c92f --- /dev/null +++ b/app/assets/stylesheets/card-footer.scss @@ -0,0 +1,29 @@ +.card-footer { + background-color: $background-grey; + border-top: 1px solid $border-medium-grey; + bottom: 0; + font-size: $font-size-small; + left: 0; + line-height: $line-height-computed; + margin-left: 0; + min-height: $line-height-computed + 1; + position: absolute; + width: 100%; + + .footer-container { + padding: 1px 5px; + + a { + color: $text-grey; + font-weight: normal; + margin-right: 4px; + } + } +} + +// gallery-picture specific styles for card-footer +.media { + .gallery-picture img { margin-bottom: $line-height-computed + 2; } + + .card-footer .footer-container { font-size: $font-size-base; } +} diff --git a/app/assets/stylesheets/chat.scss b/app/assets/stylesheets/chat.scss index 3be259038..8adb9dd52 100644 --- a/app/assets/stylesheets/chat.scss +++ b/app/assets/stylesheets/chat.scss @@ -5,3 +5,10 @@ body > .container-fluid.chat-roster-shown { body > .container-fluid.chat-roster-hidden { #back-to-top { right: 54px; } } + +// This element is instanciated by JSXC. Does not have to follow naming conventions +// scss-lint:disable IdSelector, SelectorFormat +#jsxc_roster { + top: $navbar-height; +} +// scss-lint:enable IdSelector, SelectorFormat diff --git a/app/assets/stylesheets/new_styles/_code.scss b/app/assets/stylesheets/code.scss similarity index 100% rename from app/assets/stylesheets/new_styles/_code.scss rename to app/assets/stylesheets/code.scss diff --git a/app/assets/stylesheets/color-variables.scss b/app/assets/stylesheets/color-variables.scss new file mode 100644 index 000000000..d3862a09d --- /dev/null +++ b/app/assets/stylesheets/color-variables.scss @@ -0,0 +1,33 @@ +$white: #fff; +$black: #000; + +$text-grey: #999; +$text-dark-grey: #666; +$text: #333; + +$background-white: $white; +$background-grey: #eee; +$background-blue: #e7f2f7; + +$grey: #2b2b2b; +$medium-gray: #ccc; +$light-grey: #ddd; + +$border-grey: $light-grey; +$border-medium-grey: $medium-gray; +$border-dark-grey: $text-grey; +$border-medium-grey: #ccc; + +$link-grey: #777; +$link-disabled-grey: $text-grey; + +$green: #8ede3d; +$light-green: lighten($green, 20%); +$red: #a80000; +$blue: #3f8fba; + +$main-background: #f0f0f0 !default; +$sidebars-background: $background-white !default; +$left-navbar-drawer-background: darken($sidebars-background, 6%); + +$card-shadow: 0 1px 2px 0 rgba(0, 0, 0, .16), 0 2px 10px 0 rgba(0, 0, 0, .12) !default; diff --git a/app/assets/stylesheets/color_themes/_color_theme_override.scss b/app/assets/stylesheets/color_themes/_color_theme_override.scss new file mode 100644 index 000000000..899885f8e --- /dev/null +++ b/app/assets/stylesheets/color_themes/_color_theme_override.scss @@ -0,0 +1,25 @@ +/* Raw CSS */ +body { + a, + a.tag, + .btn-link, + #main_stream .stream_element > .media a.author-name, + #hovercard h4 a, + .stream_element .from a.self { + color: $link-color; + + &:hover, &:focus { + color: darken($link-color, 10%); + } + } + + #publisher_textarea_wrapper > #button_container > span.markdownIndications > a { + color: fade-out($link-color, 0.4); + } + + .left-navbar .hoverable:hover { background-color: $main-color-essence; } + + .poll_form .progress .bar { background-color: $main-color-dark; } + + .badge { background-color: $brand-primary; } +} diff --git a/app/assets/stylesheets/color_themes/_color_theme_override_origwhite.scss b/app/assets/stylesheets/color_themes/_color_theme_override_origwhite.scss new file mode 100644 index 000000000..ff7450ecf --- /dev/null +++ b/app/assets/stylesheets/color_themes/_color_theme_override_origwhite.scss @@ -0,0 +1,26 @@ +body { + #main_stream .stream_element { + border: 0; + border-bottom: 1px solid $border-grey; + margin-bottom: 10px; + } + + .profile_header > div { + border-bottom: 1px solid $border-grey; + } + + .left-navbar .hoverable { border-bottom: 0; } + + .profile-sidebar, + .left-navbar-fixed-background, + &.page-tags .left-navbar-fixed-background, + .left-navbar { + border-right: 1px solid $border-grey; + } + + .right-sidebar-fixed-background, + .right-sidebar-fixed-background, + .rightbar { + border-left: 1px solid $sidebars-background; + } +} diff --git a/app/assets/stylesheets/color_themes/dark_green/_style.scss b/app/assets/stylesheets/color_themes/dark_green/_style.scss new file mode 100644 index 000000000..f8fe658e7 --- /dev/null +++ b/app/assets/stylesheets/color_themes/dark_green/_style.scss @@ -0,0 +1,18 @@ +/* Main color(s) */ +$brand-primary: #009900; + +/* Shades */ +$main-color-essence: fade-out($brand-primary, 0.8); +$main-color-light: lighten($brand-primary, 10%); +$main-color-dark: darken($brand-primary, 20%); + +/* Bootstrap Variables */ +$btn-primary-bg: $brand-primary; +$link-color: $brand-primary; + +/* Custom Variables */ +$header-background-color: $main-color-dark; +$navbar-inverse-bg: $main-color-dark; +$header-search-color: lighten($header-background-color, 10%); + +@import "color_themes/color_theme_override" diff --git a/app/assets/stylesheets/color_themes/dark_green/desktop.scss b/app/assets/stylesheets/color_themes/dark_green/desktop.scss new file mode 100644 index 000000000..fc325a510 --- /dev/null +++ b/app/assets/stylesheets/color_themes/dark_green/desktop.scss @@ -0,0 +1,2 @@ +@import "style"; +@import "application"; diff --git a/app/assets/stylesheets/color_themes/dark_green/mobile.scss b/app/assets/stylesheets/color_themes/dark_green/mobile.scss new file mode 100644 index 000000000..e8a543736 --- /dev/null +++ b/app/assets/stylesheets/color_themes/dark_green/mobile.scss @@ -0,0 +1,2 @@ +@import "style"; +@import "mobile/mobile"; diff --git a/app/assets/stylesheets/color_themes/egyptian_blue/_style.scss b/app/assets/stylesheets/color_themes/egyptian_blue/_style.scss new file mode 100644 index 000000000..1895f02bb --- /dev/null +++ b/app/assets/stylesheets/color_themes/egyptian_blue/_style.scss @@ -0,0 +1,18 @@ +/* Main color(s) */ +$brand-primary: #1034A6; + +/* Shades */ +$main-color-essence: fade-out($brand-primary, 0.8); +$main-color-light: lighten($brand-primary, 10%); +$main-color-dark: darken($brand-primary, 15%); + +/* Bootstrap Variables */ +$btn-primary-bg: $brand-primary; +$link-color: $brand-primary; + +/* Custom Variables */ +$header-background-color: $main-color-dark; +$navbar-inverse-bg: $main-color-dark; +$header-search-color: lighten($header-background-color, 15%); + +@import "color_themes/color_theme_override" diff --git a/app/assets/stylesheets/color_themes/egyptian_blue/desktop.scss b/app/assets/stylesheets/color_themes/egyptian_blue/desktop.scss new file mode 100644 index 000000000..fc325a510 --- /dev/null +++ b/app/assets/stylesheets/color_themes/egyptian_blue/desktop.scss @@ -0,0 +1,2 @@ +@import "style"; +@import "application"; diff --git a/app/assets/stylesheets/color_themes/egyptian_blue/mobile.scss b/app/assets/stylesheets/color_themes/egyptian_blue/mobile.scss new file mode 100644 index 000000000..e8a543736 --- /dev/null +++ b/app/assets/stylesheets/color_themes/egyptian_blue/mobile.scss @@ -0,0 +1,2 @@ +@import "style"; +@import "mobile/mobile"; diff --git a/app/assets/stylesheets/color_themes/magenta/_style.scss b/app/assets/stylesheets/color_themes/magenta/_style.scss new file mode 100644 index 000000000..0f9b4be1f --- /dev/null +++ b/app/assets/stylesheets/color_themes/magenta/_style.scss @@ -0,0 +1,18 @@ +/* Main color(s) */ +$brand-primary: #FF00FF; + +/* Shades */ +$main-color-essence: fade-out($brand-primary, 0.8); +$main-color-light: lighten($brand-primary, 10%); +$main-color-dark: darken($brand-primary, 30%); + +/* Bootstrap Variables */ +$btn-primary-bg: darken($brand-primary, 5%); +$link-color: $brand-primary; + +/* Custom Variables */ +$header-background-color: $main-color-dark; +$navbar-inverse-bg: $main-color-dark; +$header-search-color: lighten($header-background-color, 10%); + +@import "color_themes/color_theme_override" diff --git a/app/assets/stylesheets/color_themes/magenta/desktop.scss b/app/assets/stylesheets/color_themes/magenta/desktop.scss new file mode 100644 index 000000000..fc325a510 --- /dev/null +++ b/app/assets/stylesheets/color_themes/magenta/desktop.scss @@ -0,0 +1,2 @@ +@import "style"; +@import "application"; diff --git a/app/assets/stylesheets/color_themes/magenta/mobile.scss b/app/assets/stylesheets/color_themes/magenta/mobile.scss new file mode 100644 index 000000000..e8a543736 --- /dev/null +++ b/app/assets/stylesheets/color_themes/magenta/mobile.scss @@ -0,0 +1,2 @@ +@import "style"; +@import "mobile/mobile"; diff --git a/app/assets/stylesheets/color_themes/original/_style.scss b/app/assets/stylesheets/color_themes/original/_style.scss new file mode 100644 index 000000000..89dda9ca2 --- /dev/null +++ b/app/assets/stylesheets/color_themes/original/_style.scss @@ -0,0 +1,8 @@ +/* Main color(s) */ +$main-color: #585858; + +/* Shades */ +$main-color-dark: darken($main-color, 15%); + +/* Variables */ +$header-background-color: $main-color-dark; diff --git a/app/assets/stylesheets/color_themes/original/desktop.scss b/app/assets/stylesheets/color_themes/original/desktop.scss new file mode 100644 index 000000000..fc325a510 --- /dev/null +++ b/app/assets/stylesheets/color_themes/original/desktop.scss @@ -0,0 +1,2 @@ +@import "style"; +@import "application"; diff --git a/app/assets/stylesheets/color_themes/original/mobile.scss b/app/assets/stylesheets/color_themes/original/mobile.scss new file mode 100644 index 000000000..e8a543736 --- /dev/null +++ b/app/assets/stylesheets/color_themes/original/mobile.scss @@ -0,0 +1,2 @@ +@import "style"; +@import "mobile/mobile"; diff --git a/app/assets/stylesheets/color_themes/original_white/_style.scss b/app/assets/stylesheets/color_themes/original_white/_style.scss new file mode 100644 index 000000000..7f702bcaf --- /dev/null +++ b/app/assets/stylesheets/color_themes/original_white/_style.scss @@ -0,0 +1,14 @@ +// Main color(s) +$main-color: #585858; +$background: #fff; + +// Shades +$main-color-dark: darken($main-color, 15%); + +// Variables +$header-background-color: $main-color-dark; +$main-background: $background; +$sidebars-background: $background; +$card-shadow: none; + +@import 'color_themes/color_theme_override_origwhite'; diff --git a/app/assets/stylesheets/color_themes/original_white/desktop.scss b/app/assets/stylesheets/color_themes/original_white/desktop.scss new file mode 100644 index 000000000..7c6bf9507 --- /dev/null +++ b/app/assets/stylesheets/color_themes/original_white/desktop.scss @@ -0,0 +1,3 @@ +@import 'color-variables'; +@import 'style'; +@import 'application'; diff --git a/app/assets/stylesheets/color_themes/original_white/mobile.scss b/app/assets/stylesheets/color_themes/original_white/mobile.scss new file mode 100644 index 000000000..24ffc11db --- /dev/null +++ b/app/assets/stylesheets/color_themes/original_white/mobile.scss @@ -0,0 +1,3 @@ +@import 'color-variables'; +@import 'style'; +@import 'mobile/mobile'; diff --git a/app/assets/stylesheets/colors.scss b/app/assets/stylesheets/colors.scss index a6c4b50df..389c64123 100644 --- a/app/assets/stylesheets/colors.scss +++ b/app/assets/stylesheets/colors.scss @@ -1,28 +1,8 @@ -$highlight-white: #FAFAFA; +.gray { + color: $text-grey; -$background-white: #FFFFFF; -$background-grey: #EEEEEE; -$background-blue: #E7F2F7; - -$grey: #2B2B2B; -$light-grey: #DDDDDD; - -$border-grey: #DDDDDD; -$border-dark-grey: #999999; - -$link-blue : rgb(42,156,235); -$link-grey: #777777; -$link-disabled-grey: #999999; - -$text-grey: #999999; -$text-dark-grey: #666666; -$text: #333333; - -$white: white; -$black: black; -$green: #8EDE3D; -$light-green: lighten($green,20%); -$red: #A80000; -$blue: #3F8FBA; -$dark-blue: darken(#0984C8,10%); -$creation-blue: #0097FF; + [class^="entypo-"], + [class*="entypo-"] { + color: $text-grey; + } +} diff --git a/app/assets/stylesheets/comments.scss b/app/assets/stylesheets/comments.scss index d21f77fde..0ad5cb838 100644 --- a/app/assets/stylesheets/comments.scss +++ b/app/assets/stylesheets/comments.scss @@ -8,11 +8,11 @@ } .media { margin-top: 10px; } } - .comments > .comment, .comment.new_comment_form_wrapper { + .comments > .comment, + .comment.new-comment-form-wrapper { .avatar { - margin-top: 5px; - height: 30px; - width: 30px; + height: 35px; + width: 35px; } margin: 0; border-top: 1px dotted $border-grey; @@ -20,8 +20,8 @@ .info { margin-top: 5px; - font-size: 11px; - line-height: 11px; + font-size: $font-size-small; + line-height: $font-size-small; } >.highlighted { @@ -30,19 +30,21 @@ } } .submit_button { + margin-top: 10px; input { float: right; } padding-left: 12px; - width: 95%; display: none; } .comment_box { - width: 95%; - height: 30px; + height: 35px; + resize: none; } textarea.comment_box:focus, textarea.comment_box:valid, textarea.comment_box:active { border-color: $border-dark-grey; & + .submit_button { display: block; } + min-height: 35px; + box-shadow: none; } } diff --git a/app/assets/stylesheets/contacts.scss b/app/assets/stylesheets/contacts.scss index 9a356689d..aaef928f7 100644 --- a/app/assets/stylesheets/contacts.scss +++ b/app/assets/stylesheets/contacts.scss @@ -1,21 +1,34 @@ +.page-contacts { + .sidebar { padding-bottom: 10px; } + + .stream.contacts .header { + border-bottom: 1px solid $border-grey; + min-height: 55px; + form { margin: 0; } + input, + .btn { + margin-bottom: 11px; + margin-top: 11px; + } + } + + .stream.contacts .aspect-controls { + margin-bottom: 7px; + margin-left: 30px; + margin-right: -10px; + margin-top: 7px; + } +} + #contacts_container { #people_stream.contacts { .header { - border-bottom: 1px solid $border-grey; - margin-top: 10px; - min-height: 53px; #change_aspect_name { cursor: pointer; } #aspect_name_form { display: none; - form { margin: 0px; } - input { - margin-bottom: 0px; - margin-top: 10px; - } - .btn { margin-top: 10px; } } #contact_list_search { - margin: 6px 30px 0 0; + margin: 11px 0 0; width: 150px; &:focus { width: 250px; } } @@ -27,7 +40,7 @@ #chat_privilege_toggle > .enabled { color: #000; } - .entypo.contacts-header-icon { + .contacts-header-icon { font-size: 24.5px; line-height: 40px; color: lighten($black,75%); @@ -42,13 +55,13 @@ cursor: pointer; font-size: 20px; line-height: 50px; - margin: 10px; + margin: 0 10px; color: lighten($black,75%); &:hover { color: $black; } } &.in_aspect { - border-left: 3px solid $green; - background-color: lighten($green,35%); + border-left: 3px solid $brand-success; + background-color: lighten($brand-success,35%); } &:not(.in_aspect) { border-left: 3px solid $white; } } @@ -57,7 +70,7 @@ text-align: center; margin-top: 50px; } - .well { margin: 20px 0 10px; } + .well { margin: 10px; } } } diff --git a/app/assets/stylesheets/conversations.scss b/app/assets/stylesheets/conversations.scss index 99b202885..01540628e 100644 --- a/app/assets/stylesheets/conversations.scss +++ b/app/assets/stylesheets/conversations.scss @@ -1,32 +1,67 @@ -#conversations_container { - .stream_container { border-left: none; } +.page-conversations { + .framed-content { padding: 0 10px 10px; } + .sidebar-header .pull-right { margin-top: 12px; } + + .sidebar { + margin-bottom: 50px; + .pagination { margin: 5px; } + } + + .pagination-container > .pagination { + border-radius: 0; + border-top: 1px solid $border-grey; + margin: 0; + padding: 10px; + text-align: center; + width: 100%; + } .stream_element { - border-bottom: 1px solid $border-grey; - &:first-child { border-top: none; } - a.author{ - font-weight: bold; - } + background-color: $white; + padding: 10px; - .avatar{ + .avatar { width: 50px; height: 50px; } + > .media { margin: 0; } + } + + .stream_element.message, + .stream_element.new-message { + border: 1px solid $light-grey; + box-shadow: $card-shadow; + margin-bottom: 20px; + + .avatar { min-width: 50px; } + + .author { + font-weight: bold; + } + p { margin: 0 0 1em 0; &:last-child { margin-bottom: 0; } } - &.new_message { border-bottom: none; } - .timestamp { font-size: 11px; } + } + + .stream_element.new-message, + .new-conversation { + label { font-weight: bold; } + + textarea { + max-width: 100%; + min-width: 100%; + width: 100%; + } } .stream_element.conversation { - padding: 8px; - .media { - margin-bottom: 0px; - margin-left: 0px; - } + border-top: 1px solid $border-grey; + + .timestamp { font-size: $font-size-small; } + .media { margin: 0; } &:hover:not(.selected), &.selected { .subject, @@ -41,21 +76,16 @@ background-color: lighten($blue,5%); cursor: pointer; .participants { - height: 25px; + border-color: rgba($border-grey, 1); + height: 31px; margin-top: 5px; padding-top: 5px; - border-color: rgba($border-grey, 1) } } + &.unread { background-color: darken($background-white, 5%); } &.selected { background-color: $blue; } - .avatar { - width: 50px; - height: 50px; - float: left; - } - .last_author, .last_message { font-size: 12px; line-height: 15px; @@ -65,9 +95,8 @@ } .last_author { color: $text-dark-grey; } - .message_count, .unread_message_count { + .message-count, .unread-message-count { margin-left: 3px; - float: right; font-size: 12px; font-weight: normal; } @@ -77,26 +106,23 @@ background-color: rgba($white, 0.7); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; - float: left; - font-size: 13px; font-weight: bold; height: 15px; line-height: 15px; - margin-left: -50px; - margin-top: 35px; + margin-top: -15px; + position: absolute; text-align: center; width: 50px; } .participants { - float: left; - clear: both; height: 0; width: 100%; overflow: hidden; border-top: 1px dotted rgba($border-grey, 0); transition: height ease 300ms; .avatar { + float: left; margin: 0 5px 0 0; height: 25px; width: 25px; @@ -106,7 +132,7 @@ .img { line-height: 15px; } .subject { - font-size: $font-size-text; + font-size: $font-size-base; > * { overflow: hidden; white-space: nowrap; @@ -121,109 +147,41 @@ color: $blue; } } -} -#conversation_show { - .conversation_participants { - box-shadow: 0 2px 3px -3px #666; - - background-color: $background-white; - margin-bottom: 5px; - border-bottom: 1px solid $border-grey; - padding: 5px; - line-height: 0px; + .stream_container .conversation-participants { + margin-bottom: 20px; .hide_conversation, .delete_conversation { display: block; - margin-top: 25px; margin-left: 10px; + margin-top: 10px; } .avatar { - height: 30px; - width: 30px; - } - - .avatars { - text-align: right; - margin-top: 9px; - } - - a img { margin-bottom: 4px; } - - .conversation_controls { - margin-bottom: 10px; - - a { margin-right: 10px; } + display: inline; + height: 50px; + margin-top: 4px; + width: 50px; } } - .conversation_participants a:hover { text-decoration: none; } + .conversation-participants a:hover { text-decoration: none; } - .stream .stream_element { - padding: 10px; - } -} - -#left_pane { - border-right: solid 1px $border-grey; - h3 { - padding-bottom: 0; - } - - #left_pane_header { - padding: 10px; - padding-right: 20px; - border-bottom: 1px solid $border-grey; - } - - #conversation_inbox { - a:hover { - text-decoration: none; - } - .pagination { - margin-left: auto; - margin-right: auto; - text-align: center; - - .disabled a { - background: $background-grey; - } - } - } -} - -@media (max-width: 1354px) { - #left_pane #conversation_inbox .pagination ul > li > a { - padding: 4px 7px; - } -} - -#conversation_new { - label { font-weight: bold; } - - .well { + .no-conversations { + color: $gray-light; + font-size: $font-size-h4; font-weight: bold; - margin-top: 25px; + padding: 50px 0; + text-align: center; } } -#no_conversations, -#no_conversation_text { - font-weight: bold; - color: #ccc; - text-align: center; - margin-top: 100px; -} - -#no_conversation_text { - font-size: 20px; -} - -#no_conversation_controls { - text-align: center; - font-size: 12px; +// We need this to override the Bootstrap pagination style only for the conversations view +// scss-lint:disable SelectorDepth +.conversation-inbox .pagination > li > a { + padding: 4px 7px; } +// scss-lint:enable SelectorDepth #new_conversation_pane { ul.as-selections { width: 100% !important; } diff --git a/app/assets/stylesheets/entypo.scss b/app/assets/stylesheets/entypo.scss deleted file mode 100644 index a2d2a3774..000000000 --- a/app/assets/stylesheets/entypo.scss +++ /dev/null @@ -1,322 +0,0 @@ -.entypo { - font-family: 'entypo'; - font-style: normal; - color: black; - - &.red { - color: #A40802; - } - &.white { - color: white; - } - &.gray { - color: #aaa; - } - &.blue { - color: #3f8fba; - } - - &.large { - font-size: 2.5em; - } - - &.middle { - font-size: 1.5em; - } - - &.small { - font-size: 1.2em; - } - - /* main icon map */ - &.add-to-list:before { content: '\e003'; } /* e003 */ - &.add-user:before { content: '\e700'; } /* e700 */ - &.address:before { content: '\e723'; } /* e723 */ - &.adjust:before { content: '\25d1'; } /* 25d1 */ - &.air:before { content: '\e753'; } /* e753 */ - &.airplane:before { content: '\2708'; } /* 2708 */ - &.archive:before { content: '\e738'; } /* e738 */ - &.area-graph:before { content: '\1f53e'; } /* 1f53e */ - &.arrow-combo:before { content: '\e74f'; } /* e74f */ - &.attach:before { content: '\1f4ce'; } /* 1f4ce */ - &.back-in-time:before { content: '\e771'; } /* e771 */ - &.back:before { content: '\1f519'; } /* 1f519 */ - &.bag:before { content: '\1f45c'; } /* 1f45c */ - &.bar-graph:before { content: '\1f4ca '; } /* 1f4ca */ - &.battery:before { content: '\1f50b'; } /* 1f50b */ - &.beamed-note:before { content: '\266b'; } /* 266b */ - &.bell:before { content: '\1f514'; } /* 1f514 */ - &.block:before { content: '\1f6ab'; } /* 1f6ab */ - &.book:before { content: '\1f4d5 '; } /* 1f4d5 */ - &.bookmark:before { content: '\1f516'; } /* 1f516 */ - &.bookmarks:before { content: '\1f4d1'; } /* 1f4d1 */ - &.box:before { content: '\1f4e6'; } /* 1f4e6 */ - &.briefcase:before { content: '\1f4bc'; } /* 1f4bc */ - &.browser:before { content: '\e74e'; } /* e74e */ - &.brush:before { content: '\e79a'; } /* e79a */ - &.bucket:before { content: '\e756'; } /* e756 */ - &.calendar:before { content: '\1f4c5'; } /* 1f4c5 */ - &.camera:before { content: '\1f4f7'; } /* 1f4f7 */ - &.cart:before { content: '\e73d'; } /* e73d */ - &.cc-by:before { content: '\e7a6'; } /* e7a6 */ - &.cc-nc-eu:before { content: '\e7a8'; } /* e7a8 */ - &.cc-nc-jp:before { content: '\e7a9'; } /* e7a9 */ - &.cc-nc:before { content: '\e7a7'; } /* e7a7 */ - &.cc-nd:before { content: '\e7ab'; } /* e7ab */ - &.cc-pd:before { content: '\e7ac'; } /* e7ac */ - &.cc-remix:before { content: '\e7af'; } /* e7af */ - &.cc-sa:before { content: '\e7aa'; } /* e7aa */ - &.cc-share:before { content: '\e7ae'; } /* e7ae */ - &.cc-zero:before { content: '\e7ad'; } /* e7ad */ - &.cc:before { content: '\e7a5'; } /* e7a5 */ - &.ccw:before { content: '\27f2'; } /* 27f2 */ - &.cd:before { content: '\1f4bf'; } /* 1f4bf */ - &.chat:before { content: '\e720'; } /* e720 */ - &.check:before { content: '\2713'; } /* 2713 */ - &.chevron-down:before { content: '\e75c'; } /* e75c */ - &.chevron-left:before { content: '\e75d'; } /* e75d */ - &.chevron-right:before { content: '\e75e'; } /* e75e */ - &.chevron-small-down:before { content: '\e760'; } /* e760 */ - &.chevron-small-left:before { content: '\e761'; } /* e761 */ - &.chevron-small-right:before { content: '\e762'; } /* e762 */ - &.chevron-small-up:before { content: '\e763'; } /* e763 */ - &.chevron-thin-down:before { content: '\e764'; } /* e764 */ - &.chevron-thin-left:before { content: '\e765'; } /* e765 */ - &.chevron-thin-right:before { content: '\e766'; } /* e766 */ - &.chevron-thin-up:before { content: '\e767'; } /* e767 */ - &.chevron-up:before { content: '\e75f'; } /* e75f */ - &.circled-cross:before { content: '\2716'; } /* 2716 */ - &.circled-down:before { content: '\e758'; } /* e758 */ - &.circled-help:before { content: '\e704'; } /* e704 */ - &.circled-info:before { content: '\e705'; } /* e705 */ - &.circled-left:before { content: '\e759'; } /* e759 */ - &.circled-minus:before { content: '\2796'; } /* 2796 */ - &.circled-plus:before { content: '\2795'; } /* 2795 */ - &.circled-right:before { content: '\e75a'; } /* e75a */ - &.circled-up:before { content: '\e75b'; } /* e75b */ - &.clipboard:before { content: '\1f4cb'; } /* 1f4cb */ - &.clock:before { content: '\1f554'; } /* 1f554 */ - &.cloud:before { content: '\2601'; } /* 2601 */ - &.code:before { content: '\e714'; } /* e714 */ - &.cog:before { content: '\2699'; } /* 2699 */ - &.comment:before { content: '\e718'; } /* e718 */ - &.compass:before { content: '\e728'; } /* e728 */ - &.credit-card:before { content: '\1f4b3'; } /* 1f4b3 */ - &.cross-hair:before { content: '\1f3af'; } /* 1f3af */ - &.cross:before { content: '\2715'; } /* 2715 */ - &.cup:before { content: '\2615'; } /* 2615 */ - &.cw:before { content: '\27f3'; } /* 27f3 */ - &.cycle:before { content: '\1f504'; } /* 1f504 */ - &.database:before { content: '\e754'; } /* e754 */ - &.db-logo:before { content: '\f603'; } /* f603 */ - &.db-shape:before { content: '\f600'; } /* f600 */ - &.direction:before { content: '\27a2'; } /* 27a2 */ - &.doc:before { content: '\e730'; } /* e730 */ - &.docs:before { content: '\e736'; } /* e736 */ - &.dot:before { content: '\e78b'; } /* e78b */ - &.down-1:before { content: '\2b07'; } /* 2b07 */ - &.down-bold:before { content: '\e4b0'; } /* e4b0 */ - &.down-thin:before { content: '\2193'; } /* 2193 */ - &.down:before { content: '\261f'; } /* 261f */ - &.download:before { content: '\1f4e5'; } /* 1f4e5 */ - &.drive:before { content: '\e755'; } /* e755 */ - &.droplet:before { content: '\1f4a7'; } /* 1f4a7 */ - &.erase:before { content: '\232b'; } /* 232b */ - &.export:before { content: '\e715'; } /* e715 */ - &.eye:before { content: '\e70a'; } /* e70a */ - &.fb:before { content: '\23ea'; } /* 23ea */ - &.feather:before { content: '\2712'; } /* 2712 */ - &.ff:before { content: '\23e9'; } /* 23e9 */ - &.flag:before { content: '\2691'; } /* 2691 */ - &.flash:before { content: '\26a1'; } /* 26a1 */ - &.flashlight:before { content: '\1f526'; } /* 1f526 */ - &.flow-branch:before { content: '\e791'; } /* e791 */ - &.flow-cascade:before { content: '\e790'; } /* e790 */ - &.flow-line:before { content: '\e793'; } /* e793 */ - &.flow-parallel:before { content: '\e794'; } /* e794 */ - &.flow-tree:before { content: '\e792'; } /* e792 */ - &.folder:before { content: '\1f4c1 '; } /* 1f4c1 */ - &.forward:before { content: '\27a6'; } /* 27a6 */ - &.gauge:before { content: '\e7a2'; } /* e7a2 */ - &.globe:before { content: '\1f30e'; } /* 1f30e */ - &.graduation-cap:before { content: '\1f393 '; } /* 1f393 */ - &.heart-empty:before { content: '\2661'; } /* 2661 */ - &.heart:before { content: '\2665'; } /* 2665 */ - &.help:before { content: '\2753'; } /* 2753 */ - &.home:before { content: '\2302'; } /* 2302 */ - &.hourglass:before { content: '\23f3'; } /* 23f3 */ - &.inbox:before { content: '\e777'; } /* e777 */ - &.infinity:before { content: '\221e'; } /* 221e */ - &.info:before { content: '\2139'; } /* 2139 */ - &.install:before { content: '\e778'; } /* e778 */ - &.key:before { content: '\1f511'; } /* 1f511 */ - &.keyboard:before { content: '\2328'; } /* 2328 */ - &.landscape-doc:before { content: '\e737'; } /* e737 */ - &.language:before { content: '\e752'; } /* e752 */ - &.layout:before { content: '\268f'; } /* 268f */ - &.leaf:before { content: '\1f342 '; } /* 1f342 */ - &.left-1:before { content: '\2b05'; } /* 2b05 */ - &.left-bold:before { content: '\e4ad'; } /* e4ad */ - &.left-thin:before { content: '\2190'; } /* 2190 */ - &.left:before { content: '\261c'; } /* 261c */ - &.level-down:before { content: '\21b3'; } /* 21b3 */ - &.level-up:before { content: '\21b0'; } /* 21b0 */ - &.lifebuoy:before { content: '\e788'; } /* e788 */ - &.light-bulb:before { content: '\1f4a1'; } /* 1f4a1 */ - &.light-down:before { content: '\1f505'; } /* 1f505' */ - &.light-up:before { content: '\1f506'; } /* 1f506 */ - &.line-graph:before { content: '\1f4c8'; } /* 1f4c8 */ - &.link:before { content: '\1f517'; } /* 1f517 */ - &.list:before { content: '\2630'; } /* 2630 */ - &.location:before { content: '\e724'; } /* e724 */ - &.lock-open:before { content: '\1f513'; } /* 1f513 */ - &.lock:before { content: '\1f512'; } /* 1f512 */ - &.login:before { content: '\e740'; } /* e740 */ - &.logout:before { content: '\e741'; } /* e741 */ - &.loop:before { content: '\1f501'; } /* 1f501 */ - &.magnet:before { content: '\e7a1'; } /* e7a1 */ - &.mail:before { content: '\2709'; } /* 2709 */ - &.map:before { content: '\e727'; } /* e727 */ - &.megaphone:before { content: '\1f4e3'; } /* 1f4e3 */ - &.mic:before { content: '\1f3a4'; } /* 1f3a4 */ - &.minus:before { content: '\2d'; } /* 2d */ - &.mobile:before { content: '\1f4f1'; } /* 1f4f1 */ - &.monitor:before { content: '\1f4bb'; } /* 1f4bb */ - &.moon:before { content: '\263d'; } /* 263d */ - &.mouse:before { content: '\e789'; } /* e789 */ - &.music:before { content: '\1f3b5'; } /* 1f3b5 */ - &.mute:before { content: '\1f507'; } /* 1f507 */ - &.network:before { content: '\e776'; } /* e776 */ - &.new:before { content: '\1f4a5'; } /* 1f4a5 */ - &.newspaper:before { content: '\1f4f0'; } /* 1f4f0 */ - &.note:before { content: '\266a'; } /* 266a */ - &.numbered-list:before { content: '\e005'; } /* e005 */ - &.open-book:before { content: '\1f4d6'; } /* 1f4d6 */ - &.palette:before { content: '\1f3a8'; } /* 1f3a8 */ - &.paper-plane:before { content: '\e79b'; } /* e79b */ - &.paus:before { content: '\2389'; } /* 2389 */ - &.pencil:before { content: '\270e'; } /* 270e */ - &.phone:before { content: '\1f4de'; } /* 1f4de */ - &.picture:before { content: '\1f304'; } /* 1f304 */ - &.pie-chart:before { content: '\e751'; } /* e751 */ - &.play:before { content: '\25b6'; } /* 25b6 */ - &.plus:before { content: '\2b'; } /* 2b */ - &.popup:before { content: '\e74c'; } /* e74c */ - &.print:before { content: '\e716'; } /* e716 */ - &.progress-0:before { content: '\e768'; } /* e768 */ - &.progress-1:before { content: '\e769'; } /* e769 */ - &.progress-2:before { content: '\e76a'; } /* e76a */ - &.progress-3:before { content: '\e76b'; } /* e76b */ - &.publish:before { content: '\e74d'; } /* e74d */ - &.quote:before { content: '\275e'; } /* 275e */ - &.record:before { content: '\26ab'; } /* 26ab */ - &.reply-all:before { content: '\e713'; } /* e713 */ - &.reply:before { content: '\e712'; } /* e712 */ - &.resize-full:before { content: '\e744'; } /* e744 */ - &.resize-small:before { content: '\e746'; } /* e746 */ - &.retweet:before { content: '\e717'; } /* e717 */ - &.right-1:before { content: '\27a1'; } /* 27a1 */ - &.right-bold:before { content: '\e4ae'; } /* e4ae */ - &.right-thin:before { content: '\2192'; } /* 2192 */ - &.right:before { content: '\261e'; } /* 261e */ - &.rocket:before { content: '\1f680'; } /* 1f680 */ - &.rss:before { content: '\e73a'; } /* e73a */ - &.save:before { content: '\1f4be'; } /* 1f4be */ - &.search:before { content: '\1f50d'; } /* 1f50d */ - &.share:before { content: '\e73c'; } /* e73c */ - &.shareable:before { content: '\e73e'; } /* e73e */ - &.shuffle:before { content: '\1f500'; } /* 1f500 */ - &.signal:before { content: '\1f4f6'; } /* 1f4f6 */ - &.sound:before { content: '\1f50a'; } /* 1f50a */ - &.squared-cross:before { content: '\274e'; } /* 274e */ - &.squared-minus:before { content: '\229f'; } /* 229f */ - &.squared-plus:before { content: '\229e'; } /* 229e */ - &.star-empty:before { content: '\2606'; } /* 2606 */ - &.star:before { content: '\2605'; } /* 2605 */ - &.stop:before { content: '\25a0'; } /* 25a0 */ - &.suitcase:before { content: '\e78e'; } /* e78e */ - &.sweden:before { content: '\f601'; } /* f601 */ - &.switch:before { content: '\21c6'; } /* 21c6 */ - &.tag:before { content: '\e70c'; } /* e70c */ - &.text-doc-inverted:before { content: '\e731'; } /* e731 */ - &.text-doc:before { content: '\1f4c4'; } /* 1f4c4 */ - &.thermometer:before { content: '\e757'; } /* e757 */ - &.three-dots:before { content: '\e78d'; } /* e78d */ - &.thumbs-down:before { content: '\1f44e'; } /* 1f44e */ - &.thumbs-up:before { content: '\1f44d'; } /* 1f44d */ - &.thunder-cloud:before { content: '\26c8'; } /* 26c8 */ - &.ticket:before { content: '\1f3ab'; } /* 1f3ab */ - &.to-end:before { content: '\23ed'; } /* 23ed */ - &.to-start:before { content: '\23ee'; } /* 23ee */ - &.tools:before { content: '\2692'; } /* 2692 */ - &.traffic-cone:before { content: '\e7a3'; } /* e7a3 */ - &.trash:before { content: '\e729'; } /* e729 */ - &.triangle-down:before { content: '\25be'; } /* 25be */ - &.triangle-left:before { content: '\25c2'; } /* 25c2 */ - &.triangle-right:before { content: '\25b8'; } /* 25b8 */ - &.triangle-up:before { content: '\25b4'; } /* 25b4 */ - &.trophy:before { content: '\1f3c6'; } /* 1f3c6 */ - &.two-dots:before { content: '\e78c'; } /* e78c */ - &.up-1:before { content: '\2b06'; } /* 2b06 */ - &.up-bold:before { content: '\e4af'; } /* e4af */ - &.up-thin:before { content: '\2191'; } /* 2191 */ - &.up:before { content: '\261d'; } /* 261d */ - &.upload-cloud:before { content: '\e711'; } /* e711 */ - &.upload:before { content: '\1f4e4'; } /* 1f4e4 */ - &.user:before { content: '\1f464'; } /* 1f464 */ - &.users:before { content: '\1f465'; } /* 1f465 */ - &.vcard:before { content: '\e722'; } /* e722 */ - &.video:before { content: '\1f3ac'; } /* 1f3ac */ - &.voicemail:before { content: '\2707'; } /* 2707 */ - &.volume:before { content: '\e742'; } /* e742 */ - &.warning:before { content: '\26a0'; } /* 26a0 */ - &.water:before { content: '\1f4a6'; } /* 1f4a6 */ - - /* social extention map */ - &.behance:before { content: '\f34e'; } /* f34e */ - &.c-dribbble:before { content: '\f31c'; } /* f31c */ - &.c-facebook:before { content: '\f30d'; } /* f30d */ - &.c-flickr:before { content: '\f304'; } /* f304 */ - &.c-google+:before { content: '\f310'; } /* f310 */ - &.c-lastfm:before { content: '\f322'; } /* f322 */ - &.c-linkedin:before { content: '\f319'; } /* f319 */ - &.c-pinterest:before { content: '\f313'; } /* f313 */ - &.c-rdio:before { content: '\f325'; } /* f325 */ - &.c-skype:before { content: '\f33a'; } /* f33a */ - &.c-spotify:before { content: '\f328'; } /* f328 */ - &.c-stumbleupon:before { content: '\f31f'; } /* f31f */ - &.c-tumblr:before { content: '\f316'; } /* f316 */ - &.c-twitter:before { content: '\f30a'; } /* f30a */ - &.c-vimeo:before { content: '\f307'; } /* f307 */ - &.dribbble:before { content: '\f31b'; } /* f31b */ - &.dropbox:before { content: '\f330'; } /* f330 */ - &.evernote:before { content: '\f333'; } /* f333 */ - &.facebook:before { content: '\f30c'; } /* f30c */ - &.flattr:before { content: '\f336'; } /* f336 */ - &.flickr:before { content: '\f303'; } /* f303 */ - &.github:before { content: '\f300'; } /* f300 */ - &.google+:before { content: '\f30f'; } /* f30f */ - &.google-circles:before { content: '\f351'; } /* f351 */ - &.instagram:before { content: '\f32d'; } /* f32d */ - &.lastfm:before { content: '\f321'; } /* f321 */ - &.linkedin:before { content: '\f318'; } /* f318 */ - &.mixi:before { content: '\f34b'; } /* f34b */ - &.paypal:before { content: '\f342'; } /* f342 */ - &.picasa:before { content: '\f345'; } /* f345 */ - &.pinterest:before { content: '\f312'; } /* f312 */ - &.qq:before { content: '\f32a'; } /* f32a */ - &.rdio:before { content: '\f324'; } /* f324 */ - &.renren:before { content: '\f33c'; } /* f33c */ - &.s-facebook:before { content: '\f30e'; } /* f30e */ - &.sina-weibo:before { content: '\f33f'; } /* f33f */ - &.skype:before { content: '\f339'; } /* f339 */ - &.smashing:before { content: '\f357'; } /* f357 */ - &.social-c-github:before { content: '\f301'; } /* f301 */ - &.soundcloud:before { content: '\f348'; } /* f348 */ - &.spotify:before { content: '\f327'; } /* f327 */ - &.stumbleupon:before { content: '\f31e'; } /* f31e */ - &.tumblr:before { content: '\f315'; } /* f315 */ - &.twitter:before { content: '\f309'; } /* f309 */ - &.vimeo:before { content: '\f306'; } /* f306 */ - &.vk:before { content: '\f354'; } /* f354 */ -} diff --git a/app/assets/stylesheets/error_pages.scss b/app/assets/stylesheets/error_pages.scss index 59ac55d58..a15f9fa0c 100644 --- a/app/assets/stylesheets/error_pages.scss +++ b/app/assets/stylesheets/error_pages.scss @@ -1,48 +1,34 @@ -@import 'colors'; +@import 'color-variables'; @import 'mixins'; html { min-height: 100%; } -#big-number { - font-family: Roboto-BoldCondensed, Helvetica, Arial, sans-serif; - font-size: 250px; - line-height: 1em; - text-align: center; - padding-top: 100px; - text-shadow: 0 2px 0 #fff, 0 -1px 0 #999; - color: #ddd; -} -.transparent { - opacity: 0.8; -} -#content { - font-family: Roboto, Helvetica, Arial, sans-serif; - text-align: center; - text-shadow: 0 1px 0 #fff; - font-size: 1.25em; - line-height: 1.5em; - color: $text-dark-grey; - position: absolute; - left: 0; right: 0; -} - -#error_404 { - width: 100%; - height: 100%; - bottom:0px; - margin: 0px; - font-family: Roboto, Helvetica, Arial, sans-serif; - text-align: center; - text-shadow: 0 1px 0 #fff; - color: #666; - background: image-url("peeping-tom.png") no-repeat bottom; +.error-404 { + background: image-url('peeping-tom.png') no-repeat bottom; background-attachment: fixed; +} - #big-number { - font-family: Roboto-BoldCondensed, Helvetica, Arial, sans-serif; +.error-404, +.error-422, +.error-500, +.error-not-public { + background-color: $background-grey; + bottom:0px; + color: $text-dark-grey; + font-family: Helvetica, Arial, sans-serif; + height: 100%; + margin: 0px; + text-align: center; + text-shadow: 0 1px 0 #fff; + width: 100%; + + .big-number { + color: $text-grey; + font-family: Helvetica, Arial, sans-serif; font-size: 250px; + line-height: 1em; + padding-top: 50px; text-shadow: 0 2px 0 #fff, 0 -1px 0 #999; - color: #ddd; } a { @@ -55,55 +41,7 @@ html { min-height: 100%; } } .transparent { - filter: alpha(opacity=80); - opacity: 0.8; - } -} - -#error_422 { - background-color: #fff; - color: #666; - text-align: center; - font-family: arial, sans-serif; - - div.dialog { - width: 25em; - padding: 0 4em; - margin: 4em auto 0 auto; - border: 1px solid #ccc; - border-right-color: #999; - border-bottom-color: #999; - } - - h1 { - font-size: 100%; - color: #f00; - line-height: 1.5em; - } -} - -#error_500 { - text-align: center; - background-color: rgb(252,252,252); - color: #444; - font-family: 'helvetica neue', 'helvetica', 'arial', sans-serif; - margin: 0; - padding: 1em; - - header { - height: 100px; - background-color: #333; - position:relative; - } - - #diaspora_logo { - position: relative; - margin-top: 50px; - } - - h1 { - font-size: 100%; - color: #444; - line-height: 1.5em; + filter: alpha(opacity = 60); + opacity: .6; } } diff --git a/app/assets/stylesheets/facebox.scss b/app/assets/stylesheets/facebox.scss deleted file mode 100644 index 18b07f2a3..000000000 --- a/app/assets/stylesheets/facebox.scss +++ /dev/null @@ -1,32 +0,0 @@ -.facebox_content { display: none; } - -#facebox { - input[type='text'], input.text { width: 98%; } -} - -#facebox_header { - position: relative; - padding-bottom: 10px; - - .right { - z-index: 3; - right: 1em; - top: 14px; - color: #ccc; - - img { - vertical-align: top; - position: relative; - top: 0px; - } - } - - h3, h4 { - .description { margin-top: 0px; } - } - - .tiny_text { - font-size: 11px; - font-weight: normal; - } -} diff --git a/app/assets/stylesheets/footer.scss b/app/assets/stylesheets/footer.scss index 2fc0168a5..ad1c398a2 100644 --- a/app/assets/stylesheets/footer.scss +++ b/app/assets/stylesheets/footer.scss @@ -1,28 +1,29 @@ -footer { - width: 100%; - left: 0; +html { + min-height: 100%; + position: relative; +} + +body { margin-bottom: 150px; } + +footer.footer { + background-color: $background-grey; + border-top: 1px solid $border-grey; bottom: 0; - color: $text-grey; + max-height: 130px; + padding-top: 15px; + padding-bottom: 15px; + position: absolute; + width: 100%; - .container { - width: 95%; - margin: 4em auto 0 auto; - padding: 0.5em 0 1em 0; - border-top: 1px solid $border-grey; - } - - .logos-powered_by_diaspora { - display: inline-block; - margin-top: 3px; - height: 11px; - width: 145px; + .powered-by-diaspora { + color: $link-grey; + font-weight: bold; } ul#footer_nav { margin: 0; padding: 0; display: inline-block; - float: right; > li { display: inline; diff --git a/app/assets/stylesheets/forms.scss b/app/assets/stylesheets/forms.scss new file mode 100644 index 000000000..98a02a623 --- /dev/null +++ b/app/assets/stylesheets/forms.scss @@ -0,0 +1,100 @@ +// We need these to reset Bootstrap styles +// scss-lint:disable QualifyingElement +input, +input[type=email], +input[type=text], +input[type=password], +textarea { + &, + &:active, + &:invalid, + &:invalid:required, + &:focus, + &:active:focus, + &:invalid:focus, + &:invalid:required:focus { + border-color: $border-grey; + box-shadow: none; + color: $text-dark-grey; + } +} +// scss-lint:enable QualifyingElement + +textarea { + resize: vertical; +} + +// Forms described here are only used on the public pages at the moment +.block-form { + margin: 20px auto; + + fieldset { + background-color: $white; + margin-bottom: 1em; + position: relative; // To correctly place the entypo icon + + input { + border-bottom-width: 0; + border-radius: 0; + color: $text-dark-grey; + margin: 0; + } + + .form-control { + font-size: 16px; + height: 40px; + padding: 10px; + padding-left: 40px; + } + + .form-control:first-of-type, + .form-control:first-of-type:focus, + .form-control:first-of-type:invalid, + .form-control:first-of-type:invalid:focus, + .form-control:first-of-type:invalid:required, + .form-control:first-of-type:invalid:required:focus { + border-top-left-radius: 5px; + border-top-right-radius: 5px; + } + + .form-control:last-of-type, + .form-control:last-of-type:focus, + .form-control:last-of-type:invalid, + .form-control:last-of-type:invalid:focus, + .form-control:last-of-type:invalid:required, + .form-control:last-of-type:invalid:required:focus { + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + border-bottom-width: 1px; + } + + [class^="entypo-"], + [class*="entypo-"] { + color: $text-grey; + font-size: 20px; + left: 10px; + line-height: 20px; + position: absolute; + text-align: center; + top: 10px; + width: 20px; + } + + [class^="entypo-"]:nth-of-type(2), + [class*="entypo-"]:nth-of-type(2) { + top: 50px; + } + + [class^="entypo-"]:nth-of-type(3), + [class*="entypo-"]:nth-of-type(3) { + top: 90px; + } + + [class^="entypo-"]:nth-of-type(4), + [class*="entypo-"]:nth-of-type(4) { + top: 130px; + } + + ::placeholder { text-transform: uppercase; } + } +} diff --git a/app/assets/stylesheets/gallery.scss b/app/assets/stylesheets/gallery.scss new file mode 100644 index 000000000..3cfcb2d2b --- /dev/null +++ b/app/assets/stylesheets/gallery.scss @@ -0,0 +1,61 @@ +$thumbnail-size: 12px; +$thumbnail-margin: 2px; +$thumbnail-active-size: $thumbnail-size + $thumbnail-margin; + +#blueimp-gallery { + .slides { + height: calc(100% - 40px); + padding: 20px 0 0 0; + margin: 0; + } + + [class^="entypo-"], [class*="entypo-"] { + color: $text-grey; + display: block; + width: 40px; + height: 40px; + line-height: 40px; + margin: 0; + padding: 0; + } + + .play-pause { + z-index: 2; + color: $text-grey; + } + + .prev, .next { + border-color: $text-grey; + } + + .prev [class^="entypo-"], .prev [class*="entypo-"] { + padding-right: 6px; + } + + .next [class^="entypo-"], .next [class*="entypo-"] { + padding-left: 6px; + } + + .indicator { + margin: 8px 0; + position: unset; + height: $thumbnail-size + 5px; + li { + border: none; + margin: $thumbnail-margin; + vertical-align: middle; + width: $thumbnail-size; + height: $thumbnail-size; + border-radius: $thumbnail-size / 2; + + &.active, &:hover{ + margin: $thumbnail-margin / 2; + width: $thumbnail-active-size; + height: $thumbnail-active-size; + border-radius: $thumbnail-active-size / 2; + transition: linear 0.2s; + transition-property: height, width, margin; + } + } + } +} diff --git a/app/assets/stylesheets/getting-started.scss b/app/assets/stylesheets/getting-started.scss index 57b4d0a6f..12c4931a1 100644 --- a/app/assets/stylesheets/getting-started.scss +++ b/app/assets/stylesheets/getting-started.scss @@ -1,7 +1,11 @@ #hello-there { - .avatar { - width: 50px; - height: 50px; + #profile_photo_upload .avatar { + max-height: 200px; + max-width: 200px; + } + + .well .avatar { + min-width: 50px; } .well .media{ @@ -9,11 +13,7 @@ } .awesome { - text-align: center; - - .btn.creation { - text-shadow: none; - } + margin-top: 15px; } .hero-unit { @@ -25,16 +25,12 @@ margin-top: 80px; } - p, form { - margin-left: 30px; - } - ul.as-selections { width: 100%; - li.as-original { + width: 100%; input { - margin-bottom: 15px; + height: 32px; } } } @@ -52,10 +48,8 @@ #welcome-to-diaspora { background: orange; box-shadow: inset 0 -2px 10px rgba(0,0,0,0.35); - margin-bottom: 20px; - margin-top: -40px; padding-bottom: 30px; - padding-top: 60px; + padding-top: 20px; h1,h3 { color: $white; diff --git a/app/assets/stylesheets/header.scss b/app/assets/stylesheets/header.scss index 7e4757ae8..9cb3a533d 100644 --- a/app/assets/stylesheets/header.scss +++ b/app/assets/stylesheets/header.scss @@ -1,429 +1,148 @@ -.timeago { - color: $text-grey; +.navbar.navbar-fixed-top { border-bottom: none; -} + box-shadow: 1px 0 2px $black; + a:focus {outline: 0 none; } -body > header { - box-shadow: 0 1px 3px rgba(0,0,0,0.9); - background: image-url('header-bg.png') rgb(40,35,35); - z-index: 1001; - padding: 6px 0; - color: #CCC; - height: 26px; - position: fixed; - width: 100%; - min-width: 620px; - top: 0; - left: 0; - border-bottom: 1px solid #000; - - > div > div.container { - height: 26px; - } - - .diaspora_header_logo { - float: left; - margin-top: -6px; - height: 38px; - width: 65px; - } - - .ie-user-menu-active { height: 150px; } - - a.header_root_link { - display: inline-block; - margin-top: 5px; - } - - a { - color: #CCC; - color: rgb(147,147,147); - - &:hover, &:focus { - background: none; - color: $highlight-white; - } - &:focus { - outline: thin dotted $border-dark-grey; - text-decoration: none; - } - } - - &.landing { - height: 40px; - .right { top: 10px; } - } - - #nav_badges { - display: inline-block; - margin-top: 2px; - float: left; - width: 61px; - - a:hover { text-decoration: none; } - - .badge { - width: 22px; - position: relative; - top: 2px; - display: inline; - margin: 0 2px; - font-weight: bold; - font-size: smaller; - - .badge_count { - border-radius: 2px; - z-index: 3; - position: absolute; - top: -4px; - left: 15px; - padding: 1px 2px; - background-color: $red; - line-height: 12px; - color: #fff; - } - - &:hover .badge_count { background-color: lighten($red, 5%); } - - .icons-notifications_grey { height: 16px; } - - &.active .icons-notifications_grey:hover { - background-position: sprite-position($icons-sprites, notifications_grey); - } - - .icons-mail_grey { height: 11px } - - a.badge_link { - display: block; - width: 100%; - height: 16px; - float: left; - } - } - - #notification_badge, #conversations_badge { - float: left; - padding: 0px 3px; - } - - #conversations_badge { - padding-top: 3px; - margin-right: 0px; - padding-right: 0px; - } - - #notification_badge.active { - z-index: 10; - background-color: #fff; - border: 1px solid $border-dark-grey; - border-bottom: 0px; - margin-left: 0px; - padding-bottom: 12px; - } - - #notification_dropdown { - background: white; - border: solid $border-dark-grey 1px; - box-shadow: 0 0px 13px rgba(20,20,20,0.5); - left: 300px; - width: 380px; - display: none; - float: left; - color: $grey; - - a { color: $blue; } - a.disabled { - color: $link-disabled-grey; - cursor: default; - } - - .header { - border-bottom: 1px solid $border-grey; - padding: 5px 10px 5px 5px; - - h4 { - padding-bottom: 0; - margin-bottom: 0; - font-size: 16px; - color: $black; - } - - a { - font-size: 11px; - font-weight: bold; - } - } - - .ajax_loader { - border-bottom: 1px solid $border-grey; - text-align: center; - padding: 15px; - } - .notifications{ - overflow: hidden; - position: relative; - max-height: 325px; - - .media.stream_element { - border-bottom: 1px solid $border-grey; - padding: 5px; - min-height: 35px; - line-height: 18px; - margin: 0; - - img.avatar { - width: 35px; - height: 35px; - } - - .pull-right > .aspect_membership_dropdown { display: none; } - .unread-toggle { margin: 10px; } - - .entypo { - cursor: pointer; - color: lighten($black,75%); - font-size: 17px; - line-height: 17px; - } - .tooltip { - position: fixed; - } - - &.unread { - background-color: $background-grey; - color: $black; - .unread-toggle { - .entypo { color: $black; } - } - } - - } - } - - .view_all { - background-color: $blue; - border-bottom: 1px solid $border-dark-grey; - text-align: center; - a { - display: block; - padding: 5px; - color: white; - font-size: 12px; - font-weight: bold; - } - } - } - } - - #global_search { - float: right; - margin-right: 10px; - position: relative; - - form { - position: absolute; - right: 0; - - input { - box-shadow: 0 1px 1px #444; - border-radius: 15px; - @include transition(width); - width: 100px; - background-color: #444; - border: 1px solid #222; - font-size: 13px; - padding: 4px; - margin-top: 1px; - - &:hover { background-color: #555; } - - &.active { - background-color: $highlight-white; - background-color: rgba(160,160,160,0.6); - } - - &:focus { - outline: none; - background-color: white; - width: 200px; - } - - &::input-placeholder { text-shadow: none; } - &::placeholder { text-shadow: none; } - &.ac_loading::-webkit-search-cancel-button { -webkit-appearance: none; } - } - } - } - - ul#user_menu { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - text-shadow: 0 1px 0 #000; - color: rgb(147,147,147); - min-width: 100px; - cursor: pointer; - z-index: 10; - display: inline; - visibility: hidden; - top: -4px; - float: right; - margin: -2px -3px 0px 0px; - padding: 0; - - > li { - display: block; - border-left: 1px solid #333; - border-right: 1px solid #333; - - &:first-child { - visibility: visible; - } - - &:last-child { - border-bottom: 1px solid #333; - } - } - - &.active { - box-shadow: 0 0px 13px rgba(20,20,20,0.5); - background-color: rgb(34,30,30); - visibility: visible; - - > li { - border-color: $border-dark-grey; - } - } - } - - .user-menu-item a { - padding: 4px 8px 4px 40px; - height: 100%; - color: $text-grey; - - &:hover { - background-color: $blue; - color: $highlight-white; - text-decoration: none; - } - } - - .user-menu-trigger { - padding: 10px 25px 10px 40px; - - &:hover { - color: $highlight-white; - .user-name { color: $highlight-white; } - } - } - - .user-name { - - &:hover { - background-color: transparent; - text-decoration: none; - } - - &:focus { outline: none; } - } - - .user-menu-more-indicator { - position: absolute; - right: 5px; - } - - .user-menu-avatar { - height: 25px; - width: 25px; - position: absolute; - left: 8px; - top: 8px; - display: block; - } - - .header-nav { + .navbar-brand { font-weight: bold; - float: left; - height: 100%; - margin-right: 5px; - margin-top: 2px; + font-size: $font-size-h3; + } - a { - padding: 0 10px; - width: 100%; - &:hover { text-decoration: none; } + @media (max-width: $grid-float-breakpoint-max) { + .navbar-header > .nav li { display: inline-block !important; } + .nav-badge { + color: $navbar-inverse-link-color; + padding-left: 12px; + padding-right: 12px; + &:hover { color: $navbar-inverse-link-hover-color; } + &:hover, + &:focus { + background-color: transparent; + } } - - > span { - height: 100%; - display: inline-block; - margin-left: -4px; - border-left: 1px solid #333; - border-right: 1px solid #333; - - &:last-child { - margin-left: -5px; + #navbar-collapse { + .form-group, .twitter-typeahead { + display: block !important; + margin-bottom: 0; + &, & input { width: 100% } } } } - - /* When the user is not connected */ - ul#landing_nav { - position: absolute; - top: 4px; - right: 0; - margin: 0; - padding: 0; - - > li { - text-shadow: 0 1px 0 #000; - display: inline; - margin-right: 0.5em; - - a { - color: $blue; - - &.login { - border-radius: 5px; - box-shadow: 0 1px 1px #666; - padding: 5px 8px; - background-color: #000; - border-top: 1px solid #000; - - &:hover { background-color: #222; } + @media (min-width: $grid-float-breakpoint) { + input[type="search"] { + @include transition(width); + margin-top: 2px; + width: 200px; + &:not(.active) { + background-color: $navbar-inverse-bg; + border-color: $gray-light; + width: 150px; + } + } + #user_menu { + &.open .dropdown-toggle { background-color: darken($navbar-inverse-bg, 7%); } + .dropdown-toggle { + margin: 0 1px; + min-width: 160px; + } + .dropdown-menu { + background-color: darken($navbar-inverse-bg, 7%); + border-top: none; + width: 100%; + & > li > a { + color: $gray-light; + padding-left: 55px; + &:hover { + background-color: $link-color; + color: $gray-lighter; + } } - } - - &:last-child { margin-right: 0; } - } - } -} - - -/* - * Extract here from application.sass because - * needed for the header in the bootstrap part - */ -ul.dropdown { - padding: 0px; - - li { - display: none; - - a { display: block; } - - &:first-child { - display: block; - - a { - height: auto; - display: inline; } } } - &.active { - z-index: 30; - li { display: block; } + .navbar-nav:not(.nav-badges) > li > a { font-weight: bold; } + .nav-badges { + li { height: $navbar-height; } + .dropdown-open { + background-color: $dropdown-bg; + & > a { color: $dropdown-link-color; } + .dropdown-menu { display: block; } + } + .dropdown-menu { + border-top: none; + margin-left: -1px; + padding: 0px; + width: 400px; + .avatar { + width: 35px; + height: 35px; + } + .header { + padding: 10px; + border-bottom: 1px solid $border-grey; + h4 { margin: 5px 0; } + } + .notifications { + position: relative; + max-height: 350px; + } + .stream_element.media { + padding: 5px; + .tooltip { position: fixed; } + .unread-toggle { + margin-right: 10px; + opacity: 1; + } + & > .pull-right > .aspect_membership_dropdown { display: none; } + } + .ajax-loader { + border-bottom: 1px solid $border-grey; + padding: 10px; + .spinner { + height: 30px; + width: 30px; + } + } + .view_all { + background-color: $link-color; + border-top: 3px solid $white; + text-align: center; + a { + color: $white; + display: block; + font-weight: bold; + padding: 5px; + &:hover { text-decoration: none; } + } + } + } + } + [class^="entypo-"], [class*="entypo-"] { + color: inherit; + font-size: $font-size-h3; + vertical-align: middle; + } + .nav-badge { + margin-bottom: -2px; + .badge { + position: absolute; + right: 10px; + top: 10px; + } + } + + #user_menu { + .avatar { + height: 30px; + width: 30px; + } + .user-avatar { + height: $navbar-height; + padding: ($navbar-height - 30px)/2 0; + margin-bottom: -$navbar-padding-vertical; + margin-top: -$navbar-padding-vertical; + margin-right: 10px; + } } } diff --git a/app/assets/stylesheets/help.scss b/app/assets/stylesheets/help.scss index 56fde842e..d5a864770 100644 --- a/app/assets/stylesheets/help.scss +++ b/app/assets/stylesheets/help.scss @@ -97,10 +97,10 @@ ul#help_nav { font-size: 50px; line-height: 70px; - i.entypo{ + [class^="entypo-"], [class*="entypo-"] { color: #bfbfbf; - &.chat{ color: #000000; } + &.entypo-chat{ color: #000000; } } } } diff --git a/app/assets/stylesheets/home.scss b/app/assets/stylesheets/home.scss index acb3e9195..b661e4b4f 100644 --- a/app/assets/stylesheets/home.scss +++ b/app/assets/stylesheets/home.scss @@ -1,84 +1,56 @@ -body { - margin-top: 50px; - background-color: white; - background-image : none; -} - -li { - list-style: none; -} - -footer h3 { - margin-bottom: 25px; - text-align: center; -} - -footer { - margin-bottom: 12px; - padding: 42px; - border-top: 1px solid #ccc; - border-bottom: 1px solid #ccc; - width: auto -} - -#header { - /* Hack to hide the header */ - box-shadow:none; - border:none; - background:none; - - left: 0px; - padding: 15px 0px; -} - -#header img { - margin-left: 15px; -} - -#login-link { - float: right; - margin-right: 15px; -} - -#steps { - text-align: center; -} - -#banner { - border-bottom : 1px solid #ccc; - border-top : 1px solid #eee; - padding : 30px; - margin-top: 20px; - text-align: center; - - box-shadow : 0 9px 15px -10px rgba(0,0,0,0.7); -} - -#links { - margin: 0; - padding: 0; - text-align: center; -} - -#links .section { - margin: 0; - padding: 0; - display: inline-block; - vertical-align: top; - width: 24%; - max-width: 24%; -} - -#change-page { - color: #999; - text-align: center; - font-style: italic; -} - -.helpful { - cursor: help; -} - -.row { - margin-bottom: 60px; +.page-home { + background-color: $main-background; + + h3 { + border-bottom: 1px dashed $border-grey; + font-weight: bold; + margin: 0 0 15px; + padding-bottom: 15px; + } + + .container-fluid.home-user { + padding-bottom: 75px; + padding-top: 75px; + } + + .dandelion-background { + background: image-url('dandelion.jpg'); + background-position: center; + background-repeat: no-repeat; + background-size: cover; + } + + .jumbotron { + background-color: rgba($black, .4); + margin-bottom: 0; + + h1, + h2 { + color: $white; + font-weight: bold; + text-shadow: 0 2px 2px $black; + } + } + + .landing-info-card { + background-color: $white; + border: 1px solid $light-grey; + box-shadow: $card-shadow; + margin-bottom: 25px; + margin-top: 25px; + min-height: 150px; + padding: 15px; + } + + .login-form { + fieldset { background: none; } + + .block-form { + background-color: rgba($white, .25); + border-radius: 5px; + margin: 0; + max-width: 400px; + padding: 1em; + } + } } diff --git a/app/assets/stylesheets/hovercard.scss b/app/assets/stylesheets/hovercard.scss index eb5ae9518..1cf9ae620 100644 --- a/app/assets/stylesheets/hovercard.scss +++ b/app/assets/stylesheets/hovercard.scss @@ -8,7 +8,6 @@ max-width: 400px; background-color: $background-white; - height: 70px; border: 1px solid $border-dark-grey; font-size: small; @@ -27,11 +26,14 @@ $image_width: 80px; /* including margin */ - & > h4, & > div { + > h4, + > div:not(.card-footer) { margin-left: $image_width; } - & > h4, & > div, .hashtags { + > h4, + > div, + .hashtags { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; @@ -65,32 +67,6 @@ } .btn-group.aspect_membership_dropdown { margin: 0 !important; } - - .hovercard_footer { - position: absolute; - bottom: 0; - left: 0; - background-color: $background-grey; - margin-left: 0; - - width: 100%; - min-height: 19px; - - font-size: 10px; - line-height: 18px; - - border-top: 1px solid #cccccc; - - .footer_container { - padding: 1px 5px; - - a { - color: $text-grey; - margin-right: 4px; - font-weight: normal; - } - } - } } #hovercard_container { diff --git a/app/assets/stylesheets/icons.scss b/app/assets/stylesheets/icons.scss new file mode 100644 index 000000000..b4496bbd3 --- /dev/null +++ b/app/assets/stylesheets/icons.scss @@ -0,0 +1,13 @@ +[class^="entypo-"], [class*="entypo-"] { + font-style: normal; + color: black; + + &.red { color: #A40802; } + &.white { color: white; } + &.gray { color: #aaa; } + &.blue { color: #3f8fba; } + + &.small { font-size: 1em; } + &.middle { font-size: 1.5em; } + &.large { font-size: 2.5em; } +} diff --git a/app/assets/stylesheets/interactions.scss b/app/assets/stylesheets/interactions.scss new file mode 100644 index 000000000..90c5d0063 --- /dev/null +++ b/app/assets/stylesheets/interactions.scss @@ -0,0 +1,65 @@ +.control-icons { + a { + &:hover { text-decoration: none; } + + [class^="entypo-"], + [class*="entypo-"] { + color: $text-grey; + font-size: $font-size-base; + line-height: $line-height-base; + vertical-align: middle; + } + + [class^="entypo-"]:hover, + [class*="entypo-"]:hover { + color: $text; + } + + &.hide_conversation i { font-size: $line-height-computed * 1.5; } + &.delete_conversation i { font-size: $font-size-base * 1.5; } + &.destroy_participation i { color: $black; } + &.destroy_participation i:hover { color: $text-dark-grey; } + } +} + +.stream_container, +.single-post-interactions { + .control-icons { + float: right; + z-index: 6; + + .block_user, + .comment_report, + .create_participation, + .delete, + .destroy_participation, + .post_report { + display: inline-block; + } + + > a:hover { text-decoration: none; } + } +} + +.stream_element, +.comment, +.photo, +.stream_element:hover .comment { + .control-icons { + @include transition(opacity); + opacity: 0; + } + + &:hover .control-icons { opacity: 1; } +} + +.stream_element, +.comment, +.photo { + .control-icons > a { + @include transition(opacity); + opacity: .8; + } + + .control-icons > a:hover { opacity: 1; } +} diff --git a/app/assets/stylesheets/invitations.scss b/app/assets/stylesheets/invitations.scss index 366b0caf4..a78bed09f 100644 --- a/app/assets/stylesheets/invitations.scss +++ b/app/assets/stylesheets/invitations.scss @@ -8,13 +8,12 @@ #invitationsModal { .modal-header, .modal-body { color: $text; - font-size: $font-size-text; + font-size: $font-size-base; text-align: initial; } #paste_link { font-weight: 700; } #invite_code { margin-top: 10px; } #codes_left { color: $text-grey; } - .control-label { width: 120px; } .controls { margin-left: 140px; } #email_invitation { padding-top: 10px; diff --git a/app/assets/stylesheets/leftnavbar.scss b/app/assets/stylesheets/leftnavbar.scss deleted file mode 100644 index 6bee6e8d6..000000000 --- a/app/assets/stylesheets/leftnavbar.scss +++ /dev/null @@ -1,127 +0,0 @@ -#leftNavBar { - a { - color: $link-grey; - font-weight: bold; - text-decoration: none; - } - - ul { - margin: 0px; - padding: 0px; - list-style: none; - } - - .selected { color: $black; } - .selected a { color: $black; } - - .hoverable { - display: block; - margin-right: 6px; - padding: 4px; - &:hover { background-color: $background-blue; } - } - - .selectable { - display: block; - margin-left: 21px; - overflow: hidden; - text-overflow: ellipsis; - } - - #home_user_badge { - border-bottom: 1px dashed $border-grey; - margin-bottom: 10px; - min-height: 50px; - padding-bottom: 10px; - padding-left: 4px; - - .avatar { - float: left; - height: 50px; - width: 50px; - } - - h4 { - margin-left: 60px; - padding-top: 15px; - overflow: hidden; - text-overflow: ellipsis; - - a { color: $black; } - } - } - - #stream_selection { - & > li { - margin-bottom: 5px; - } - } - - #aspects_list, #tags_list { - .hoverable > .action { - visibility: hidden; - margin: 0 3px; - } - .hoverable:hover > .action { - visibility: visible; - } - } - - #aspects_list { - .entypo.check { - float: left; - visibility: hidden; - &.selected { visibility: visible; } - } - .selected + a { - color: #333333; - } - } - - #tags_list { - .delete_tag_following { - font-size: 20px; - line-height: 15px; - } - - #new_tag_following { - margin-left: 20px; - margin-top: 5px; - } - - /* ---- override app/stylesheets/vendor/autoSuggest.css ---- */ - ul.as-selections { padding: 1px 5px 4px 5px; } - .tag_input { - line-height: $font-size-text; - vertical-align: top; - width: 100%; - } - - .as-result { - margin-top: -1px; - margin-left: 1px; - } - - .as-list { - em { - background-color: #aabbcc; - color: black; - padding: 0px; - } - - color: black; - position: static; /* override absolute */ - margin: 0px; - border-radius: 0px 0px 3px 3px; - box-shadow: 0px 1px 1px #666; - } - - .as-result-item.active { - color: black; - text-shadow: none; - background-color: $background-blue; - border-color: $background-blue; - } - /* ---- end override app/stylesheets/vendor/autoSuggest.css ---- */ - } -} diff --git a/app/assets/stylesheets/lightbox.scss b/app/assets/stylesheets/lightbox.scss deleted file mode 100644 index 872126eb0..000000000 --- a/app/assets/stylesheets/lightbox.scss +++ /dev/null @@ -1,147 +0,0 @@ -#lightbox{ - z-index: 1003; - position: fixed; - top: 0; - right: 0; - display: none; - overflow-y: auto; - width: 100%; - text-align: center; - padding-top: 80px; - padding-bottom: 20px; - - color: $text-dark-grey; - text-shadow: none; - font-size: 12px; - - &.show{ - position: absolute; - display: block; - } - - #lightbox-image{ - box-shadow: 0 10px 20px black; - top: 0; - display: block; - margin-bottom: 120px; - background: white; - } - - #lightbox-content{ - text-align: left; - display: inline-block; - } - - #lightbox-links{ - margin-top: 12px; - - .attribution{ - float: right; - } - - #lightbox-attribution-link{ - color: #999; - font-weight: bold; - &:hover{ - color: #eee; - } - } - } - - #lightbox-close-link, - #lightbox-attribution-link, - #lightbox-short-link{ - display: inline-block; - color: #333; - text-decoration: none; - line-height: 14px; - - &:hover{ - color: #eee; - } - } - - #lightbox-close-link{ - color: $text-dark-grey; - margin-bottom: 12px; - } -} - -#lightbox-backdrop{ - box-shadow:inset 0 0 50px #000000; - - z-index: 1002; - position: fixed; - height: 100%; - width: 100%; - top: 0; - left: 0; - background-color: rgba(0,0,0,0.9); - display: none; -} - -#lightbox-navigation{ - z-index: 1004; - position: fixed; - width: 100%; - left: 0; - bottom: 0; - text-align: center; - background-color: rgba(0,0,0,0.4); - padding: 5px 0; - white-space: nowrap; - overflow: hidden; -} - -#lightbox-scrollleft, #lightbox-scrollright{ - z-index: 1005; - color: #fff; - background-color: #0f0f0f; - display: inline-block; - height: 70px; - width: 30px; - position: fixed; - cursor: pointer; - font-size: 3em; -} - -#lightbox-scrollleft{ - left: 0px; -} - -#lightbox-scrollright{ - right: 0px; -} - -#lightbox-imageset{ - display: inline-block; - vertical-align: bottom; - padding-left: 50px; - padding-right: 50px; - - img{ - transition: opacity 0.2s; - opacity: 0.2; - height: 70px; - width: 70px; - margin-right: 5px; - cursor: pointer; - background-color: white; - - &:last-child{ - margin-right: 0; - } - - &.selected{ - opacity: 1; - } - } -} - -body.lightboxed{ - overflow: hidden; - #lightbox-backdrop{ - display: block; - } -} - diff --git a/app/assets/stylesheets/new_styles/_login.scss b/app/assets/stylesheets/login.scss similarity index 60% rename from app/assets/stylesheets/new_styles/_login.scss rename to app/assets/stylesheets/login.scss index d0da96428..b0336a8e0 100644 --- a/app/assets/stylesheets/new_styles/_login.scss +++ b/app/assets/stylesheets/login.scss @@ -1,16 +1,16 @@ -#login, -#forgot_password, -#reset_password { +.page-sessions.action-new, +.page-passwords.action-new, +.page-passwords.action-edit { padding-top: 25px; .logos-asterisk { - margin: auto; - width: 154px; height: 154px; + margin: auto; margin-bottom: 12px; + width: 154px; } - form.block-form { + .block-form { max-width: 400px; } } diff --git a/app/assets/stylesheets/map.scss b/app/assets/stylesheets/map.scss new file mode 100644 index 000000000..c521795bf --- /dev/null +++ b/app/assets/stylesheets/map.scss @@ -0,0 +1,21 @@ +.mapContainer { + position: relative; + overflow: hidden; +} + +.stream_element .near-from:hover { + cursor: pointer; + text-decoration: underline; +} + +.leaflet-control-zoom { + display: none; +} + +.leaflet-bottom .leaflet-control { + margin-bottom: 0; +} + +.leaflet-right .leaflet-control { + margin-right: 0; +} diff --git a/app/assets/stylesheets/markdown-content.scss b/app/assets/stylesheets/markdown-content.scss index 9caacef44..316907fb1 100644 --- a/app/assets/stylesheets/markdown-content.scss +++ b/app/assets/stylesheets/markdown-content.scss @@ -14,4 +14,8 @@ margin-top: 0; } } + + .img-responsive { + display: inline; + } } diff --git a/app/assets/stylesheets/markdown-editor.scss b/app/assets/stylesheets/markdown-editor.scss new file mode 100644 index 000000000..cb731118b --- /dev/null +++ b/app/assets/stylesheets/markdown-editor.scss @@ -0,0 +1,141 @@ +.md-footer, +.md-header { + background: $sidebars-background; + border: 0; + display: block; + height: 42px; + margin: 0; + padding: 6px 6px 0; + + [class^="entypo-"], + [class*="entypo-"], + .glyphicon { + color: $black; + } +} + +.md-header, +.nav-tabs { + border-bottom: 0; + margin: 0; + z-index: 1; +} + +.md-header.btn-toolbar { + background-color: $background-grey; + overflow: hidden; + + .btn-group { + margin-bottom: 8px; + + [class^="entypo-"], + [class*="entypo-"] { + font-size: 13px; + } + + [data-handler="bootstrap-markdown-cmdUrl"], + [data-handler="bootstrap-markdown-cmdImage"], + [data-handler="bootstrap-markdown-cmdList"], + [data-handler="bootstrap-markdown-cmdListO"], + [data-handler="bootstrap-markdown-cmdCode"], + [data-handler="bootstrap-markdown-cmdQuote"] { + height: 28.5px; + line-height: 1.25; + } + } + + @media(max-width: $screen-xs) { + [data-handler="bootstrap-markdown-cmdList"], + [data-handler="bootstrap-markdown-cmdListO"] { + display: none; + } + + [data-handler="bootstrap-markdown-cmdCode"] { + // !important is needed to override BS' specific rules + // scss-lint:disable ImportantRule + border-bottom-left-radius: $border-radius-small !important; + border-top-left-radius: $border-radius-small !important; + // scss-lint:enable ImportantRule + } + } +} + +.md-cancel { + box-sizing: content-box; + + &, + .entypo-cross { + color: $text-grey; + font-size: 18px; + height: 18px; + line-height: 18px; + width: 18px; + } + + &:hover .entypo-cross { color: $text; } +} + + +.md-preview { + background: $white; + color: $text-color; + // !important is needed to override the CSS rules dynamically added to the element + // scss-lint:disable ImportantRule + height: auto !important; + // scss-lint:enable ImportantRule + min-height: 90px; + overflow: auto; + position: relative; + // !important is needed to override the CSS rules dynamically added to the element + // scss-lint:disable ImportantRule + width: 100% !important; + // scss-lint:enable ImportantRule + z-index: 10; +} + +.md-controls { + float: right; + padding: 3px; + + .md-control { + color: $text-grey; + padding: 3px; + padding-left: 10px; + right: 5px; + } +} + + +.write-preview-tabs { + &, + & .full-height { + height: 36px; + } + + > li { + > a { padding: 7px 15px; } + + &:not(.active) * { color: $brand-primary; } + + &.active * { color: $black; } + } + + a:focus { outline: none; } + + li { + &:not(.active) a:focus, + &:not(.active) a:hover { + background-color: transparent; + border: 1px solid transparent; + } + + &.active:focus { color: $black; } + } + + .diaspora-custom-compose::before { + bottom: -2px; + position: relative; + } +} + +.publisher-textarea-wrapper:not(.active) .md-header { display: none; } diff --git a/app/assets/stylesheets/media-box.scss b/app/assets/stylesheets/media-box.scss index 2c11626d9..7f6139ab1 100644 --- a/app/assets/stylesheets/media-box.scss +++ b/app/assets/stylesheets/media-box.scss @@ -1,4 +1,6 @@ -.media { margin: 10px; } +.media { + margin: 10px; +} .media, .bd { @@ -10,8 +12,8 @@ .media .img { float: left; margin-right: 10px; + + img { display: block; } } -.media .img img { display: block } .media .imgEt { float: right; margin-left: 10px; } - diff --git a/app/assets/stylesheets/mentions.scss b/app/assets/stylesheets/mentions.scss index 6647170ee..71028e629 100644 --- a/app/assets/stylesheets/mentions.scss +++ b/app/assets/stylesheets/mentions.scss @@ -20,6 +20,8 @@ box-sizing: border-box; } + .form-control[disabled] { background-color: transparent; } + .mentions-autocomplete-list { background: white; display: none; @@ -69,28 +71,21 @@ bottom: 0px; left: 0px; top: 0px; - padding: 4px 6px; + padding: $padding-base-vertical $padding-base-horizontal; } .mentions { color: white; - font-size: 14px; + font-size: $font-size-base; font-family: Arial, Helvetica, sans-serif; - line-height: normal; overflow: hidden; width: 100%; white-space: pre-wrap; word-wrap: break-word; - > div { - color: white; - white-space: pre-wrap; - width: 100%; - - strong { - background: #d8dfea; - font-weight: normal; - } + > strong { + background: $background-blue; + font-weight: normal; } } } diff --git a/app/assets/stylesheets/mobile/comments.scss b/app/assets/stylesheets/mobile/comments.scss new file mode 100644 index 000000000..3b10f6bd3 --- /dev/null +++ b/app/assets/stylesheets/mobile/comments.scss @@ -0,0 +1,106 @@ +.bottom-bar { + border-radius: 0 0 5px 5px; + z-index: 3; + display: block; + position: relative; + padding: 8px 10px 10px; + background: $background-grey; + margin-top: 10px; + border-top: 1px solid $border-grey; + min-height: 22px; + overflow: hidden; + + > a, + .show-comments, + .show-comments > [class^="entypo"] { + @include transition(color); + color: $text-grey; + font-weight: bold; + } + + .show-comments { + position: relative; + top: 3px; + + > [class^="entypo"] { margin-left: .5em; } + + &:hover, + &:active, + &:focus { + outline: none; + text-decoration: none; + } + + &.active:not(.bottom_collapse), + &.active:not(.bottom_collapse) > [class^="entypo"] { + color: $text; + } + } + + .post-stats { + top: -5px; + float: right; + position: relative; + display: flex; + margin-bottom: -15px; + + .count { + background-color: $background-grey; + text-align: center; + z-index: 2; + } + + .icon-count-group { + display: flex; + flex-flow: column; + justify-content: center; + margin: 0 7px; + } + + [class^="entypo"] { + color: $text-grey; + font-size: 24px; + height: 28px; + margin: 0; + width: 100%; + } + + [class^="entypo"]:hover, + [class^="entypo"]:active, + [class^="entypo"]:focus { + text-decoration: none; + } + + .entypo-reshare.active { color: $blue; } + + .entypo-heart.active { color: $red; } + } + + .post-action { + height: 28px; + + .disabled { color: $medium-gray; } + } + + .add-comment-switcher { padding-top: 10px; } + + &.inactive .post-stats .count, + &.inactive .comment-container { + display: none; + } +} + +.stream_element .comments { + margin: 0; + padding: 0; + width: 100%; + + .content { padding: 0; } + + .comment { + border-top: 1px solid $border-medium-grey; + padding: 10px 0 0; + + &:first-child { padding-top: 20px; } + } +} diff --git a/app/assets/stylesheets/mobile/conversations.scss b/app/assets/stylesheets/mobile/conversations.scss new file mode 100644 index 000000000..ac6495f65 --- /dev/null +++ b/app/assets/stylesheets/mobile/conversations.scss @@ -0,0 +1,63 @@ +.conversations-title { + margin: 0 0 20px 0; + h3 { display: inline; } +} +.conversation { + .conversation-participants { + padding: 1rem 1.2rem; + + h3 { margin: 0; } + + .delete_conversation { + font-size: 2rem; + + [class^="entypo-"], [class*="entypo-"] { + color: $link-grey; + } + } + + .avatars { + margin: 0 -0.15rem; + .avatar { + margin: 0.15rem; + float: left; + + img { + height: 50px; + width: 50px; + border-radius: 5px; + } + } + } + } + + .stream .stream_element .timeago, + .conversation-participants .last-message-timeago { + display: block; + font-style: italic; + color: $text-grey; + } + + .stream .stream_element { + padding: 0.5rem; + + .ltr { + padding-left: 0px; + } + } +} + +.conversations { + img.avatar { + margin: 10px; + float: left; + } + .no-messages { + text-align: center; + margin-top: 40px; + } +} + +.subject { padding: 0 10px; } + +.message-count, .unread-message-count { margin: 10px 2px; } diff --git a/app/assets/stylesheets/mobile/header.scss b/app/assets/stylesheets/mobile/header.scss index 3c887aa8d..cc07ce808 100644 --- a/app/assets/stylesheets/mobile/header.scss +++ b/app/assets/stylesheets/mobile/header.scss @@ -1,56 +1,96 @@ /* This file contains the CSS code corresponding to the header and the drawer (including the menu) of the mobile version */ -header { - position: fixed; - height: 45px; - top: 0px; - z-index: 10; - background: image-url('header-bg-long.jpg') rgb(40,35,35); - box-shadow: 0 1px 2px #333; - border-bottom: 1px solid #222; -} +$drawer-width: 400px; +$drawer-width-offset: $drawer-width + 50px; +$mobile-navbar-height: 46px; -#main_nav { +#main-nav.navbar-fixed-top { width: 100%; + height: $mobile-navbar-height !important; + min-height: $mobile-navbar-height !important; + max-height: $mobile-navbar-height !important; - #header_title { - display: inline-block; - width: 30px; - height: 30px; - padding: 7px; + .login { + color: $white; + font-weight: bold; + padding: 13px; } - #nav_badges { - float: right; - margin: 7px 0px; - display: inline-block; + .navbar { + margin: 0; + padding: 0; + border: none; + min-height: $mobile-navbar-height; + } - .badge { - display: inline; - margin: 0px 4px; - padding: 10px 6px; - font-weight: bold; - font-size: smaller; + .navbar-right { + float: right; + } + + .navbar-nav { + margin-bottom: 0; + margin-top: 0; + li { float: left; } + } + + #header-title { + padding: 7px 15px; + margin: 0 0 0 -15px; + height: $mobile-navbar-height; + } + + #nav-badges { + float: right; + margin: 0 -15px; + display: inline-flex; + + li > a, li > button { background-color: transparent; - img { - height: 30px; - width: 30px; + &.badge-link { + font-size: 26px; + padding: 14px 6px; + text-align: center; + width: $mobile-navbar-height; + height: $mobile-navbar-height; + + [class^="entypo-"], [class^="diaspora-custom-"] { + color: $white; + width: 100%; + padding: 0; + margin: 0; + + &.entypo-bell, &.diaspora-custom-compose { + text-align: center; + font-size: 22px; + + &:before { + position: relative; + top: -2px; + } + } + } } } - .badge_count { - border-radius: 2px; - z-index: 3; - position: absolute; - top: 3px; - padding: 1px 3px; - background-color: $red; - margin-left: -8px; + .navbar-toggle { + display: block; + margin: 6px 15px; } - #conversation_icon { - height: 18px; + .badge { + z-index: 3; + top: 6px; + right: 6px; + padding: 2px 6px; + position: absolute; + background-color: $red; + } + } + #header-title{ + img { + height: 30px; + width: 30px; } } } @@ -59,38 +99,34 @@ header { position: fixed; top: 0; bottom: 0; - width: 100%; + width: $drawer-width; + @media (max-width: $drawer-width-offset) { + width: 80%; + } left: 100%; background-color: #444; - box-shadow: -2px 0px 2px 1px #333; + box-shadow: none; header { - position: static; - left: 100%; - right: -80%; - - #global_search { - position: relative; + width: 100%; + position: absolute; + height: $mobile-navbar-height; + background-color: $navbar-inverse-bg; + border-bottom: solid $navbar-inverse-border 1px; + #global-search { form { - position: absolute; - left: 5px; - right: 22%; + padding: 0 15px; + width: 100%; input { - box-shadow: 0 1px 1px #444; - border-radius: 15px; - width: 100%; margin-top: 7px; - background-color: #444; - border: 1px solid #222; + background-color: $navbar-inverse-bg; font-size: 13px; - padding: 4px; color: black; &.active { - background-color: $highlight-white; - background-color: rgba(160,160,160,0.6); + background-color: $white; } &:focus { @@ -106,26 +142,25 @@ header { nav { position: absolute; - top: 45px; - bottom: 0px; + top: $mobile-navbar-height; + bottom: 0; overflow: auto; width: 100%; li { - font-size: 25px; + font-size: 1.8rem; line-height: 25px; - font-weight: bold; color: $light-grey; - border-bottom: solid rgb(53, 53, 53) 2px; + border-bottom: solid $navbar-inverse-border 1px; } li:hover { background-color: $link-grey; } - .no_border { - padding: 0px; - border-bottom: 0px; + .no-border { + padding: 0; + border-bottom: 0; &:hover { background-color: transparent; @@ -158,11 +193,27 @@ header { ul { list-style: none; - margin: 0px; + margin: 0; + padding: 0; } } -/* This class is added when the user open the drawer */ -#app.draw > * { - transform: translateX(-80%); +#main-nav, #drawer { + transition: all 0.25s ease; + z-index: 10; +} + +/* This class is added when the user open the drawer */ +#app.draw { + #main-nav, #drawer { + transform: translateX(-$drawer-width); + } + @media (max-width: $drawer-width-offset) { + #main-nav { + transform: translateX(-80%); + } + #drawer { + transform: translateX(-100%); + } + } } diff --git a/app/assets/stylesheets/mobile/mobile.scss b/app/assets/stylesheets/mobile/mobile.scss index 107dab276..87e496e04 100644 --- a/app/assets/stylesheets/mobile/mobile.scss +++ b/app/assets/stylesheets/mobile/mobile.scss @@ -1,12 +1,22 @@ -@import "bootstrap"; -@import "bootstrap-responsive"; -@import "colors"; +@import 'color-variables'; +@import "bootstrap-complete"; @import "_mixins"; @import "vendor/autoSuggest"; +@import 'animations'; @import "_flash_messages"; +@import 'entypo'; +@import 'icons'; +@import 'spinner'; -@import "header"; +@import "mobile/header"; @import "mobile/tags"; +@import "mobile/conversations"; +@import "mobile/settings"; +@import "mobile/stream_element"; +@import "mobile/comments"; +@import 'mobile/openid_connect_error_page'; + +@import 'typography'; a { color: #2489ce; @@ -19,53 +29,42 @@ code { } body { - background: { - image: image-url("mobile/hatched-light.jpg"); - position: fixed; - /* scale background image down for iOS retina display */ - size: 200px; - } - padding: 0px; + background-color: $main-background; + padding: 0; } -h3 { - margin-top: 0px; +textarea { + resize: vertical; } -.clear { - clear: both; +h3 { margin-top: 0; } +.clear { clear: both; } +#main { padding: 56px 10px 0 10px; } + +textarea { resize: vertical; } + +.avatar { + border-radius: 4px; } -#app > * { - transition: all 0.25s ease; -} - -#main { - padding: 55px 10px 0px 10px; -} - -.message { - padding-left: 2px; -} +.badge-important { background-color: $red; } .stream_element, .comments { overflow: auto; position: relative; text-align: left; - padding: 10px 0; min-height: 34px; + padding: 10px 0 0 0; + list-style: none; * { max-width: 100%; } .avatar { - border-radius: 4px; - float: left; - height: 35px; - width: 35px; - margin: { - right: 10px; }; } + margin-top: 0; + max-width: 35px; + } .from { a { @@ -82,59 +81,39 @@ h3 { } } - > .content, - .reshare > .content { - padding: 5px; - } - .info { - margin: { - top: 0; }; } - .photo_attachments { - margin: { - top: 6px; }; } - .timeago { - font: { - weight: normal; }; } - padding: 0 !important; + > .content, .reshare > .content { padding: 6px; } + .info{ margin-top: 0; } + .photo_attachments{ margin-top: 6px; } + .timeago{ font-weight: normal; } } + .shield{ padding: 10px; font-size: larger; - } +} -.shield_wrapper{ +.nsfw-shield{ height: 100%; width: 100%; background-color: LightGrey; - position: absolute; - border-radius: 5px; + border-radius: 0; z-index: 2; } -.new_comment { - padding: 10px; -} - -.stream_element .comments { +.ajax-loader { + border-top: 1px solid $border-medium-grey; + margin-top: 10px; + padding-top: 10px; + text-align: center; width: 100%; - padding: 0; - margin: 0; - top: 3px; - .content { - padding: 0; - } - - .comment { - padding: { - top: 10px; - bottom: 5px; - } - } } -.comment { - border: { - top: 1px solid #ccc; }; +.stream_element:not(.shield-active) .shield{ + display: none; +} + +.stream_element.shield-active .nsfw-hidden{ + display: none; } .login_error, @@ -148,17 +127,32 @@ h3 { text-shadow: 1px 1px 20px rgb(126, 240, 77); } #login_form { - padding: 0; - /* ensure url bar is banished from view on iOS */ margin-bottom: 40px !important; .login-container { padding: 10px; label, legend { text-transform: uppercase; } + .form-control { margin-bottom: 20px; } + .form-group { margin: 10px 0; } } } +footer { + margin-bottom: 20px; + text-align: center; + + ul { + padding-left: 0; + + li { + list-style: none; + margin-bottom: 5px; + } + } +} + +.settings_container, .stream_element, #login_form { border-radius: 5px; @@ -168,16 +162,39 @@ h3 { margin-bottom: 10px; border: 1px solid #bbb; - border-top: 1px solid $border-grey; - border-bottom: 1px solid #aaa; + border-bottom-color: #aaa; } -.stream_element div.img img.avatar { - margin: 10px; -} +.stream_element { + padding: 0px; -.stream_element .bd { - padding-top: 10px; + div.img img.avatar { + margin: 10px; + } + + .bd { + padding-top: 10px; + } + + .media { + padding: 0; + } + + .photo_attachments { + border-radius: 3px 3px 0 0; + + border: { + bottom: 1px solid #ccc; + } + + img.big-stream-photo { + border-radius: 3px 3px 0 0; + width: 100%; + } + a { + padding: 0; } + margin-top: 0; + } } .photo_attachments { @@ -202,18 +219,23 @@ h3 { .more-link, .no-more-posts { display: block; text-align: center; - padding: 0 10px; - margin: 0 10px; + padding: 0; + margin: 20px 0; border-radius: 5px; + border: 1px solid $text-grey; - background: { - color: rgba(220,220,220,0.8); - } + background: { color: rgba(220,220,220,0.8); } h1, h2 { color: $text-grey; padding: 20px; text-shadow: 0 2px 0 #fff; + margin: 0; + } + + &:hover, &:active{ + text-decoration: none; + border: 1px solid $text-dark-grey; } } .no-more-posts { @@ -256,7 +278,7 @@ h3 { font-size: larger; text-align: center; - img { + img:not(.avatar) { max-width: 100%; } @@ -279,42 +301,38 @@ h3 { } &.photos { - border-bottom: 0px !important; + border-bottom: 0 !important; } } #photo_controls { - margin-bottom: 5px; + .arrow { + font-size: 10em; + text-decoration: none; + text-shadow: 0 0 3px $white; + position: fixed; + bottom: -0.2em; + z-index: 1; + &.left { + left: -0.2em; + } + &.right { + right: -0.2em; + text-align: right; + } + .entypo-chevron-left, .entypo-chevron-right { margin-right: 0; } + } } -.arrow { - color: white !important; - font-size: 26pt; - text: { - shadow: 0 1px 2px #333; - decoration: none; }; - padding: 0; - position: fixed; - bottom: 10%; - z-index: 1; - height: 50px; - width: 50px; -} - -#left.arrow { - left: 5%; -} - -#right.arrow{ - right: 5%; +.header-full-width { + background-color: #fff; + border-bottom: 1px solid #aaa; + margin: -10px; // Counter the #main padding + margin-bottom: 10px; + padding-top: 5px; } #author_info { - margin: -10px; - margin-bottom: 10px; - padding-top: 5px; - background-color: #fff; - border-bottom: 1px solid #aaa; word-wrap: break-word; img { @@ -344,7 +362,7 @@ h3 { } } - .bottom_bar { + .bottom-bar { position: static; } } @@ -358,109 +376,6 @@ h3 { float: right; } -.bottom_bar { - border-radius: 0 0 5px 5px; - z-index: 3; - display: block; - position: relative; - padding: 10px; - padding-top: 8px; - background: $background-grey; - - margin: { - top: 10px; }; - - border: { - top: 1px solid $border-grey; - }; - - min-height: 22px; - - > a, - .show_comments { - @include transition(color); - color: $text-grey; - font-weight: bold; - } - - .show_comments { - position: relative; - top: 3px; - color: #ccc; - } - - a.show_comments { - color: $text-grey; - - &.active:not(.bottom_collapse) { - color: #444; - padding: { - right: 14px; - } - background: { - image: image-url("mobile/arrow_down_small.png"); - position: center right; - repeat: no-repeat; - } - } - } - - .show_comments.bottom_collapse { - position: absolute; - right: 10px; - top: 14px; - padding: 5px 10px; - } - - #bottom_bar_tabs { - display: table; - width: 100%; - text: { - align: center; - } - border: { - bottom: 1px solid #ccc; - } - font: { - size: 28px; - } - color: #ccc; - - .tab { - display: table-cell; - position:relative; - top: -5px; - - border: { - right: 1px solid #ccc; - } - - &:last-child { - border: none; - } - } - } -} - -.floater { - float: right; } - -.stream_element .photo_attachments { - border-radius: 3px 3px 0 0; - - border: { - bottom: 1px solid #ccc; - } - - img.big-stream-photo { - border-radius: 3px 3px 0 0; - width: 100%; - } - a { - padding: 0; } - margin-top: 0; -} - .photo_area { border-radius: 3px; text-align: center; } @@ -470,54 +385,31 @@ h3 { background: { size: 20px; repeat: no-repeat; - position: center; }; - - height: 13px; + position: center; + }; + height: 20px; width: 20px; - padding: 5px; + padding: 0; + margin-left: 15px; - margin: { - left: 5px; }; + &:last-child{ + margin-right: 5px; + } &.loading { background-image: image-url("mobile-spinner.gif"); } } -.reshare_action { - background-image: image-url("mobile/reshare_mobile.png"); - &.active { - background-image: image-url("mobile/reshare_mobile_active.png"); - } -} - -.like_action { - background-image: image-url("mobile/heart_mobile_grey.png"); - &.active { - background-image: image-url("mobile/heart_mobile_red.png"); - } -} - -.comment_action.image_link { - background-image: image-url("mobile/pencil_mobile_grey_active.png"); - &.inactive { - background-image: image-url("mobile/pencil_mobile_grey.png"); - } -} - #new_status_message { - margin: 0px; + margin: 0; - fieldset { - padding: 10px; + .service_icon { + cursor: pointer; - .service_icon { - cursor: pointer; - - &.dim { - opacity: 0.6; - } + &.dim { + opacity: .6; } } @@ -526,14 +418,8 @@ h3 { } textarea { - border-radius: 0; - box-shadow: 0 2px 3px #999; - border: none; - border-bottom: 1px solid $border-dark-grey; - width: 96%; - padding: 2%; - margin: 0px; - font-size: 14px; + min-width: 100%; + max-width: 100%; } } @@ -542,34 +428,12 @@ select { padding: 7px; } -.new_comment { - padding: 10px 0; - padding-top: 20px; -} - .comment.add_comment_bottom_link_container { position: relative; text-align: center; padding: 25px !important; } -.post_stats { - position: absolute; - right: 8px; - top: 31px; - z-index: 2; - - span { - color: $text-dark-grey; - font-weight: bold; - padding: 2px 7px; - margin: 5px 6px; - background: { - color: $background-grey; - } - } -} - .additional_photo_count { opacity: 0.5; @@ -594,10 +458,10 @@ select { .reshare_via { width: 100%; position: absolute; - bottom: -7px; + bottom: -10px; text-align: center; span { - padding: 2px 10px; + padding: 0 10px; font-weight: bold; color: $text-grey; background: { @@ -623,10 +487,13 @@ select { overflow: hidden; } + .notifications { list-style: none; - margin: 0px; + margin: 0; clear: right; + + &, & ul { padding: 0; } } .notifications_for_day { @@ -637,42 +504,6 @@ select { margin-bottom: 5px; } -.message_count { - border-radius: 2px 2px 2px 2px; - float: right; - margin: 10px 10px 1px 5px; - padding: 0 2px 1px; - position: relative; - background-color: #999; - color: #eee; - font-size: 10px; - line-height: 12px; - -} - -.conversation_participants img.avatar{ - height:35px; - width:35px; - margin: 5px 0 5px 2px; -} - -.conversations img.avatar{ - margin: 10px; - float: left; -} - -.unread_message_count { - border-radius: 2px 2px 2px 2px; - float: right; - margin: 10px 2px 1px 5px; - padding: 0 2px 1px; - position: relative; - background-color: #B11; - color: #EEE; - font-size: 10px; - line-height: 12px; -} - .last_author { position: relative; margin: 10px 10px 2px; @@ -689,11 +520,6 @@ select { color: #3F8FBA; } -form#new_conversation.new_message input.button.creation{ - float: right; - margin: 0 5px 5px; -} - h3.ltr { font-size: 18px; line-height: 27px; @@ -712,10 +538,6 @@ h3.ltr { word-wrap: break-word; } -textarea#message_text { - margin: 10px 0 10px; -} - form#new_conversation.new_conversation { background-color: #FFFFFF; border-bottom: 1px solid $border-dark-grey; @@ -727,89 +549,13 @@ form#new_conversation.new_conversation { font-weight: normal; line-height: 20px; } - .span-10 { - margin: 5px; - } -} - -.span-2 { - margin: 5px 5px; - text-transform: uppercase; -} - -.span-10 { - width: 100%; } textarea#conversation_text { - border: 0.2s; - border-radius: 0 0 0 0; font-size: larger; - left: 0; - margin: 10px 0; - width: 218px; - padding: 0; -} - -.bottom_submit_section { - display: block; - position: relative; - text-align: right; - padding-bottom: 5px; -} - -.button.creation { - display: inline-block; - padding: 4px 12px; - margin-bottom: 0; - font-size: 14px; - line-height: 20px; - color: #333333; - text-align: center; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - vertical-align: middle; - cursor: pointer; - background-color: #f5f5f5; - background-image: gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); - background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); - background-repeat: repeat-x; - border: 1px solid #cccccc; - border-color: #e6e6e6 #e6e6e6 #bfbfbf; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - border-bottom-color: #b3b3b3; - border-radius: 4px; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.button.creation:hover, -.button.creation:focus, -.button.creation:active { - color: #333333; - background-color: #e6e6e6; -} - -.button.creation:active { - background-color: #cccccc \9; -} - -.button.creation:first-child { - margin-left: 0; -} - -.button.creation:hover, -.button.creation:focus { - color: #333333; - text-decoration: none; - background-position: 0 -15px; - transition: background-position 0.1s linear; -} - -.button.creation:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; + width: 100%; + min-width: 100%; + max-width: 100%; } .registrations_error, @@ -839,6 +585,8 @@ form#new_user.new_user input.btn { } } +.media { padding: 12px 0 } + .conversation_error { color: #DF0101; text-shadow: 1px 1px 5px #666; @@ -850,7 +598,8 @@ form#new_user.new_user input.btn { } #conversation_inbox, .notifications { - .pagination { + div.pagination { + width: 100%; margin-left: auto; margin-right: auto; text-align: center; @@ -865,10 +614,6 @@ form#new_user.new_user input.btn { } } -input#user_password, #user_username, #user_password_confirmation, #user_email { - height: 30px; -} - #flash_notice, #flash_alert, #flash_error { @@ -886,25 +631,11 @@ input#user_password, #user_username, #user_password_confirmation, #user_email { padding: 1px } -.session_mobile { - margin-top: -55px; -} - h1.session { font-size: 40px; font-weight: 200; } -.landing { - padding: 20px; - margin: -10px -20px 10px -20px; - background-color:#4b4b4b; - box-shadow: 0 3px 40px rgba(0,0,0,0.8); - z-index: 10; - position: relative; - text-align: center; -} - form p.checkbox_select { position: relative; label { @@ -923,16 +654,14 @@ form p.checkbox_select { margin-top: 5px; min-height: 100px; position: relative; + margin-bottom: 15px; + text-align: center; + padding: 0; img { border-radius: 5px; box-shadow: 0 1px 2px #666; - position: absolute; - left: 0; - height: 100px; - width: 100px; - &.avatar { @include transition(opacity, 0.5s); &.loading { @@ -940,18 +669,15 @@ form p.checkbox_select { } } } - padding-left: 120px; } -#settings_nav { - font-size: 1em; - - ul { - margin: 0 0 0 15px; - } - - li { +#birth-date { + text-align: center; + select{ + width: 32%; display: inline; + &:first-of-type{ float: left; } + &:last-of-type{ float: right; } } } @@ -959,9 +685,11 @@ form#update_profile_form { select { padding: 3px; } + + .submit_block { margin-bottom: 20px; } } -select#user_language, #user_auto_follow_back_aspect_id, #aspect_ids_ { +select#user_language, select#user_color_theme, #user_auto_follow_back_aspect_id, #aspect_ids_ { padding: 3px; } @@ -972,10 +700,6 @@ select#user_language, #user_auto_follow_back_aspect_id, #aspect_ids_ { color: inherit; background-color: $background-grey; border-radius: 10px; - .img .avatar { - width: 50px; - height: 50px; - } } .search-mobile { @@ -1005,10 +729,7 @@ select#aspect_ids_ { float: left; padding: 3px 12px; cursor: pointer; - - &:hover img { - opacity: 0.4; - } + .entypo-camera { margin-right: 0; } } #publisher_textarea_wrapper { @@ -1137,16 +858,8 @@ select#aspect_ids_ { } } -.remove_post { - position: absolute; - top: 2px; - right: 5px; - opacity: 0.5; -} - -.remove_comment { - opacity: 0.5; -} +.remove_post { opacity: 0.5; } +.remove_comment { opacity: 0.5; } .center { text-align: center; @@ -1171,6 +884,11 @@ select#aspect_ids_ { margin: 0 10px 0 0; padding: 3px; + &, &:focus, &:active{ + box-shadow: none; + border-color: #CCCCCC; + } + &.has_connection { background-color: $light-green; } @@ -1181,4 +899,14 @@ select#aspect_ids_ { word-wrap: break-word; } +#email_prefs { + .checkbox{ + margin: 15px 0; + } +} +.small-horizontal-spacer { margin: 15px 0; } + +.form-control, .form-control:active, .form-control:focus { box-shadow: none; } +.form-control:active, .form-control:focus { border-color: #999999; } + .tag_following_action { margin: 5px 0 10px 0; } diff --git a/app/assets/stylesheets/mobile/openid_connect_error_page.scss b/app/assets/stylesheets/mobile/openid_connect_error_page.scss new file mode 100644 index 000000000..c87efeb4e --- /dev/null +++ b/app/assets/stylesheets/mobile/openid_connect_error_page.scss @@ -0,0 +1,9 @@ +.landing { margin: -56px -20px 10px; } + +.api-error { + background-color: $light-grey; + box-shadow: $card-shadow; + margin-top: 20px; + + h4 { text-align: center; } +} diff --git a/app/assets/stylesheets/mobile/settings.scss b/app/assets/stylesheets/mobile/settings.scss new file mode 100644 index 000000000..76bbbffb2 --- /dev/null +++ b/app/assets/stylesheets/mobile/settings.scss @@ -0,0 +1,47 @@ +#settings_nav { + border-bottom: 1px solid $border-grey; + margin-bottom: 1rem; + padding-bottom: 1rem; + + ul { + padding: 0px; + margin: 0px; + } + + li { + display: inline; + font-size: 1.7rem; + padding: 0px 0.3rem; + + &:first-child { padding-left: 0px; } + &:last-child { padding-right: 0px; } + } +} + +.services_page { + h3 { + margin: 1rem 0px; + } + + .services_explanation { + border-top: 1px solid $border-grey; + margin-top: 1rem; + padding: 1rem 0; + } +} + +.applications-page .applications-explanation { + margin-bottom: 15px; +} + +.application-img { + margin: auto; + max-width: 150px; + text-align: center; + + .entypo-browser { + font-size: 137px; + height: 160px; + margin-top: -45px; + } +} diff --git a/app/assets/stylesheets/mobile/stream_element.scss b/app/assets/stylesheets/mobile/stream_element.scss new file mode 100644 index 000000000..13734c6a9 --- /dev/null +++ b/app/assets/stylesheets/mobile/stream_element.scss @@ -0,0 +1,16 @@ +.stream_element { + .location { + color: $text-grey; + font-size: $font-size-small; + white-space: normal; + } + + .poll { + border-top: 1px solid $border-grey; + margin-top: 20px; + padding-top: 10px; + .poll-head .question { + font-weight: bold; + } + } +} diff --git a/app/assets/stylesheets/navbar_left.scss b/app/assets/stylesheets/navbar_left.scss new file mode 100644 index 000000000..5a7a585bf --- /dev/null +++ b/app/assets/stylesheets/navbar_left.scss @@ -0,0 +1,200 @@ +.left-navbar { + padding: 0; + padding-bottom: 10px; + + a { + text-decoration: none; + outline: 0; + } + + ul { + margin: 0; + padding: 0; + list-style: none; + } + + .hoverable { + color: $link-grey; + display: block; + padding: 10px 20px; + font-weight: bold; + + a { + color: $link-grey; + } + + &:hover, &:hover a, &:hover [class^="entypo"] { + background-color: $blue; + border-color: $blue; + color: $white; + } + } + + .all-aspects .hoverable.selected, + .followed-tags-sidebar .hoverable.selected, + .selected > .hoverable { + color: $white; + background: $gray; + border-color: $gray; + } + + .all-aspects ul, + .followed-tags-sidebar ul { + background: $left-navbar-drawer-background; + li { padding: 0; } + .entypo-check { visibility: hidden; } + .entypo-check.selected { visibility: visible; } + .selectable { + display: block; + overflow: hidden; + text-overflow: ellipsis; + padding: 10px 20px 10px 40px; + } + .hoverable > .action { + position: relative; + bottom: 30px; + right: 20px; + visibility: hidden; + } + .hoverable:hover > .action { visibility: visible; } + } + + #tags_list { + #new_tag_following { + padding: 10px 20px 10px 30px; + } + + /* ---- override app/stylesheets/vendor/autoSuggest.css ---- */ + .as-original{ width: 100%; } + .tag_input { + line-height: $font-size-base; + vertical-align: top; + width: 100%; + } + + .as-result { + margin-top: -1px; + margin-left: 1px; + } + + .as-list { + em { + background-color: #aabbcc; + color: black; + padding: 0px; + } + + color: black; + position: static; /* override absolute */ + margin: 0px; + border-radius: 0px 0px 3px 3px; + box-shadow: 0px 1px 1px #666; + } + + .as-result-item.active { + color: black; + text-shadow: none; + background-color: $background-blue; + border-color: $background-blue; + } + /* ---- end override app/stylesheets/vendor/autoSuggest.css ---- */ + } +} + +.info-bar { + margin-top: 20px; + padding: 10px 20px 0; + + .excellence-box, + .info-links { + border-top: 1px solid $border-grey; + padding: 5px; + } + + .excellence-box { + margin-top: 10px; + + .content { + font-size: $font-size-base; + } + } + + .section { + margin-top: 10px; + + &:last-child { + margin-bottom: 10px; + } + + &:not(.collapsed) .entypo-triangle-right, + &.collapsed .entypo-triangle-down, + &.collapsed .content { + display: none; + } + + &.collapsed .title h5 { + font-weight: normal; + } + } + + .title { + cursor: pointer; + padding-bottom: 5px; + + h5 { + color: $text-dark-grey; + font-size: $font-size-base; + font-weight: bold; + margin: 0; + } + } + + .content { + color: $text-grey; + font-size: $font-size-small; + line-height: 18px; + padding: 10px 0; + + p, + ul { + margin: 0; + } + + ul { + list-style: none; + margin-bottom: 5px; + padding-left: 0; + } + + .btn-link { + font-size: $font-size-small; + padding-left: 0; + } + + > [name="invite_code"] { + box-sizing: border-box; + font-size: $font-size-small; + height: 30px; + width: 100%; + } + } + + .right-service-icons { + padding: 10px { + bottom: 0; + } + text-align: center; + + .social-media-logos-facebook-24x24, + .social-media-logos-twitter-24x24, + .social-media-logos-tumblr-24x24, + .social-media-logos-wordpress-24x24 { + height: 24px; + width: 24px; + } + + a { + display: inline-block; + } + } +} diff --git a/app/assets/stylesheets/new_styles/_animations.scss b/app/assets/stylesheets/new_styles/_animations.scss deleted file mode 100644 index 93ca29ad3..000000000 --- a/app/assets/stylesheets/new_styles/_animations.scss +++ /dev/null @@ -1,7 +0,0 @@ -/* flash message animations - header height is about 40px */ -@keyframes expose { - 0% { top : -100px; } - 15% { top : 34px; } - 85% { top : 34px; } - 100% { top : -100px; } -} diff --git a/app/assets/stylesheets/new_styles/_base.scss b/app/assets/stylesheets/new_styles/_base.scss deleted file mode 100644 index 318b99484..000000000 --- a/app/assets/stylesheets/new_styles/_base.scss +++ /dev/null @@ -1,102 +0,0 @@ -html, -body { - /* hack to ensure fixed elements at height: 100%; are in relation to the window */ - max-height : 100%; -} - -body { - margin-top: 40px; - padding : none; - font-size: $font-size-text; - - &.lock { - overflow: hidden; - } -} - -blockquote p { - font-size: $font-size-text; - line-height: $line-height; -} - -/* Overflow */ -h1, h2, h3, h4, h5, h6, -p, -blockquote, -code, -pre { word-wrap: break-word; } -a.tag { word-break: break-all; } - -/* new link color */ -a { color : $link-blue } - -.avatar { - border-radius: 4px; - - &.micro { - height: 20px; - width: 20px; - } - - &.small { - height: 35px; - width: 35px; - } - - &.medium { - height: auto; - width: auto; - max-width: 75px; - } -} - -.author-name { - color: inherit; -} - -/* bootstrap label fixes for Roboto */ -.label { - padding : 2px 5px; - padding-bottom : 3px; - - span { - display : inline-block; - position : relative; - top : 1px; - font-family : Roboto-Bold; - } -} - -#back-to-top { - display: block; - color: white; - position: fixed; - z-index: 49; - right: 20px; - bottom: 20px; - opacity: 0; - font-size: 2.9em; - padding: 0 12px 0 12px; - border-radius: 10px; - background-color: #aaa; - &:hover { opacity: 0.85 !important; } - &.visible { opacity: 0.5; } - line-height: 1.5; -} - -/* general purpose classes */ - -.small-horizontal-spacer { - min-height: 20px; -} - -.big-horizontal-spacer { - height: 50px; -} - -/* responsive */ -@media (max-width: 767px) { - body { - padding : 0; - } -} diff --git a/app/assets/stylesheets/new_styles/_buttons.scss b/app/assets/stylesheets/new_styles/_buttons.scss deleted file mode 100644 index 732f98af3..000000000 --- a/app/assets/stylesheets/new_styles/_buttons.scss +++ /dev/null @@ -1,31 +0,0 @@ -.btn.creation { - $button-border-color: #aaa; - @include button-gradient($creation-blue); - color: #fff; - border: 1px solid darken($button-border-color,20%); - text-shadow: none; - &:hover { - background: $creation-blue; - border: 1px solid darken($button-border-color,35%); - } -} -.btn-group.open > .btn.creation { - background: $creation-blue; -} - -.btn.green { - $button-border-color: #aaa; - @include button-gradient($green); - color: $grey; - border: 1px solid darken($button-border-color,20%); - - &:hover { - background: $green; - border: 1px solid darken($button-border-color,35%); - } -} -.btn-group.open > .btn.green { - background: $green; -} - -.btn.delete { color: desaturate($red,10%); } diff --git a/app/assets/stylesheets/new_styles/_forms.scss b/app/assets/stylesheets/new_styles/_forms.scss deleted file mode 100644 index 7e4203b84..000000000 --- a/app/assets/stylesheets/new_styles/_forms.scss +++ /dev/null @@ -1,105 +0,0 @@ -input, -input[type=email], -input[type=text], -input[type=password], -textarea { /* Bootstrap reset */ - &, - &:active, - &:invalid, - &:invalid:required, - &:focus, - &:active:focus, - &:invalid:focus, - &:invalid:required:focus { - border-color: $border-grey; - box-shadow: none; - color : $text-dark-grey; - } -} - -/* autocomplete colors */ -input:-webkit-autofill{ - background-color: #fff !important; - background-image: none !important; -} - -/* Forms described here are only used on the public pages at the moment */ -form.block-form { - margin: 20px auto; - - label { - color : $text-dark-grey; - position: absolute; - top: -9999px; - left: -9999px; - } - - fieldset { - margin-bottom: 1em; - background-color: #fff; - position: relative; /* To correctly place the entypo icon */ - - input { - color : $text-dark-grey; - margin: 0px; - border-bottom-width: 0px; - border-radius: 0px; - } - - .form-control { - font-size: 16px; - height: 40px; - padding: 10px; - padding-left: 40px; - } - - .form-control:first-of-type { - &, - &:focus, - &:invalid, - &:invalid:focus, - &:invalid:required, - &:invalid:required:focus { - border-top-left-radius: 5px; - border-top-right-radius: 5px; - } - } - - .form-control:last-of-type { - &, - &:focus, - &:invalid, - &:invalid:focus, - &:invalid:required, - &:invalid:required:focus { - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; - border-bottom-width: 1px; - } - } - - .entypo { - position: absolute; - top: 10px; - left: 10px; - width: 20px; - text-align: center; - color: $text-grey; - font-size: 20px; - } - - .entypo:nth-of-type(2) { - top: 50px; - } - - .entypo:nth-of-type(3) { - top: 90px; - } - - .entypo:nth-of-type(4) { - top: 130px; - } - - ::placeholder { text-transform: uppercase; } - } -} diff --git a/app/assets/stylesheets/new_styles/_interactions.scss b/app/assets/stylesheets/new_styles/_interactions.scss deleted file mode 100644 index 96c147eaf..000000000 --- a/app/assets/stylesheets/new_styles/_interactions.scss +++ /dev/null @@ -1,60 +0,0 @@ -.control-icons { - a { - margin-right: 5px; - &:hover { text-decoration: none; } - - i.entypo { - color: $text-grey; - font-size: $font-size-text; - line-height: $line-height; - vertical-align: middle; - &:hover { color: $text; } - &.cross { font-size: $line-height; } - } - - &.hide_conversation i { - font-size: $line-height*1.5; - } - - &.delete_conversation i { - font-size: $font-size-text*1.5; - } - - &.destroy_participation i { - color: $black; - &:hover { color: $text-dark-grey; } - } - } -} - -.stream_container, #single-post-interactions { - .control-icons { - z-index: 6; - float: right; - - .block_user, - .comment_report, - .create_participation, - .delete, - .destroy_participation, - .post_report { - display: inline-block; - } - - & > a:hover { - text-decoration: none; - } - } - - .stream_element, .comment, .photo, .stream_element:hover .comment { - .control-icons > a { - @include transition(opacity); - opacity: 0; - } - - &:hover .control-icons { - & > a { opacity: 0.8; } - & > a:hover { opacity: 1; } - } - } -} diff --git a/app/assets/stylesheets/new_styles/_navs.scss b/app/assets/stylesheets/new_styles/_navs.scss deleted file mode 100644 index d93871c92..000000000 --- a/app/assets/stylesheets/new_styles/_navs.scss +++ /dev/null @@ -1,15 +0,0 @@ -.nav.nav-tabs{ - li > a { - color: $text-dark-grey; - .entypo, .mentionIcon { - color: $text-dark-grey; - margin-right: 5px; - } - .mentionIcon { font-weight: 700; } - } - li.active > a { - background-color: $background-grey; - color: $black; - .entypo, .mentionIcon { color: $black; } - } -} diff --git a/app/assets/stylesheets/new_styles/_poll.scss b/app/assets/stylesheets/new_styles/_poll.scss deleted file mode 100644 index c7eba90ce..000000000 --- a/app/assets/stylesheets/new_styles/_poll.scss +++ /dev/null @@ -1,39 +0,0 @@ -.poll_form { - border-top: 1px solid $border-grey; - border-bottom: 1px solid $border-grey; - margin: 10px 0px 10px 0px; - padding: 10px 0px 5px 0px; - - .poll_content { - margin-top: 5px; - } - .toggle_result_wrapper { - display: inline-block; - margin-top: 10px; - } - form { - margin-bottom: 0px; - } - - .progress { - background-image: none; - box-shadow: 0 0 0; - margin-bottom: 5px; - height: 10px !important; - - .bar { - background-image: none; - background-color: $border-dark-grey; - color: $text-dark-grey; - text-align: left; - } - } - .submit[disabled] { - cursor: default; - color: $text-grey; - - &:hover, &:active { - background-image: none; - } - } -} diff --git a/app/assets/stylesheets/new_styles/_registration.scss b/app/assets/stylesheets/new_styles/_registration.scss deleted file mode 100644 index 7d006d187..000000000 --- a/app/assets/stylesheets/new_styles/_registration.scss +++ /dev/null @@ -1,52 +0,0 @@ -#registration { - .ball { - height: 633px; - max-width: 100%; - background: image-url("branding/ball.png") no-repeat; - background-size: contain; - } - - .v-center { - display: table; - height: 633px; - - .content { - display: table-cell; - vertical-align: middle; - - #pod-name { - text-align: center; - margin: 12px; - font-size : 35px; - } - } - } - - form { - max-width: 400px; - - .captcha_img { - position: absolute; - left: 10px; - width: 120px; - top: 169px; - } - - #user_captcha { - font-size: 16px; - height: 40px; - padding: 10px 10px 10px 130px; - line-height: $line-height; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid $border-grey; - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; - } - - #terms > a { - color: inherit; - text-decoration: underline; - } - } -} diff --git a/app/assets/stylesheets/new_styles/_settings.scss b/app/assets/stylesheets/new_styles/_settings.scss deleted file mode 100644 index 88e181e88..000000000 --- a/app/assets/stylesheets/new_styles/_settings.scss +++ /dev/null @@ -1,22 +0,0 @@ -/* Specific styles for the settings pages (profile, user account, privacy, services) */ -#inner_account_delete { - width: 700px; -} - -.as-selections #tags { - border: none; - box-shadow: none; -} - -.enclosed-checkbox label { - margin-bottom: 0; -} - -#profile_photo_upload .avatar { - height: auto; - width: auto; - max-width: 200px; - margin-bottom: 10px; -} - -.settings_visibilty { margin-left: 10px; } diff --git a/app/assets/stylesheets/new_styles/_spinner.scss b/app/assets/stylesheets/new_styles/_spinner.scss deleted file mode 100644 index 49086f97e..000000000 --- a/app/assets/stylesheets/new_styles/_spinner.scss +++ /dev/null @@ -1,38 +0,0 @@ -@keyframes fade-in { - 0% { opacity: 0; } - 100% { opacity: 1; } -} - -@keyframes spin { - 0% { -webkit-transform: rotate(0deg); } - 100% { -webkit-transform: rotate(360deg); } -} - -#paginate, #infscr-loading { - margin-top: 10px; - padding: 8px 0; - text-align: center; - width: 100%; - display: block; - clear: both; -} - -.loaded { - animation: fade-in 0.16s linear; -} - -.loader { - mask-image: image-url('static-loader.png'); - animation: spin 1s infinite ease-in-out, fade-in 0.2s ease-in; - - background-image : image-url("static-loader.png"); - - display: inline-block; - width : 14px; - height: 14px; - - &.hidden{ - display : none; - } -} - diff --git a/app/assets/stylesheets/new_styles/_typography.scss b/app/assets/stylesheets/new_styles/_typography.scss deleted file mode 100644 index d56f074f0..000000000 --- a/app/assets/stylesheets/new_styles/_typography.scss +++ /dev/null @@ -1,23 +0,0 @@ -/* Roboto */ -@font-face { - font-family : Roboto; - src : image-url('fonts/Roboto-Regular.ttf'); - weight : normal; -} - -@font-face { - font-family : Roboto-Bold; - src : image-url('fonts/Roboto-Bold.ttf'); - weight : normal; -} - -@font-face { - font-family : Roboto-Light; - src : image-url('fonts/Roboto-Light.ttf'); - weight : normal; -} - -body, p, h1, h2, h3, h4, h5, h6, textarea, input { - font-family : "Helvetica Neue", Helvetica, sans-serif; - font-weight : normal; -} diff --git a/app/assets/stylesheets/notifications.scss b/app/assets/stylesheets/notifications.scss index d784105c7..f4349d1e1 100644 --- a/app/assets/stylesheets/notifications.scss +++ b/app/assets/stylesheets/notifications.scss @@ -1,37 +1,25 @@ #notifications_container { - .nav.nav-tabs{ - li > a { - .badge.badge-default { display: none; } - } - } - .stream { .header { border-bottom: 1px solid $border-grey; - .btn-toolbar, h4 { - margin-bottom: 10px; - line-height: 40px; - } margin-bottom: 10px; } - .year_container { margin-top: 40px; } + .btn-toolbar { margin: 11px 0; } + + .framed-content { padding-bottom: 10px; } + .year { background-color: $white; color: $text-grey; font-size: 40px; line-height: 40px; - margin-bottom: -20px; + margin-bottom: 20px; + margin-top: 40px; text-align: center; } - .year_container + .day_group { - border-top: 1px solid $border-grey; - padding-top: 60px; - } - .day_group + .day_group { - border-top: 1px dashed $border-grey; margin-top: 10px; padding-top: 10px; } @@ -55,47 +43,60 @@ overflow: visible; } - .stream_element.media { - padding: 10px; - margin: 0px; - font-size: 13px; - line-height: 18px; - border-bottom: 1px solid $border-grey; - &:last-child { border: none !important; } - - &.unread { - background-color: $background-grey; - .unread-toggle { - opacity: 1 !important; - .entypo { color: $black; } - } - } - - &:hover { - .unread-toggle { opacity: 1 !important; } - } - - .avatar { - width: 35px; - height: 35px; - } - - .unread-toggle { - padding: 9px 5px; - .entypo { - cursor: pointer; - color: lighten($black,75%); - font-size: 17px; - line-height: 17px; - } - opacity: 0; - } - - .btn-group.aspect_membership_dropdown { margin: 5px 0; } - } - .pagination { text-align: center; } - .no_notifications { text-align: center; } + .no-notifications { + margin: 0 10px; + text-align: center; + } + } + + .list-group .list-group-item { + [class^="entypo-"], [class*="entypo-"], .mentionIcon { margin-right: 5px; } + .mentionIcon { font-weight: bold; } + + &.active { + [class^="entypo-"], [class*="entypo-"], .mentionIcon { color: $component-active-color; } + } + } +} + +#notifications_container .stream, header .nav-badges .notifications { + .stream_element.media { + padding: 10px; + margin: 0px; + line-height: 18px; + border-bottom: 1px solid $border-grey; + &:last-child { border: none !important; } + + &.unread { + background-color: $background-grey; + .unread-toggle { + opacity: 1 !important; + .entypo-eye { color: $black; } + } + } + + &:hover { + .unread-toggle { opacity: 1 !important; } + } + + .avatar { + width: 35px; + height: 35px; + } + + .unread-toggle { + padding: 9px 5px; + .entypo-eye { + cursor: pointer; + color: lighten($black,75%); + font-size: 17px; + line-height: 17px; + } + opacity: 0; + } + + .btn-group.aspect_membership_dropdown { margin: 5px 0; } } } diff --git a/app/assets/stylesheets/openid_connect_error_page.scss b/app/assets/stylesheets/openid_connect_error_page.scss new file mode 100644 index 000000000..15e659fc3 --- /dev/null +++ b/app/assets/stylesheets/openid_connect_error_page.scss @@ -0,0 +1,7 @@ +.api-error { + background-color: $light-grey; + box-shadow: $card-shadow; + margin-top: 20px; + + h4 { text-align: center; } +} diff --git a/app/assets/stylesheets/people.scss b/app/assets/stylesheets/people.scss index c217dcca4..66dcb7082 100644 --- a/app/assets/stylesheets/people.scss +++ b/app/assets/stylesheets/people.scss @@ -3,6 +3,7 @@ .term { font-weight: 700; } small { margin-left: 15px; } } + #invitations-button { padding-left: 0; } } #people_stream { .media, .media-body { @@ -11,7 +12,7 @@ .stream_element.media { border-bottom: 1px solid $border-grey; padding: 10px; - margin: 0px; + margin: 0; font-size: 13px; line-height: 16px; min-height: 50px; @@ -24,6 +25,23 @@ line-height: 50px; margin-right: 10px; } - .info { font-size: 11px; } + .info { font-size: $font-size-small; } + } +} +#blocked_people { + .blocked_person { + border-bottom: 1px solid $border-grey; + font-size: 13px; + line-height: 16px; + margin: 0; + min-height: 50px; + padding: 10px 0; + &:last-of-type { border-bottom: 0; } + .avatar { + width: 50px; + height: 50px; + } + .info { font-size: $font-size-small; } + .btn-danger { margin-top: 9px; } } } diff --git a/app/assets/stylesheets/poll.scss b/app/assets/stylesheets/poll.scss new file mode 100644 index 000000000..e5d805270 --- /dev/null +++ b/app/assets/stylesheets/poll.scss @@ -0,0 +1,60 @@ +.poll_form { + border-bottom: 1px solid $border-grey; + border-top: 1px solid $border-grey; + margin: 10px 0; + padding: 10px 0 5px; + + .toggle-result-wrapper { + display: inline-block; + margin-top: 10px; + } + + form { + margin-bottom: 0; + } + + .progress { + background-image: none; + box-shadow: 0 0 0; + height: 10px; + margin-bottom: 5px; + + .bar { + background: $border-dark-grey none; + color: $text-dark-grey; + height: 100%; + text-align: left; + } + } + + .submit[disabled] { + color: $text-grey; + cursor: default; + + &:hover, + &:active { + background-image: none; + } + } +} + +.poll-content { + margin-top: 5px; + + [type=radio], + label { + font-weight: normal; + margin-bottom: 5px; + vertical-align: middle; + } + + [type=radio], + form .poll-result, + form .progress { + display: none; // Hide the result by default when the vote is possible + } + + form [type=radio] { + display: inline; + } +} diff --git a/app/assets/stylesheets/poltergeist_disable_transition.scss b/app/assets/stylesheets/poltergeist_disable_transition.scss new file mode 100644 index 000000000..61a5c8efa --- /dev/null +++ b/app/assets/stylesheets/poltergeist_disable_transition.scss @@ -0,0 +1,9 @@ +// Overrides used for poltergeist tests +// scss-lint:disable all +* { + -moz-transition: none !important; + -o-transition: none !important; + -webkit-transition: none !important; + transition: none !important; +} +// scss-lint:enable all diff --git a/app/assets/stylesheets/post-content.scss b/app/assets/stylesheets/post-content.scss index 3300d25f5..c58f567e1 100644 --- a/app/assets/stylesheets/post-content.scss +++ b/app/assets/stylesheets/post-content.scss @@ -1,4 +1,6 @@ +.message-content, .post-content { + img { max-width: 100%; } .photo_attachments { margin-top: 7px; padding-bottom: 10px; diff --git a/app/assets/stylesheets/profile.scss b/app/assets/stylesheets/profile.scss index 7c868ff55..727c99fee 100644 --- a/app/assets/stylesheets/profile.scss +++ b/app/assets/stylesheets/profile.scss @@ -1,15 +1,15 @@ #profile_container { .profile_header { - margin-bottom: 20px; - border-left: 1px solid #dddddd; + margin-bottom: 15px; + background-color: $white; padding-left: 10px; + padding-right: 10px; padding-top: 20px; - margin-left: -10px; margin-top: -20px; + box-shadow: $card-shadow; #edit_profile, #unblock_user_button, .aspect_dropdown { - margin-top: 5px; - margin-right: 10px; + margin-top: 15px; } #author_info { @@ -32,18 +32,18 @@ color: $text-grey; &:before { content: '\26aa'; } } - &.entypo.check { color: darken($green,20%); } + &.entypo-check { color: darken($brand-success,20%); } } .description { margin-bottom: 20px; .tag { background-color: transparent; - font-size: $font-size-text; + font-size: $font-size-base; } - .tag:not(.entypo) { + .tag { font-weight: 700; } - .entypo.tag { + .entypo-tag { margin: 0 5px; font-weight: normal; &:hover {text-decoration: none;} @@ -51,9 +51,8 @@ } } - #profile_horizontal_bar { + #profile-horizontal-bar { border-top: 1px dashed $border-grey; - border-bottom: 1px solid $border-grey; min-height: 50px; margin-top: 10px; #profile_buttons { @@ -62,7 +61,7 @@ text-decoration: none; cursor: pointer; margin-right: 25px; - .entypo.profile-header-icon, .profile-header-icon { + .profile-header-icon { font-size: 24.5px; line-height: 30px; color: lighten($black,75%); @@ -75,13 +74,14 @@ ul#profile_nav { list-style: none; margin: 0; + padding: 0; > li { display: inline-block; &.active { - border-bottom: 3px solid $creation-blue; + border-bottom: 3px solid $brand-primary; a { color: $black; - .entypo { color: $black; } + [class^="entypo-"], [class*="entypo-"] { color: $black; } } } a { @@ -89,13 +89,13 @@ font-size: 16px; line-height: 46px; color: lighten($black,50%); - .entypo { + [class^="entypo-"], [class*="entypo-"] { color: lighten($black,50%); margin-right: 2px; } &:hover { color: $black; - .entypo { color: $black; } + [class^="entypo-"], [class*="entypo-"] { color: $black; } text-decoration: none; } } @@ -105,16 +105,19 @@ } #profile { - padding: 10px 20px; + padding: 20px; + margin-bottom: 35px; + #profile_photo { margin-top: 10px; padding-bottom: 10px; - border-bottom: 1px dashed $border-grey; text-align: center; } ul#profile_information { + border-top: 1px dashed $border-grey; margin: 0; + padding: 0; list-style: none; overflow-x: hidden; word-wrap: break-word; @@ -127,4 +130,32 @@ } .stream_container > .pagination { text-align: center; } + + #people_stream { + background-color: $white; + box-shadow: $card-shadow; + } +} + +#email-form{ + padding: 0; + .form-group{ + margin-left: 0; + margin-right: 0; + } +} + +#birth-date{ + text-align: center; + select{ + width: 32%; + display: inline; + &:first-of-type{ float: left; } + &:last-of-type{ float: right; } + } +} + +#update_profile_form { + .profile-visibility-hint { margin-left: 10px; } + .visibility-hint-icon { cursor: default; } } diff --git a/app/assets/stylesheets/publisher.scss b/app/assets/stylesheets/publisher.scss index 8df3350b3..2504f8d34 100644 --- a/app/assets/stylesheets/publisher.scss +++ b/app/assets/stylesheets/publisher.scss @@ -1,10 +1,12 @@ -#publisher { +.publisher { z-index: 1; color: $text-grey; + margin: 0; + margin-bottom: 20px; &.closed { #button_container, - #location_container, + .location-container, #hide_publisher, #photodropzone_container, .counter, @@ -12,40 +14,64 @@ display: none !important; } + .mentions-box { + margin-top: 0; + } + #publisher_textarea_wrapper { border: 1px solid $border-grey !important; } } - .mentions-autocomplete-list ul { width: 100% !important; } + .container-fluid{ padding: 0; } + + .twitter-typeahead { + width: calc(100% + 2px); + + .tt-menu { width: 100%; } + } form { margin: 0; #fileInfo { display: none !important; } - #hide_publisher { - margin-top: 10px; - } #publisher_spinner { + margin: 20px; text-align: center; } .options_and_submit { - #publisher_service_icons { - margin-right: 10px; - .btn-link { - padding-left: 5px; - padding-right: 5px; - text-decoration: none; + padding: 10px 0; + + #publisher-service-icons { + text-decoration: none; + + .entypo-cog, .service_icon { + color: $text-grey; + font-size: 16px; + line-height: 16px; } - .btn-link.question_mark { margin-left: 5px; } - .btn-link.question_mark .entypo { color: $text-grey; } - .btn-link.question_mark:hover .entypo { color: $black; } + .service_icon { padding: 6px 5px; } + .btn.btn-link.question_mark:hover .entypo-cog { color: $black; } .dim { opacity: 0.3; } - .social_media_logos-wordpress-16x16 { + .social-media-logos-wordpress-16x16 { display: inline-block; height: 16px; width: 16px; } } + + @media(max-width: $screen-xs) { + .btn-toolbar { + width: 100%; + display: flex; + .btn, .aspect_dropdown{ flex-grow: 1; } + .aspect_dropdown .btn { width: 100%; } + } + .btn-group:first-child { margin: 0; } + .dropdown-menu.pull-right { + left: 0; + right: auto; + } + } } #publisher_textarea_wrapper { @@ -56,11 +82,11 @@ input[type='text']#status_message_text { border: none; box-shadow: none; - margin: none; + margin: 0; } textarea { - border: none; + border: 0 solid $light-grey; margin: 0; box-shadow: none; resize: none; @@ -68,11 +94,10 @@ } &.active textarea { - min-height: 70px; + min-height: 90px; } - .help-block { - font-size: 13px; + .markdownIndications { line-height: 30px; padding-left: 10px; margin-bottom: 0; @@ -80,20 +105,15 @@ a { color: lighten($blue,20%); } } - .mentions-input-box .mentions { - line-height: $line-height !important; - } - - &.with_attachments .row-fluid#photodropzone_container { + &.with_attachments #photodropzone_container { border-top: 1px dashed $border-grey; } - .row-fluid#poll_creator_container { - display: none; + #poll_creator_container { border-top: 1px dashed $border-grey; padding:4px 6px 4px 6px; box-sizing: border-box; - .remove-answer.entypo.cross { + .remove-answer.entypo-cross { display: none; color: lighten($black,75%); &.active { display: block; } @@ -104,15 +124,7 @@ } } - &.with_location .row-fluid#location_container { - height: 30px; - border-top: 1px dashed $border-grey; - input[type='text'] { - margin-bottom: 0; - color: $text-grey; - } - } - &.active .row-fluid#button_container { + &.active #button_container { border-top: 1px solid $border-grey; } @@ -143,7 +155,7 @@ color: black; font-size: 50px; line-height: 50px; - font-style: bold; + font-weight: bold; position: absolute; z-index: 2; opacity: 0.85; @@ -173,67 +185,103 @@ #upload_error { color: white; - font-style: bold; + font-weight: bold; border-top: 1px solid white; background-color: $red; text-align: center; } - #publisher-images { - margin-right: 5px; - #file-upload, - #locator, - #poll_creator, - #hide_location { - text-decoration: none !important; - font-size: 16px; - padding: 4px 5px; - i { - color: $text-grey; - } - &:hover{ - i { color: black; } - } - input[type='file'] { - cursor: pointer; - &::-webkit-file-upload-button { - cursor: pointer; - } - } - } - #hide_location { - display: none; - } - } - &.with_location #publisher-images { - #hide_location { display: inline-block; } - #locator { display: none; } - } - - .counter { - height: 30px; - line-height: 30px; - position: absolute; - right: 100px; - bottom: -31px; - font-size: 13px; - } - &.with_location .counter { - bottom: -62px; - } - .warning { - color: orange; - } - .exceeded { - color: red; - } } } .aspect_dropdown { .radio { - min-height: 0px; - padding-left: 0px; + min-height: 0; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; } } } + +.publisher-textarea-wrapper { + &:not(.with-location) .location-container, + &.markdown-preview .location-container, + &:not(.with-poll) .poll-creator-container, + &.markdown-preview .poll-creator-container, + &.markdown-preview .photodropzone-container, + &.markdown-preview .publisher-buttonbar { + display: none; + } + + &.with-location .loader { + height: 20px; + width: 20px; + } + + &.with-location .location-container { + border-top: 1px dashed $border-grey; + height: 30px; + margin-bottom: 0; + + [type='text'] { + border: 0; + color: $text-grey; + height: 20px; + margin-bottom: 0; + padding: 0; + } + } + + .counter { + line-height: 30px; + margin-right: 10px; + } + + &:not(.with-location) .publisher-buttonbar { + .hide-location { display: none; } + .locator { display: inline-block; } + } + + &.with-location .publisher-buttonbar { + .hide-location { display: inline-block; } + .locator { display: none; } + } + + &.submitting .mentions-box { display: none; } + + .twitter-typeahead { + left: -1px; + // Override inline rule of Typeahead + // scss-lint:disable ImportantRule + position: absolute !important; + // scss-lint:enable ImportantRule + } + + .mentions-box { + // Leave space for markdown editor header + margin-top: 42px; + } +} + +.publisher-buttonbar { + float: right; + margin-right: 5px; + + .btn.btn-link { + font-size: 16px; + line-height: $line-height-computed; + padding: 4px 2px; + text-decoration: none; + i { color: $text-grey; } + + [type='file'], + [type='file']::-webkit-file-upload-button { + cursor: pointer; + } + } + + .btn.btn-link:hover { + i { color: $black; } + } +} diff --git a/app/assets/stylesheets/registration.scss b/app/assets/stylesheets/registration.scss new file mode 100644 index 000000000..53c65674d --- /dev/null +++ b/app/assets/stylesheets/registration.scss @@ -0,0 +1,53 @@ +.page-registrations.action-new, +.page-registrations.action-create { + .ball { + background: image-url('branding/ball.png') no-repeat; + background-size: contain; + height: 633px; + max-width: 100%; + } + + .v-center { + display: table; + height: 633px; + } + + .content { + display: table-cell; + vertical-align: middle; + + h2 { + font-size: 35px; + margin: 12px; + text-align: center; + } + } + + form { + max-width: 400px; + } + + .captcha-img { + left: 10px; + position: absolute; + top: 169px; + width: 120px; + } + + .captcha-input { + border-bottom: 1px solid $border-grey; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + box-sizing: border-box; + font-size: 16px; + height: 40px; + line-height: $line-height-base; + padding: 10px 10px 10px 130px; + width: 100%; + } + + .terms > a { + color: inherit; + text-decoration: underline; + } +} diff --git a/app/assets/stylesheets/report.scss b/app/assets/stylesheets/report.scss index d964b55cd..4282ad637 100644 --- a/app/assets/stylesheets/report.scss +++ b/app/assets/stylesheets/report.scss @@ -1,21 +1,8 @@ #reports { - padding-top: 2em; - .content { - float: left; - span { - display: block; - } - span.text { - padding-bottom: 1em; - } + .reason { + padding-bottom: 20px; } - .options { - float: right; - } - .clear { - clear: both; - border-bottom: 1px solid #808080; - padding-bottom: 1em; - margin-bottom: 1em; + form input { + margin-right: 5px; } } diff --git a/app/assets/stylesheets/rtl.scss b/app/assets/stylesheets/rtl.scss index b46cf4d8b..15a564872 100644 --- a/app/assets/stylesheets/rtl.scss +++ b/app/assets/stylesheets/rtl.scss @@ -1,151 +1,18 @@ -@import "colors"; - body { direction: rtl; text-align: right; } -#user_menu { - left: 0; - right: auto; -} - -.diaspora_header_logo { - float: right; - margin-left: 1em; - margin-right: 0; -} - -#global_search { - float: right; -} - -#notification_badge, #conversations_badge { - margin: 0 10px 0 -5px; -} - -#nav_badges { - left: auto; - right: 460px; - margin-right: -20px; -} - - -#notification_dropdown { - left: auto; - right: 507px; -} - -#view_all_notifications { - float: left; - margin-right: 0; - margin-left: 3px; -} - -#notification_badge, #conversations_badge { - margin: 0 10px 0 -5px; -} - -#notification_badge a, #conversations_badge a { - right: 0; -} - -.append-2 { - padding-left: 80px; - padding-right: 0px; - float: right; -} - -footer ul#footer_nav { - float: left; -} - .right { left: 0; right: auto; } -.rightBar .right { - margin-right: 70px; -} - -.stream .avatar { - float: right; -} - .stream_element .content { padding-right: 60px; padding-left: 0; } -#publisher_textarea_wrapper textarea { - left: auto; -} - -#publisher_textarea_wrapper #file-upload, #publisher_textarea_wrapper #hide_publisher, #facebox .close { - right: auto; - left: 0; - margin-left: 3px; -} - -#publisher .options_and_submit .public_toggle { - text-align: left; -} - -#publisher #click_to_share img { - right: 0; - left: auto; -} - -#publisher #click_to_share span { - margin-right: 12px; - margin-left: 0; -} - -#publisher_textarea_wrapper #photodropzone { - right: 5px; - left: auto; -} - -#publisher_textarea_wrapper #photodropzone li .circle { - left: -7px; - right: auto; -} - -#publisher_textarea_wrapper #photodropzone li .x { - left: -1px; - right: auto; -} - -#webSocketContainer { - left: auto !important; - right: -100px; -} - -header ul#user_menu { - padding: 5px 30px 5px 5px; - right: auto; - margin: -2px 0 0 -5px; -} - -header ul#user_menu .avatar { - left: auto; - right: 2px; -} - -header ul#user_menu a { - padding-left: 15px; -} - -header ul#user_menu .right { - right: auto; - left: 5px; -} - -#sort_by { - float: left; -} - .stream_element .right { left: 12px; right: auto; @@ -179,64 +46,21 @@ form p.checkbox_select label { left: auto; } -.prepend-5 { - float: right; - padding-right: 200px; - padding-left: 0; -} - #update_profile_form h4 textarea[placeholder] { right: -9999px; left: auto; } -.prepend-8 { - padding-right: 320px; - padding-left: 0; -} - -.span-2 { - float: right; - text-align: right; - margin-left: 0; - margin-right: 10px; -} - -#facebox_header h3, #facebox_header h4 { - text-align: right; -} - -textarea.comment_box { - left: auto; - right: -9999px; -} - label { right: 0.48em; left: auto; } -ul#settings_nav { - right: 198px; - left: auto; -} - ul, ol { margin: 0 0 1.5em 1.5em; padding-right: 3.333em; } -ul#settings_nav > li { - margin-left: 1em; - margin-right: 0; -} - -.column, .span-1, .span-2, .span-3, .span-4, .span-5, .span-6, .span-7, .span-8, .span-9, .span-10, .span-11, .span-12, .span-13, .span-14, .span-15, .span-16, .span-17, .span-18, .span-19, .span-20, .span-21, .span-22, .span-23, .span-24 { - float: right; - margin-left: 10px; - margin-right: 0; -} - .last { margin-left: 0; } @@ -256,36 +80,7 @@ ul.comments li form p, ul.show_comments li form p, div.likes li form p, div.disl left: 20px; } -.aspect_list .name { - right: 1em; - left: auto; -} - -.aspect_list ul > li .right { - left: 1em; - right: auto; -} - -.share_with .add_aspect .right { - right: auto; - left: 1em; -} - -.share_with .done .right { - right: auto; - left: 1em; -} - -.share_with .add_aspect p { - padding-right: 1em; - padding-left: 0; -} - -#facebox { - text-align: right; -} - -.stream_element.conversation .message_count { +.stream_element.conversation .message-count { right: auto; left: 10px; } @@ -295,30 +90,6 @@ ul.comments li form p, ul.show_comments li form p, div.likes li form p, div.disl left: 10px; } -ul.left_nav .item_count, ul.left_nav .edit { - float: left; -} - -.conversation_participants .right, .stream .new_message .right { - right: auto; - left: 0; -} - -.prepend-9 { - padding-left: 0; - padding-right: 361px; -} - -.stream_container { - border-left: 0; - border-right: 1px solid $border-grey; -} - -.stream .new_message .right input[type=reset] { - float: left; - margin-right: 10px; -} - div.content span.rtl { display: block; } diff --git a/app/assets/stylesheets/settings.scss b/app/assets/stylesheets/settings.scss new file mode 100644 index 000000000..11cb5b13f --- /dev/null +++ b/app/assets/stylesheets/settings.scss @@ -0,0 +1,38 @@ +// Specific styles for the settings pages (profile, user account, privacy, services) + +// These names are generated by a rails controller +// scss-lint:disable SelectorFormat +.page-profiles.action-edit, +.page-services.action-index, +.page-user_applications, +.page-users.action-edit, +.page-users.action-update, +.page-users.action-privacy_settings { + .framed-content { + padding-left: 10px; + padding-right: 10px; + } +} +// scss-lint:enable SelectorFormat + +.enclosed-checkbox label { + margin-bottom: 0; +} + +.profile-photo-upload { + text-align: center; + + .avatar { + height: auto; + margin-bottom: 20px; + max-width: 200px; + width: auto; + } +} + +.settings-visibility { margin-left: 10px; } + +.page-profiles.action-edit textarea { + max-width: 100%; + min-width: 100%; +} diff --git a/app/assets/stylesheets/sidebar.scss b/app/assets/stylesheets/sidebar.scss index 28d012ceb..1df833b42 100644 --- a/app/assets/stylesheets/sidebar.scss +++ b/app/assets/stylesheets/sidebar.scss @@ -1,61 +1,20 @@ -.rightBar { - padding-top: 20px; +.sidebar, +.framed-content { + background-color: $white; + border: 1px solid $light-grey; + border-top: 0; + box-shadow: $card-shadow; - .section { - margin-bottom: 20px; + .header, + .sidebar-header { + padding-left: 10px; + padding-right: 10px; - > .title { - border-bottom: 1px solid $border-grey; - padding-bottom: 2px; - - &.no_icon { padding-left: 8px; } - - h5 { - color: $text-dark-grey; - font-weight: bold; - font-size: 13px; - margin: 0; - &.title-header { margin-left: 5px; } - } - } - - .content { - color: $text-grey; - font-size: 11px; - line-height: 18px; - padding: 5px; - - p, ul { margin: 0; } - - ul { - margin-bottom: 5px; - padding-left: 0; - li { list-style: none; } - } - - & > #invite_code { - box-sizing: border-box; - font-size: 11px; - height: 30px; - width: 100%; - } - - & > #right_service_icons { - text-align: center; - padding: 10px { - bottom: 0; - }; - .social_media_logos-facebook-24x24, - .social_media_logos-twitter-24x24, - .social_media_logos-tumblr-24x24, - .social_media_logos-wordpress-24x24 { - height: 24px; - width: 24px; - } - a { - display: inline-block; - } - } + h3 { + line-height: 40px; + margin: 7px 0; } } + + .list-group { margin-bottom: 0; } } diff --git a/app/assets/stylesheets/single-post-view.scss b/app/assets/stylesheets/single-post-view.scss index d39f20d42..e0cb2894e 100644 --- a/app/assets/stylesheets/single-post-view.scss +++ b/app/assets/stylesheets/single-post-view.scss @@ -3,11 +3,9 @@ } #single-post-content { - border-right: solid 1px #cccccc; - padding-right: 12px; - #head { - padding-bottom: 10px; + .head { border-bottom: 1px solid $border-grey; + padding: 10px 0; #post-info { .author{ color: $grey; } .info { @@ -17,26 +15,34 @@ .post_scope { margin-right: 5px; } .status-message-location { padding-top: 2px; - line-height: $font-size-text; + line-height: $font-size-base; } } .bd { padding-left: 10px; } } - .row-fluid.reshare { + .near-from { + color: $text-grey; + font-size: 12px; + margin: 10px 15px 0; + } + .mapContainer { + margin: 10px 15px 0; + } + .reshare.row { border-top: 1px solid lighten($border-grey,5%); padding-top: 10px; margin-top: 10px; } #reshare-info { line-height: 15px; - i.retweet { + i.entypo-reshare { color: $text-dark-grey; font-size: 28px; line-height: 30px; - margin-left: 8px; - margin-right: 8px; + margin-left: 7px; + margin-right: 7px; } .post-context { font-size: 12px; @@ -60,24 +66,23 @@ .img { margin-right: 10px; } } #single-post-actions { - padding-right: 5px; i { font-size: 28px; line-height: 30px; } - i.comment:hover { + i.entypo-comment:hover { color: #424242; } .post_report i.gray:hover { color: $red; } - i.heart.gray:hover { + i.entypo-heart.gray:hover { color: $red; } - i.heart.red:hover { + i.entypo-heart.red:hover { color: #f55f5a; } - i.retweet:hover { + i.entypo-reshare:hover { color: #3f8fba; } time { @@ -93,49 +98,27 @@ } } - #body { - margin-left: 20px; - padding-top: 20px; - width: auto; - - #real-post-content div.reshare { - border-left: 2px solid #DDD; - padding-left: 10px; - } + .body { + padding: 20px 15px; .nsfw-off { display: none; } .nsfw-shield { display: none; } - .oembed { width: 95%; } - .photo_attachments { - img.big_stream_photo { max-width: 90%; } - } } } #single-post-interactions { - border-left: 1px solid #cccccc; - position: relative; - left: -1px; - margin-left: 0; - padding-left: 15px; - .comment.media .img { - margin-left: 5px; - } - - .no_comments { + > .framed-content { padding-top: 10px; - padding-bottom: 10px; - background-color: $background-grey; - text-align: center; - border-radius: 4px; - margin-bottom: 30px; } + .no-comments { text-align: center; } + a { color: $blue; } .count { + float: left; i { display: inline-block; text-align: center; @@ -152,5 +135,16 @@ #reshares, #likes, #comments-meta { margin-left: 7px; margin-bottom: 8px; + img{ display: inline; } + } + + .comments > .comment, + .comment.new-comment-form-wrapper { + padding: 10px; + } + + .count, + .interaction-avatars { + line-height: 25px; } } diff --git a/app/assets/stylesheets/sizes.scss b/app/assets/stylesheets/sizes.scss deleted file mode 100644 index 3679382d4..000000000 --- a/app/assets/stylesheets/sizes.scss +++ /dev/null @@ -1,2 +0,0 @@ -$font-size-text: 13px; -$line-height: 20px; diff --git a/app/assets/stylesheets/spinner.scss b/app/assets/stylesheets/spinner.scss new file mode 100644 index 000000000..9302fc434 --- /dev/null +++ b/app/assets/stylesheets/spinner.scss @@ -0,0 +1,28 @@ +#paginate, #infscr-loading { + margin-top: 10px; + padding: 8px 0; + text-align: center; + width: 100%; + display: block; + clear: both; +} + +.loader { + display: inline-block; + width : 32px; + height: 32px; +} + +.spinner { + width: 100%; + height: 100%; + margin: auto; + border-radius: 50%; + border-width: 3px; + border-style: solid; + border-color: $border-dark-grey transparent $border-dark-grey $border-dark-grey; + animation-duration: 1s; + animation-iteration-count: infinite; + animation-name: spinner; + animation-timing-function: linear; +} diff --git a/app/assets/stylesheets/sprites.scss b/app/assets/stylesheets/sprites.scss index e78a5c3d9..981e20cc3 100644 --- a/app/assets/stylesheets/sprites.scss +++ b/app/assets/stylesheets/sprites.scss @@ -1,7 +1,5 @@ /* ===== sprites ===== */ -@import 'icons/*.png'; @import 'branding/logos/*.png'; -@import 'social_media_logos/*.png'; -@include all-icons-sprites; +@import 'social-media-logos/*.png'; @include all-logos-sprites; -@include all-social_media_logos-sprites; +@include all-social-media-logos-sprites; diff --git a/app/assets/stylesheets/statistics.scss b/app/assets/stylesheets/statistics.scss index 983fbd1b7..891b34005 100644 --- a/app/assets/stylesheets/statistics.scss +++ b/app/assets/stylesheets/statistics.scss @@ -4,11 +4,11 @@ h3{ margin: 0px; padding: 10px; - background-color: $green; + background-color: $brand-success; } - .span-3 { - width: 30%; + .statistic { + width: 100%; height: 150px; text-align: center; border: 1px solid $border-grey; @@ -25,4 +25,4 @@ background-color: $background-grey; } } -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/stream-faces.scss b/app/assets/stylesheets/stream-faces.scss deleted file mode 100644 index b05f19f43..000000000 --- a/app/assets/stylesheets/stream-faces.scss +++ /dev/null @@ -1,7 +0,0 @@ -#selected_aspect_contacts .avatar { - height: 32px; - width: 32px; - margin-bottom: 2px; -} - -.stream-faces a:hover { text-decoration: none; } diff --git a/app/assets/stylesheets/stream.scss b/app/assets/stylesheets/stream.scss index 55545d529..56bc4d5a6 100644 --- a/app/assets/stylesheets/stream.scss +++ b/app/assets/stylesheets/stream.scss @@ -1,11 +1,26 @@ .stream_container { - border-left: 1px solid $border-grey; - padding-left: 10px; - padding-top: 20px; - margin-left: -10px; - margin-top: -20px; - #publisher { - margin-bottom: 15px; + .stream-title { + margin: 12px 0; + } +} + +.main-stream-publisher { + margin-top: 20px; + padding: 0; + + .avatar { + height: 50px; + width: 50px; + } + + .publisher { + margin-left: 65px; + } +} + +@media(max-width: $screen-xs-max) { + + .main-stream-publisher .publisher { + margin-left: 0; } - .well#ignore-info { text-align: center; } } diff --git a/app/assets/stylesheets/stream_element.scss b/app/assets/stylesheets/stream_element.scss index 0258500e1..26899f05f 100644 --- a/app/assets/stylesheets/stream_element.scss +++ b/app/assets/stylesheets/stream_element.scss @@ -1,5 +1,5 @@ -#main_stream .stream_element, -#main_stream > div > .photo { +.stream_element, +.photo { & > .media { margin: 0px; } @@ -9,41 +9,72 @@ } } -#main_stream > div > .photo { - & > .media { +.photo { + > .media { overflow: visible; - > .bd { - position: relative; - overflow: inherit; - > .control-icons { - border-radius: 4px; - padding-left: 5px; - position: absolute; - right: 6px; - text-align: center; - top: 1px; - } + position: relative; + + .control-icons { + background: $white; + border-radius: 4px; + padding-left: 4px; + position: absolute; + right: 4px; + text-align: center; + top: 1px; } - &:hover > .bd > .control-icons { background: #fff; } } + .thumbnail { - height: 200px; + background: $white; + border-radius: 0; + box-shadow: $card-shadow; + height: 240px; + margin: 0 0 15px; padding: 10px; - margin: 0 5px 10px; + + // Vertically align the image text-align: center; - line-height: 200px; - border: 1px solid $border-grey; - background: #fefefe; - box-shadow: 3px 3px 2px #eee; - img { - &.big_photo { max-height: 200px; } + white-space: nowrap; + + &:hover, + &:focus, + &:active { + border-color: $light-grey; + text-decoration: none; + } + + &::before { + content: ''; + display: inline-block; + height: 100%; + vertical-align: middle; + } + + .big-photo { + display: inline; + margin-left: -4px; + max-height: 200px; + vertical-align: middle; } } } #main_stream .stream_element { - border-bottom: 1px solid $border-grey; + margin-bottom: 20px; + border: 1px solid $light-grey; + box-shadow: $card-shadow; + + &.highlighted { + border-left: 3px solid $brand-primary; + padding-left: 8px; + } +} + +.stream_element { + background-color: $white; padding: 10px; + & > .media { &.shield-active .nsfw-hidden { display: none; } &:not(.shield-active) .nsfw-shield { display: none; } @@ -62,31 +93,9 @@ a.author-name { color: $blue; } .feedback { margin-top: 5px; - font-size: 11px; - line-height: 11px; + font-size: $font-size-small; + line-height: $font-size-small; } - .likes { - margin-top: 10px; - font-size: 12px; - line-height: 16px; - .bd { display: inline-block; } - .entypo.heart { - display: inline-block; - font-size: 16px; - vertical-align: top; - margin-top: -2px; - margin-right: 5px; - } - } - .stream_photo { - float: left; - margin-top: 6px; - } - .status-message-location .near-from { - font-size: 11px; - color: $text-grey; - } - .grey { color: $text-grey; } .post-content p:last-of-type { margin-bottom: 0; } .nsfw-shield { color: $text-grey; @@ -97,6 +106,16 @@ } } + .permalink { + @include transition(opacity); + opacity: 0; + } + + &:hover .permalink { + opacity: .8; + &:hover { opacity: 1; } + } + div.reshare { border-left: 2px solid $border-grey; margin-top: 3px; @@ -135,13 +154,40 @@ } } - &.highlighted { - padding-left: 8px; - border-left: 3px solid $creation-blue; + .likes, + .reshares { + font-size: 12px; + line-height: 16px; + margin-top: 10px; + + .author-name, + .bd { + display: inline-block; + } + + .author-name { margin-right: 3px; } + + .entypo-heart, + .entypo-reshare { + display: inline-block; + font-size: 16px; + line-height: $line-height-computed; + margin-right: 5px; + vertical-align: top; + } } - &.post_preview { - background-color: lighten($creation-blue,45%); - border: 1px solid $creation-blue; + .status-message-location { + color: $text-grey; + font-size: $font-size-small; + } + + .leaflet-control-zoom { + display: block; + } + + .no-posts-info { + margin-bottom: 10px; + margin-top: 10px; } } diff --git a/app/assets/stylesheets/tag.scss b/app/assets/stylesheets/tag.scss index aa49a815d..a167fafe8 100644 --- a/app/assets/stylesheets/tag.scss +++ b/app/assets/stylesheets/tag.scss @@ -22,27 +22,30 @@ h1.tag { &:hover { border-bottom: 1px solid $border-dark-grey; } } } +.page-tags { + #tags_show { + .sidebar { + h3 { + font-size: 13px; + line-height: 1.1; + } -#tags_show { - .span3 { - h4 { margin: 25px 0 15px; } - .side_stream #people_stream { - .name { display: block; } - .name, .diaspora_handle, .tags { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; + .side_stream #people_stream { + .name { display: block; } + .name, .diaspora_handle { + word-break: break-all; + } + } + } + .col-md-9 { + .tag-following-action { + max-width: 100%; + input[type="submit"] { + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; + } } } } - .span7 { - .tag-following-action { - max-width: 100%; - input[type="submit"] { - overflow: hidden; - text-overflow: ellipsis; - max-width: 100%; - } - } - } } diff --git a/app/assets/stylesheets/terms.scss b/app/assets/stylesheets/terms.scss new file mode 100644 index 000000000..94eec299c --- /dev/null +++ b/app/assets/stylesheets/terms.scss @@ -0,0 +1,3 @@ +#terms { + .nav-tabs { margin-top: 40px; } +} diff --git a/app/assets/stylesheets/timeago.scss b/app/assets/stylesheets/timeago.scss new file mode 100644 index 000000000..cbc0e917b --- /dev/null +++ b/app/assets/stylesheets/timeago.scss @@ -0,0 +1,3 @@ +.timeago { + color: $text-grey; +} diff --git a/app/assets/stylesheets/typeahead.scss b/app/assets/stylesheets/typeahead.scss new file mode 100644 index 000000000..7f427c097 --- /dev/null +++ b/app/assets/stylesheets/typeahead.scss @@ -0,0 +1,34 @@ +.tt-menu { + background-color: $navbar-inverse-bg; + box-shadow: 0 5px 10px rgba(0,0,0,.2); +} + +.navbar.navbar-fixed-top .tt-menu { + margin-top: ($navbar-height - $input-height-small) / 2; + width: 300px; +} + +.tt-suggestion { + border-top: 1px solid $gray-dark; + color: $white; + cursor: pointer; + line-height: 20px; + &.tt-cursor { + background-color: $brand-primary; + border-top: 1px solid $brand-primary; + } + + &.search-suggestion-person { + padding: 8px; + .avatar { + height: 40px; + margin-right: 8px; + width: 40px; + } + .diaspora-id { font-size: $font-size-small; } + } + &.search-suggestion-hashtag { + padding: 8px 20px; + .name { line-height: 25px; } + } +} diff --git a/app/assets/stylesheets/typography.scss b/app/assets/stylesheets/typography.scss new file mode 100644 index 000000000..0aa346ae1 --- /dev/null +++ b/app/assets/stylesheets/typography.scss @@ -0,0 +1,23 @@ +// diaspora custom icons font +@font-face { + font-family: 'diaspora-custom'; + src: image-url('fonts/diaspora-custom.ttf'); + font-weight: normal; + font-style: normal; + +} + +[class^="diaspora-custom-"]:before, +[class*=" diaspora-custom-"]:before { + font-family: 'diaspora-custom'; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-style: normal; + font-variant: normal; + font-weight: normal; + text-transform: none; +} + +.diaspora-custom-compose:before { + content: 'a'; +} diff --git a/app/assets/stylesheets/user_applications.scss b/app/assets/stylesheets/user_applications.scss new file mode 100644 index 000000000..87a0005ce --- /dev/null +++ b/app/assets/stylesheets/user_applications.scss @@ -0,0 +1,35 @@ +.application-img { + float: left; + margin: 9px 0; + max-height: 60px; + text-align: center; + width: 60px; + + [class^="entypo-"] { + font-size: 60px; + height: 60px; + margin: 0; + padding: 0; + width: 100%; + + &::before { + position: relative; + top: -15px; + } + } +} + +.application-authorizations { + display: inline-block; + float: right; + padding: 0 0 15px 15px; + width: calc(100% - 60px); +} + +.application-tos-policy > b { + &:first-child { margin-right: 5px; } + &:nth-child(2) { margin-left: 5px; } +} + +.user-consent { margin-top: 20px; } +.approval-button { display: inline; } diff --git a/app/assets/stylesheets/vendor/autoSuggest.css b/app/assets/stylesheets/vendor/autoSuggest.css index 760365e3c..df97073d9 100644 --- a/app/assets/stylesheets/vendor/autoSuggest.css +++ b/app/assets/stylesheets/vendor/autoSuggest.css @@ -1,212 +1,185 @@ /* AutoSuggest CSS - Version 1.2 */ ul.as-selections { - list-style-type: none; - border: 1px solid #ccc; - margin: 0; - overflow: auto; - background-color: #fff; - border-radius: 3px; - /* 1% padding (all sides) + 98% width = 100% */ - padding: 1%; - width: 98%; -} - -ul.as-selections.loading { - background: asset_path("ajax-loader.gif") right center no-repeat; + list-style-type: none; + margin: 0; + overflow: auto; + background-color: #fff; + border-radius: 3px; + width: 100%; + padding: 0; } ul.as-selections li { - float: left; - margin: 1px 4px 1px 0; - cursor: pointer; + float: left; + margin: 1px 4px 1px 0; + cursor: pointer; } ul.as-selections li.as-selection-item { - color: #2b3840; - font-size: 13px; - text-shadow: 0 1px 1px #fff; - background-color: #ddeefe; - background-image: gradient(linear, 0% 0%, 0% 100%, from(#ddeefe), to(#bfe0f1)); - border: 1px solid #acc3ec; - padding: 0; + color: #2b3840; + font-size: 13px; + text-shadow: 0 1px 1px #fff; + background-color: #ddeefe; + background-image: gradient(linear, 0% 0%, 0% 100%, from(#ddeefe), to(#bfe0f1)); + border: 1px solid #acc3ec; + padding: 0; padding-top: 6px; padding-bottom: 6px; padding-left: 6px; - border-radius: 5px; - box-shadow: 0 1px 1px #e4edf2; + border-radius: 5px; + box-shadow: 0 1px 1px #e4edf2; line-height: 10px; - margin-top: -1px; margin-bottom: 10px; } ul.as-selections li.as-selection-item:last-child { - margin-left: 30px; + margin-left: 30px; } ul.as-selections li.as-selection-item a.as-close { - float: right; - margin: 0px 3px 0 0px; - padding: 0 3px; - cursor: pointer; - color: #5491be; - font-family: "Helvetica", helvetica, arial, sans-serif; - font-size: 14px; - font-weight: bold; - text-shadow: 0 1px 1px #fff; - transition: color .1s ease-in; + float: right; + margin: 0px 3px 0 0px; + padding: 0 3px; + cursor: pointer; + color: #5491be; + font-family: "Helvetica", helvetica, arial, sans-serif; + font-size: 14px; + font-weight: bold; + text-shadow: 0 1px 1px #fff; + transition: color .1s ease-in; } ul.as-selections li.as-selection-item.blur { - color: #666666; - background-color: #f4f4f4; - background-image: gradient(linear, 0% 0%, 0% 100%, from(#f4f4f4), to(#d5d5d5)); - border-color: #bbb; - border-top-color: #ccc; - box-shadow: 0 1px 1px #e9e9e9; + color: #666666; + background-color: #f4f4f4; + background-image: gradient(linear, 0% 0%, 0% 100%, from(#f4f4f4), to(#d5d5d5)); + border-color: #bbb; + border-top-color: #ccc; + box-shadow: 0 1px 1px #e9e9e9; } ul.as-selections li.as-selection-item.blur a.as-close { - color: #999; + color: #999; } ul.as-selections li:hover.as-selection-item { - color: #2b3840; - background-color: #bbd4f1; - background-image: gradient(linear, 0% 0%, 0% 100%, from(#bbd4f1), to(#a3c2e5)); - border-color: #6da0e0; - border-top-color: #8bb7ed; + color: #2b3840; + background-color: #bbd4f1; + background-image: gradient(linear, 0% 0%, 0% 100%, from(#bbd4f1), to(#a3c2e5)); + border-color: #6da0e0; + border-top-color: #8bb7ed; } ul.as-selections li:hover.as-selection-item a.as-close { - color: #4d70b0; + color: #4d70b0; } ul.as-selections li.as-selection-item.selected { - border-color: #1f30e4; + border-color: #1f30e4; } ul.as-selections li.as-selection-item a:hover.as-close { - color: #1b3c65; + color: #1b3c65; } ul.as-selections li.as-selection-item a:active.as-close { - color: #4d70b0; + color: #4d70b0; } ul.as-selections li.as-original { - margin-left: 0; + width: 100%; + margin: 0; list-style: none; + padding: 0; } ul.as-selections li.as-original input { - border: none; - outline: none; - font-size: 13px; - width: auto; - padding: 0; - margin: 0; - height: 20px; - line-height: 20px; - width: 300px; -} - -ul.as-selections li.as-original.as-original{ - width: auto; + outline: none; + font-size: 13px; + margin: 0; + line-height: 20px; + width: 100%; } ul.as-list { - position: absolute; - list-style-type: none; + position: absolute; + list-style-type: none; list-style: none; - margin: 2px 0 0 0; - padding: 0; - font-size: 13px; - color: #000; - background-color: #fff; - background-color: rgba(255,255,255,0.95); - z-index: 2; - box-shadow: 0 2px 12px #222; - border-radius: 5px; + margin: 2px 0 0 0; + padding: 0; + font-size: 13px; + color: #000; + background-color: #fff; + background-color: rgba(255,255,255,0.95); + z-index: 2; + box-shadow: 0 2px 12px #222; + border-radius: 5px; } li.as-result-item, li.as-message { - margin: 0 0 0 0; - padding: 5px; - background-color: transparent; - border: 1px solid #fff; - border-bottom: 1px solid #ddd; - cursor: pointer; - border-radius: 3px; + margin: 0 0 0 0; + padding: 5px; + background-color: transparent; + border: 1px solid #fff; + border-bottom: 1px solid #ddd; + cursor: pointer; + border-radius: 3px; } li:first-child.as-result-item { - margin: 0; + margin: 0; } li.as-message { - margin: 0; - cursor: default; + margin: 0; + cursor: default; } li.as-result-item.active { - background-color: #3668d9; - background-image: gradient(linear, 0% 0%, 0% 64%, from(rgb(110, 129, 245)), to(rgb(62, 82, 242))); - border-color: #3342e8; - color: #fff; - text-shadow: 0 1px 2px #122042; + background-color: #3668d9; + background-image: gradient(linear, 0% 0%, 0% 64%, from(rgb(110, 129, 245)), to(rgb(62, 82, 242))); + border-color: #3342e8; + color: #fff; + text-shadow: 0 1px 2px #122042; } li.as-result-item em { - font-style: normal; - background: #444; - padding: 0 2px; - color: #fff; + font-style: normal; + background: #444; + padding: 0 2px; + color: #fff; } li.as-result-item.active em { - background: #253f7a; - color: #fff; -} - -/* Webkit Hacks */ -@media screen and (-webkit-min-device-pixel-ratio:0) { - ul.as-selections li.as-selection-item { - padding-top: 6px; - padding-bottom: 6px; - } - ul.as-selections li.as-selection-item a.as-close { - margin-top: -1px; - } - ul.as-selections li.as-original input { - height: 20px; - } + background: #253f7a; + color: #fff; } /* Opera Hacks */ @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) { - ul.as-list { - border: 1px solid #ccc; - } - ul.as-selections li.as-selection-item a.as-close { - margin-left: 4px; - margin-top: 0; - } + ul.as-list { + border: 1px solid #ccc; + } + ul.as-selections li.as-selection-item a.as-close { + margin-left: 4px; + margin-top: 0; + } } /* IE Hacks */ ul.as-list { - border: 1px solid #ccc\9; + border: 1px solid #ccc\9; } ul.as-selections li.as-selection-item a.as-close { - margin-left: 4px\9; - margin-top: 0\9; + margin-left: 4px\9; + margin-top: 0\9; } /* Firefox 3.0 Hacks */ ul.as-list, x:-moz-any-link, x:default { - border: 1px solid #ccc; + border: 1px solid #ccc; } BODY:first-of-type ul.as-list, x:-moz-any-link, x:default { /* Target FF 3.5+ */ - border: none; + border: none; } diff --git a/app/assets/templates/activity-streams-photo_tpl.jst.hbs b/app/assets/templates/activity-streams-photo_tpl.jst.hbs deleted file mode 100644 index 6908cb400..000000000 --- a/app/assets/templates/activity-streams-photo_tpl.jst.hbs +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/assets/templates/aspect_create_modal_tpl.jst.hbs b/app/assets/templates/aspect_create_modal_tpl.jst.hbs index bcb326553..00cd08d22 100644 --- a/app/assets/templates/aspect_create_modal_tpl.jst.hbs +++ b/app/assets/templates/aspect_create_modal_tpl.jst.hbs @@ -1,40 +1,51 @@ -