Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
a1batross
pleroma
Commits
ecb3386f
Commit
ecb3386f
authored
Dec 14, 2019
by
rinpatch
Browse files
Merge branch 'release/1.1.7' into 'stable'
Release/1.1.7 See merge request
!2065
parents
0ba3f1ff
3b407a9a
Changes
49
Expand all
Hide whitespace changes
Inline
Side-by-side
.gitlab-ci.yml
View file @
ecb3386f
...
...
@@ -47,19 +47,19 @@ docs-build:
unit-testing
:
stage
:
test
services
:
-
name
:
lainsoykaf/postgres-with-rum
-
name
:
postgres:9.6
alias
:
postgres
command
:
[
"
postgres"
,
"
-c"
,
"
fsync=off"
,
"
-c"
,
"
synchronous_commit=off"
,
"
-c"
,
"
full_page_writes=off"
]
script
:
-
mix deps.get
-
mix ecto.create
-
mix ecto.migrate
-
mix coveralls
--trace
--preload-modules
-
mix coveralls --preload-modules
unit-testing-rum
:
stage
:
test
services
:
-
name
:
lainsoykaf
/postgres-with-rum
-
name
:
minibikini
/postgres-with-rum
:12
alias
:
postgres
command
:
[
"
postgres"
,
"
-c"
,
"
fsync=off"
,
"
-c"
,
"
synchronous_commit=off"
,
"
-c"
,
"
full_page_writes=off"
]
variables
:
...
...
@@ -69,7 +69,7 @@ unit-testing-rum:
-
mix ecto.create
-
mix ecto.migrate
-
"
mix
ecto.migrate
--migrations-path
priv/repo/optional_migrations/rum_indexing/"
-
mix test
--trace
--preload-modules
-
mix test --preload-modules
lint
:
stage
:
test
...
...
CHANGELOG.md
View file @
ecb3386f
...
...
@@ -3,6 +3,29 @@ All notable changes to this project will be documented in this file.
The format is based on
[
Keep a Changelog
](
https://keepachangelog.com/en/1.0.0/
)
.
## [1.1.7] - 2019-12-13
### Fixed
-
OTP: Inability to set the upload limit
-
OTP: Inability to override node name/distribution type to run 2 Pleroma instances on the same machine
### Added
-
Integrated captcha provider
### Changed
-
Captcha enabled by default
-
Default Captcha provider changed from
`Pleroma.Captcha.Kocaptcha`
to
`Pleroma.Captcha.Native`
-
Better
`Cache-Control`
header for static content
### Bundled Pleroma-FE Changes
#### Added
-
Icons in the navigation panel
#### Fixed
-
Improved support unauthenticated view of private instances
#### Removed
-
Whitespace hack on empty post content
## [1.1.6] - 2019-11-19
### Fixed
-
Not being able to log into to third party apps when the browser is logged into mastofe
...
...
config/config.exs
View file @
ecb3386f
...
...
@@ -52,9 +52,9 @@ config :pleroma, Pleroma.Repo,
migration_lock:
nil
config
:pleroma
,
Pleroma
.
Captcha
,
enabled:
fals
e
,
enabled:
tru
e
,
seconds_valid:
60
,
method:
Pleroma
.
Captcha
.
Kocaptcha
method:
Pleroma
.
Captcha
.
Native
config
:pleroma
,
:hackney_pools
,
federation:
[
...
...
@@ -70,8 +70,6 @@ config :pleroma, :hackney_pools,
timeout:
300_000
]
config
:pleroma
,
Pleroma
.
Captcha
.
Kocaptcha
,
endpoint:
"https://captcha.kotobank.ch"
# Upload configuration
config
:pleroma
,
Pleroma
.
Upload
,
uploader:
Pleroma
.
Uploaders
.
Local
,
...
...
config/test.exs
View file @
ecb3386f
...
...
@@ -93,3 +93,5 @@ else
"You may want to create test.secret.exs to declare custom database connection parameters."
)
end
config
:pleroma
,
Pleroma
.
Captcha
.
Kocaptcha
,
endpoint:
"https://captcha.kotobank.ch"
lib/pleroma/captcha/native.ex
0 → 100644
View file @
ecb3386f
# Pleroma: A lightweight social networking server
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma
.
Captcha
.
Native
do
import
Pleroma
.
Web
.
Gettext
alias
Pleroma
.
Captcha
.
Service
@behaviour
Service
@impl
Service
def
new
do
case
Captcha
.
get
()
do
{
:timeout
}
->
%{
error:
dgettext
(
"errors"
,
"Captcha timeout"
)}
{
:ok
,
answer_data
,
img_binary
}
->
%{
type:
:native
,
token:
token
(),
url:
"data:image/png;base64,"
<>
Base
.
encode64
(
img_binary
),
answer_data:
answer_data
}
end
end
@impl
Service
def
validate
(
_token
,
captcha
,
captcha
)
when
not
is_nil
(
captcha
),
do
:
:ok
def
validate
(
_token
,
_captcha
,
_answer
),
do
:
{
:error
,
dgettext
(
"errors"
,
"Invalid CAPTCHA"
)}
defp
token
do
10
|>
:crypto
.
strong_rand_bytes
()
|>
Base
.
url_encode64
(
padding:
false
)
end
end
lib/pleroma/plugs/parsers_plug.ex
0 → 100644
View file @
ecb3386f
# Pleroma: A lightweight social networking server
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma
.
Plugs
.
Parsers
do
@moduledoc
"Initializes Plug.Parsers with upload limit set at boot time"
@behaviour
Plug
def
init
(
_opts
)
do
Plug
.
Parsers
.
init
(
parsers:
[
:urlencoded
,
:multipart
,
:json
],
pass:
[
"*/*"
],
json_decoder:
Jason
,
length:
Pleroma
.
Config
.
get
([
:instance
,
:upload_limit
]),
body_reader:
{
Pleroma
.
Web
.
Plugs
.
DigestPlug
,
:read_body
,
[]}
)
end
defdelegate
call
(
conn
,
opts
),
to:
Plug
.
Parsers
end
lib/pleroma/web/endpoint.ex
View file @
ecb3386f
...
...
@@ -12,7 +12,7 @@ defmodule Pleroma.Web.Endpoint do
plug
(
Pleroma
.
Plugs
.
HTTPSecurityPlug
)
plug
(
Pleroma
.
Plugs
.
UploadedMedia
)
@static_cache_control
"public
, no-cach
e"
@static_cache_control
"public
max-age=86400 must-revalidat
e"
# InstanceStatic needs to be before Plug.Static to be able to override shipped-static files
# If you're adding new paths to `only:` you'll need to configure them in InstanceStatic as well
...
...
@@ -61,14 +61,7 @@ defmodule Pleroma.Web.Endpoint do
plug
(
Plug
.
RequestId
)
plug
(
Plug
.
Logger
)
plug
(
Plug
.
Parsers
,
parsers:
[
:urlencoded
,
:multipart
,
:json
],
pass:
[
"*/*"
],
json_decoder:
Jason
,
length:
Pleroma
.
Config
.
get
([
:instance
,
:upload_limit
]),
body_reader:
{
Pleroma
.
Web
.
Plugs
.
DigestPlug
,
:read_body
,
[]}
)
plug
(
Pleroma
.
Plugs
.
Parsers
)
plug
(
Plug
.
MethodOverride
)
plug
(
Plug
.
Head
)
...
...
lib/pleroma/web/nodeinfo/nodeinfo_controller.ex
View file @
ecb3386f
...
...
@@ -46,6 +46,7 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do
data
|>
Map
.
merge
(%{
quarantined_instances:
quarantined
})
|>
Map
.
put
(
:enabled
,
Config
.
get
([
:instance
,
:federating
]))
else
%{}
end
...
...
mix.exs
View file @
ecb3386f
...
...
@@ -4,7 +4,7 @@ defmodule Pleroma.Mixfile do
def
project
do
[
app:
:pleroma
,
version:
version
(
"1.1.
6
"
),
version:
version
(
"1.1.
7
"
),
elixir:
"~> 1.7"
,
elixirc_paths:
elixirc_paths
(
Mix
.
env
()),
compilers:
[
:phoenix
,
:gettext
]
++
Mix
.
compilers
(),
...
...
@@ -158,6 +158,9 @@ defmodule Pleroma.Mixfile do
{
:plug_static_index_html
,
"~> 1.0.0"
},
{
:excoveralls
,
"~> 0.11.1"
,
only:
:test
},
{
:flake_id
,
"~> 0.1.0"
},
{
:captcha
,
git:
"https://git.pleroma.social/pleroma/elixir-libraries/elixir-captcha.git"
,
ref:
"c3c795c55f6b49d79d6ac70a0f91e525099fc3e2"
},
{
:mox
,
"~> 0.5"
,
only:
:test
}
]
++
oauth_deps
()
end
...
...
mix.lock
View file @
ecb3386f
...
...
@@ -8,6 +8,7 @@
"bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm"},
"cachex": {:hex, :cachex, "3.0.3", "4e2d3e05814a5738f5ff3903151d5c25636d72a3527251b753f501ad9c657967", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm"},
"calendar": {:hex, :calendar, "0.17.6", "ec291cb2e4ba499c2e8c0ef5f4ace974e2f9d02ae9e807e711a9b0c7850b9aee", [:mix], [{:tzdata, "~> 0.5.20 or ~> 0.1.201603 or ~> 1.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm"},
"captcha": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/elixir-captcha.git", "c3c795c55f6b49d79d6ac70a0f91e525099fc3e2", [ref: "c3c795c55f6b49d79d6ac70a0f91e525099fc3e2"]},
"certifi": {:hex, :certifi, "2.5.1", "867ce347f7c7d78563450a18a6a28a8090331e77fa02380b4a21962a65d36ee5", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm"},
"combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm"},
"comeonin": {:hex, :comeonin, "4.1.2", "3eb5620fd8e35508991664b4c2b04dd41e52f1620b36957be837c1d7784b7592", [:mix], [{:argon2_elixir, "~> 1.2", [hex: :argon2_elixir, repo: "hexpm", optional: true]}, {:bcrypt_elixir, "~> 0.12.1 or ~> 1.0", [hex: :bcrypt_elixir, repo: "hexpm", optional: true]}, {:pbkdf2_elixir, "~> 0.12", [hex: :pbkdf2_elixir, repo: "hexpm", optional: true]}], "hexpm"},
...
...
priv/static/index.html
View file @
ecb3386f
<!DOCTYPE html>
<html
lang=
en
><head><meta
charset=
utf-8
><meta
name=
viewport
content=
"width=device-width,initial-scale=1,user-scalable=no"
><title>
Pleroma
</title>
<!--server-generated-meta-->
<link
rel=
icon
type=
image/png
href=
/favicon.png
><link
rel=
stylesheet
href=
/static/font/css/fontello.css
><link
rel=
stylesheet
href=
/static/font/css/animation.css
><link
href=
/static/css/vendors~app.b2603a50868c68a1c192.css
rel=
stylesheet
><link
href=
/static/css/app.fd71461124f3eb029b1b.css
rel=
stylesheet
></head><body
class=
hidden
><noscript>
To use Pleroma, please enable JavaScript.
</noscript><div
id=
app
></div><script
type=
text/javascript
src=
/static/js/vendors~app.76db8e4cdf29decd5cab.js
></script><script
type=
text/javascript
src=
/static/js/app.d20ca27d22d74eb7bce0.js
></script></body></html>
\ No newline at end of file
<!DOCTYPE html>
<html
lang=
en
><head><meta
charset=
utf-8
><meta
name=
viewport
content=
"width=device-width,initial-scale=1,user-scalable=no"
><title>
Pleroma
</title>
<!--server-generated-meta-->
<link
rel=
icon
type=
image/png
href=
/favicon.png
><link
href=
/static/css/vendors~app.b2603a50868c68a1c192.css
rel=
stylesheet
><link
href=
/static/css/app.ae04505b31bb0ee2765e.css
rel=
stylesheet
><link
href=
/static/fontello.1576263574934.css
rel=
stylesheet
></head><body
class=
hidden
><noscript>
To use Pleroma, please enable JavaScript.
</noscript><div
id=
app
></div><script
type=
text/javascript
src=
/static/js/vendors~app.82d2415271fd2bf6bdfd.js
></script><script
type=
text/javascript
src=
/static/js/app.e63654e5ca9fff82f59d.js
></script></body></html>
\ No newline at end of file
priv/static/static/css/app.
fd71461124f3eb029b1b
.css
→
priv/static/static/css/app.
ae04505b31bb0ee2765e
.css
View file @
ecb3386f
...
...
@@ -99,4 +99,4 @@
font-size
:
14px
;
}
/*# sourceMappingURL=app.fd71461124f3eb029b1b.css.map*/
\ No newline at end of file
/*# sourceMappingURL=app.ae04505b31bb0ee2765e.css.map*/
\ No newline at end of file
priv/static/static/css/app.
fd71461124f3eb029b1b
.css.map
→
priv/static/static/css/app.
ae04505b31bb0ee2765e
.css.map
View file @
ecb3386f
{"version":3,"sources":["webpack:///./src/hocs/with_load_more/with_load_more.scss","webpack:///./src/components/tab_switcher/tab_switcher.scss","webpack:///./src/hocs/with_subscription/with_subscription.scss"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;AClFA;AACA;AACA;AACA;AACA;AACA;AACA,C","file":"static/css/app.fd71461124f3eb029b1b.css","sourcesContent":[".with-load-more-footer {\n padding: 10px;\n text-align: center;\n border-top: 1px solid;\n border-top-color: #222;\n border-top-color: var(--border, #222);\n}\n.with-load-more-footer .error {\n font-size: 14px;\n}",".tab-switcher {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n.tab-switcher .contents {\n -ms-flex: 1 0 auto;\n flex: 1 0 auto;\n min-height: 0px;\n}\n.tab-switcher .contents .hidden {\n display: none;\n}\n.tab-switcher .contents.scrollable-tabs {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n overflow-y: auto;\n}\n.tab-switcher .tabs {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n width: 100%;\n overflow-y: hidden;\n overflow-x: auto;\n padding-top: 5px;\n box-sizing: border-box;\n}\n.tab-switcher .tabs::after, .tab-switcher .tabs::before {\n display: block;\n content: \"\";\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n border-bottom: 1px solid;\n border-bottom-color: #222;\n border-bottom-color: var(--border, #222);\n}\n.tab-switcher .tabs .tab-wrapper {\n height: 28px;\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n}\n.tab-switcher .tabs .tab-wrapper .tab {\n width: 100%;\n min-width: 1px;\n position: relative;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n padding: 6px 1em;\n padding-bottom: 99px;\n margin-bottom: -93px;\n white-space: nowrap;\n}\n.tab-switcher .tabs .tab-wrapper .tab:not(.active) {\n z-index: 4;\n}\n.tab-switcher .tabs .tab-wrapper .tab:not(.active):hover {\n z-index: 6;\n}\n.tab-switcher .tabs .tab-wrapper .tab.active {\n background: transparent;\n z-index: 5;\n}\n.tab-switcher .tabs .tab-wrapper .tab img {\n max-height: 26px;\n vertical-align: top;\n margin-top: -5px;\n}\n.tab-switcher .tabs .tab-wrapper:not(.active)::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 7;\n border-bottom: 1px solid;\n border-bottom-color: #222;\n border-bottom-color: var(--border, #222);\n}",".with-subscription-loading {\n padding: 10px;\n text-align: center;\n}\n.with-subscription-loading .error {\n font-size: 14px;\n}"],"sourceRoot":""}
\ No newline at end of file
{"version":3,"sources":["webpack:///./src/hocs/with_load_more/with_load_more.scss","webpack:///./src/components/tab_switcher/tab_switcher.scss","webpack:///./src/hocs/with_subscription/with_subscription.scss"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;AClFA;AACA;AACA;AACA;AACA;AACA;AACA,C","file":"static/css/app.ae04505b31bb0ee2765e.css","sourcesContent":[".with-load-more-footer {\n padding: 10px;\n text-align: center;\n border-top: 1px solid;\n border-top-color: #222;\n border-top-color: var(--border, #222);\n}\n.with-load-more-footer .error {\n font-size: 14px;\n}",".tab-switcher {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n.tab-switcher .contents {\n -ms-flex: 1 0 auto;\n flex: 1 0 auto;\n min-height: 0px;\n}\n.tab-switcher .contents .hidden {\n display: none;\n}\n.tab-switcher .contents.scrollable-tabs {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n overflow-y: auto;\n}\n.tab-switcher .tabs {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n width: 100%;\n overflow-y: hidden;\n overflow-x: auto;\n padding-top: 5px;\n box-sizing: border-box;\n}\n.tab-switcher .tabs::after, .tab-switcher .tabs::before {\n display: block;\n content: \"\";\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n border-bottom: 1px solid;\n border-bottom-color: #222;\n border-bottom-color: var(--border, #222);\n}\n.tab-switcher .tabs .tab-wrapper {\n height: 28px;\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n}\n.tab-switcher .tabs .tab-wrapper .tab {\n width: 100%;\n min-width: 1px;\n position: relative;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n padding: 6px 1em;\n padding-bottom: 99px;\n margin-bottom: -93px;\n white-space: nowrap;\n}\n.tab-switcher .tabs .tab-wrapper .tab:not(.active) {\n z-index: 4;\n}\n.tab-switcher .tabs .tab-wrapper .tab:not(.active):hover {\n z-index: 6;\n}\n.tab-switcher .tabs .tab-wrapper .tab.active {\n background: transparent;\n z-index: 5;\n}\n.tab-switcher .tabs .tab-wrapper .tab img {\n max-height: 26px;\n vertical-align: top;\n margin-top: -5px;\n}\n.tab-switcher .tabs .tab-wrapper:not(.active)::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 7;\n border-bottom: 1px solid;\n border-bottom-color: #222;\n border-bottom-color: var(--border, #222);\n}",".with-subscription-loading {\n padding: 10px;\n text-align: center;\n}\n.with-subscription-loading .error {\n font-size: 14px;\n}"],"sourceRoot":""}
\ No newline at end of file
priv/static/static/font/LICENSE.txt
deleted
100755 → 0
View file @
0ba3f1ff
Font license info
## Font Awesome
Copyright (C) 2016 by Dave Gandy
Author: Dave Gandy
License: SIL ()
Homepage: http://fortawesome.github.com/Font-Awesome/
## Entypo
Copyright (C) 2012 by Daniel Bruce
Author: Daniel Bruce
License: SIL (http://scripts.sil.org/OFL)
Homepage: http://www.entypo.com
## Iconic
Copyright (C) 2012 by P.J. Onori
Author: P.J. Onori
License: SIL (http://scripts.sil.org/OFL)
Homepage: http://somerandomdude.com/work/iconic/
## Fontelico
Copyright (C) 2012 by Fontello project
Author: Crowdsourced, for Fontello project
License: SIL (http://scripts.sil.org/OFL)
Homepage: http://fontello.com
priv/static/static/font/README.txt
deleted
100755 → 0
View file @
0ba3f1ff
This webfont is generated by http://fontello.com open source project.
================================================================================
Please, note, that you should obey original font licenses, used to make this
webfont pack. Details available in LICENSE.txt file.
- Usually, it's enough to publish content of LICENSE.txt file somewhere on your
site in "About" section.
- If your project is open-source, usually, it will be ok to make LICENSE.txt
file publicly available in your repository.
- Fonts, used in Fontello, don't require a clickable link on your site.
But any kind of additional authors crediting is welcome.
================================================================================
Comments on archive content
---------------------------
- /font/* - fonts in different formats
- /css/* - different kinds of css, for all situations. Should be ok with
twitter bootstrap. Also, you can skip <i> style and assign icon classes
directly to text elements, if you don't mind about IE7.
- demo.html - demo file, to show your webfont content
- LICENSE.txt - license info about source fonts, used to build your one.
- config.json - keeps your settings. You can import it back into fontello
anytime, to continue your work
Why so many CSS files ?
-----------------------
Because we like to fit all your needs :)
- basic file, <your_font_name>.css - is usually enough, it contains @font-face
and character code definitions
- *-ie7.css - if you need IE7 support, but still don't wish to put char codes
directly into html
- *-codes.css and *-ie7-codes.css - if you like to use your own @font-face
rules, but still wish to benefit from css generation. That can be very
convenient for automated asset build systems. When you need to update font -
no need to manually edit files, just override old version with archive
content. See fontello source code for examples.
- *-embedded.css - basic css file, but with embedded WOFF font, to avoid
CORS issues in Firefox and IE9+, when fonts are hosted on the separate domain.
We strongly recommend to resolve this issue by `Access-Control-Allow-Origin`
server headers. But if you ok with dirty hack - this file is for you. Note,
that data url moved to separate @font-face to avoid problems with <IE9, when
string is too long.
- animate.css - use it to get ideas about spinner rotation animation.
Attention for server setup
--------------------------
You MUST setup server to reply with proper `mime-types` for font files -
otherwise some browsers will fail to show fonts.
Usually, `apache` already has necessary settings, but `nginx` and other
webservers should be tuned. Here is list of mime types for our file extensions:
- `application/vnd.ms-fontobject` - eot
- `application/x-font-woff` - woff
- `application/x-font-ttf` - ttf
- `image/svg+xml` - svg
priv/static/static/font/css/animation.css
deleted
100755 → 0
View file @
0ba3f1ff
/*
Animation example, for spinners
*/
.animate-spin
{
-moz-animation
:
spin
2s
infinite
linear
;
-o-animation
:
spin
2s
infinite
linear
;
-webkit-animation
:
spin
2s
infinite
linear
;
animation
:
spin
2s
infinite
linear
;
display
:
inline-block
;
}
@-moz-keyframes
spin
{
0
%
{
-moz-transform
:
rotate
(
0deg
);
-o-transform
:
rotate
(
0deg
);
-webkit-transform
:
rotate
(
0deg
);
transform
:
rotate
(
0deg
);
}
100
%
{
-moz-transform
:
rotate
(
359deg
);
-o-transform
:
rotate
(
359deg
);
-webkit-transform
:
rotate
(
359deg
);
transform
:
rotate
(
359deg
);
}
}
@-webkit-keyframes
spin
{
0
%
{
-moz-transform
:
rotate
(
0deg
);
-o-transform
:
rotate
(
0deg
);
-webkit-transform
:
rotate
(
0deg
);
transform
:
rotate
(
0deg
);
}
100
%
{
-moz-transform
:
rotate
(
359deg
);
-o-transform
:
rotate
(
359deg
);
-webkit-transform
:
rotate
(
359deg
);
transform
:
rotate
(
359deg
);
}
}
@-o-keyframes
spin
{
0
%
{
-moz-transform
:
rotate
(
0deg
);
-o-transform
:
rotate
(
0deg
);
-webkit-transform
:
rotate
(
0deg
);
transform
:
rotate
(
0deg
);
}
100
%
{
-moz-transform
:
rotate
(
359deg
);
-o-transform
:
rotate
(
359deg
);
-webkit-transform
:
rotate
(
359deg
);
transform
:
rotate
(
359deg
);
}
}
@-ms-keyframes
spin
{
0
%
{
-moz-transform
:
rotate
(
0deg
);
-o-transform
:
rotate
(
0deg
);
-webkit-transform
:
rotate
(
0deg
);
transform
:
rotate
(
0deg
);
}
100
%
{
-moz-transform
:
rotate
(
359deg
);
-o-transform
:
rotate
(
359deg
);
-webkit-transform
:
rotate
(
359deg
);
transform
:
rotate
(
359deg
);
}
}
@keyframes
spin
{
0
%
{
-moz-transform
:
rotate
(
0deg
);
-o-transform
:
rotate
(
0deg
);
-webkit-transform
:
rotate
(
0deg
);
transform
:
rotate
(
0deg
);
}
100
%
{
-moz-transform
:
rotate
(
359deg
);
-o-transform
:
rotate
(
359deg
);
-webkit-transform
:
rotate
(
359deg
);
transform
:
rotate
(
359deg
);
}
}
priv/static/static/font/css/fontello-codes.css
deleted
100755 → 0
View file @
0ba3f1ff
.icon-cancel
:before
{
content
:
'\e800'
;
}
/* '' */
.icon-upload
:before
{
content
:
'\e801'
;
}
/* '' */
.icon-star
:before
{
content
:
'\e802'
;
}
/* '' */
.icon-star-empty
:before
{
content
:
'\e803'
;
}
/* '' */
.icon-retweet
:before
{
content
:
'\e804'
;
}
/* '' */
.icon-eye-off
:before
{
content
:
'\e805'
;
}
/* '' */
.icon-search
:before
{
content
:
'\e806'
;
}
/* '' */
.icon-cog
:before
{
content
:
'\e807'
;
}
/* '' */
.icon-logout
:before
{
content
:
'\e808'
;
}
/* '' */
.icon-down-open
:before
{
content
:
'\e809'
;
}
/* '' */
.icon-attach
:before
{
content
:
'\e80a'
;
}
/* '' */
.icon-picture
:before
{
content
:
'\e80b'
;
}
/* '' */
.icon-video
:before
{
content
:
'\e80c'
;
}
/* '' */
.icon-right-open
:before
{
content
:
'\e80d'
;
}
/* '' */
.icon-left-open
:before
{
content
:
'\e80e'
;
}
/* '' */
.icon-up-open
:before
{
content
:
'\e80f'
;
}
/* '' */
.icon-bell-ringing-o
:before
{
content
:
'\e810'
;
}
/* '' */
.icon-lock
:before
{
content
:
'\e811'
;
}
/* '' */
.icon-globe
:before
{
content
:
'\e812'
;
}
/* '' */
.icon-brush
:before
{
content
:
'\e813'
;
}
/* '' */
.icon-attention
:before
{
content
:
'\e814'
;
}
/* '' */
.icon-plus
:before
{
content
:
'\e815'
;
}
/* '' */
.icon-adjust
:before
{
content
:
'\e816'
;
}
/* '' */
.icon-edit
:before
{
content
:
'\e817'
;
}
/* '' */
.icon-pencil
:before
{
content
:
'\e818'
;
}
/* '' */
.icon-pin
:before
{
content
:
'\e819'
;
}
/* '' */
.icon-wrench
:before
{
content
:
'\e81a'
;
}
/* '' */
.icon-chart-bar
:before
{
content
:
'\e81b'
;
}
/* '' */
.icon-zoom-in
:before
{
content
:
'\e81c'
;
}
/* '' */
.icon-spin3
:before
{
content
:
'\e832'
;
}
/* '' */
.icon-spin4
:before
{
content
:
'\e834'
;
}
/* '' */
.icon-link-ext
:before
{
content
:
'\f08e'
;
}
/* '' */
.icon-link-ext-alt
:before
{
content
:
'\f08f'
;
}
/* '' */
.icon-menu
:before
{
content
:
'\f0c9'
;
}
/* '' */
.icon-mail-alt
:before
{
content
:
'\f0e0'
;
}
/* '' */
.icon-gauge
:before
{
content
:
'\f0e4'
;
}
/* '' */
.icon-comment-empty
:before
{
content
:
'\f0e5'
;
}
/* '' */
.icon-bell-alt
:before
{
content
:
'\f0f3'
;
}
/* '' */
.icon-plus-squared
:before
{
content
:
'\f0fe'
;
}
/* '' */
.icon-reply
:before
{
content
:
'\f112'
;
}
/* '' */
.icon-smile
:before
{
content
:
'\f118'
;
}
/* '' */
.icon-lock-open-alt
:before
{
content
:
'\f13e'
;
}
/* '' */
.icon-ellipsis
:before
{
content
:
'\f141'
;
}
/* '' */
.icon-play-circled
:before
{
content
:
'\f144'
;
}
/* '' */
.icon-thumbs-up-alt
:before
{
content
:
'\f164'
;
}
/* '' */
.icon-binoculars
:before
{
content
:
'\f1e5'
;
}
/* '' */
.icon-user-plus
:before
{
content
:
'\f234'
;
}
/* '' */
\ No newline at end of file
priv/static/static/font/css/fontello-embedded.css
deleted
100755 → 0
View file @
0ba3f1ff
This diff is collapsed.
Click to expand it.
priv/static/static/font/css/fontello-ie7-codes.css
deleted
100755 → 0
View file @
0ba3f1ff
.icon-cancel
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-upload
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-star
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-star-empty
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-retweet
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-eye-off
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-search
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-cog
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-logout
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-down-open
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-attach
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-picture
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-video
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-right-open
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-left-open
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-up-open
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-bell-ringing-o
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-lock
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-globe
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-brush
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-attention
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-plus
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-adjust
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-edit
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-pencil
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-pin
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-wrench
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-chart-bar
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-zoom-in
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-spin3
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-spin4
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-link-ext
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-link-ext-alt
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-menu
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-mail-alt
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-gauge
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-comment-empty
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-bell-alt
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-plus-squared
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-reply
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-smile
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-lock-open-alt
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-ellipsis
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-play-circled
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-thumbs-up-alt
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-binoculars
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-user-plus
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
\ No newline at end of file
priv/static/static/font/css/fontello-ie7.css
deleted
100755 → 0
View file @
0ba3f1ff
[
class
^=
"icon-"
],
[
class
*=
" icon-"
]
{
font-family
:
'fontello'
;
font-style
:
normal
;
font-weight
:
normal
;
/* fix buttons height */
line-height
:
1em
;
/* you can be more comfortable with increased icons size */
/* font-size: 120%; */
}
.icon-cancel
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-upload
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-star
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-star-empty
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-retweet
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-eye-off
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-search
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-cog
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-logout
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-down-open
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-attach
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-picture
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-video
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-right-open
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-left-open
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-up-open
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-bell-ringing-o
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-lock
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-globe
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-brush
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-attention
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-plus
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-adjust
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-edit
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-pencil
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-pin
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-wrench
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-chart-bar
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-zoom-in
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-spin3
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-spin4
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-link-ext
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-link-ext-alt
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this
.
innerHTML
=
' '
);
}
.icon-menu
{
*
zoom
:
expression
(
this
.
runtimeStyle
[
'zoom'
]
=
'1'
,
this