├── runtime.txt ├── ProgrammerProfile ├── __init__.py ├── staticfiles │ ├── img │ │ ├── social │ │ │ ├── github.png │ │ │ ├── hatena.png │ │ │ ├── qiita.png │ │ │ ├── quora.png │ │ │ ├── facebook.png │ │ │ ├── linkedin.png │ │ │ ├── slashdot.png │ │ │ ├── googleplus.png │ │ │ ├── slideshare.png │ │ │ └── stackoverflow.png │ │ └── titlelogo.svg │ ├── bootflat │ │ ├── img │ │ │ └── check_flat │ │ │ │ ├── default.png │ │ │ │ └── default.psd │ │ ├── scss │ │ │ ├── .csslintrc │ │ │ ├── bootflat │ │ │ │ ├── _media_list.scss │ │ │ │ ├── _modal.scss │ │ │ │ ├── _thumbnail.scss │ │ │ │ ├── _well.scss │ │ │ │ ├── _tooltip.scss │ │ │ │ ├── _pager.scss │ │ │ │ ├── _progress.scss │ │ │ │ ├── _pill.scss │ │ │ │ ├── _popover.scss │ │ │ │ ├── _checkbox_radio.scss │ │ │ │ ├── _label_badge.scss │ │ │ │ ├── _stepper.scss │ │ │ │ ├── _footer.scss │ │ │ │ ├── _pagination.scss │ │ │ │ ├── _alert.scss │ │ │ │ ├── _jumbotron.scss │ │ │ │ ├── _accordion.scss │ │ │ │ ├── _typography.scss │ │ │ │ ├── _toggle.scss │ │ │ │ ├── _pricing.scss │ │ │ │ ├── _button_group.scss │ │ │ │ ├── _calendar.scss │ │ │ │ ├── _dropdown.scss │ │ │ │ ├── _breadcrumb.scss │ │ │ │ ├── _timeline.scss │ │ │ │ ├── _tab.scss │ │ │ │ ├── _list.scss │ │ │ │ ├── _button.scss │ │ │ │ ├── _form.scss │ │ │ │ ├── _selecter.scss │ │ │ │ ├── _panel.scss │ │ │ │ ├── _global.scss │ │ │ │ └── _navbar.scss │ │ │ ├── bootflat.scss │ │ │ └── .csscomb.json │ │ └── js │ │ │ ├── jquery.fs.stepper.min.js │ │ │ ├── icheck.min.js │ │ │ └── jquery.fs.selecter.min.js │ ├── bootstrap │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ └── js │ │ │ └── npm.js │ └── bootstrap-select │ │ ├── js │ │ └── i18n │ │ │ ├── defaults-zh_CN.min.js │ │ │ ├── defaults-zh_TW.min.js │ │ │ ├── defaults-cs_CZ.min.js │ │ │ ├── defaults-de_DE.min.js │ │ │ ├── defaults-ua_UA.min.js │ │ │ ├── defaults-zh_CN.js │ │ │ ├── defaults-es_CL.min.js │ │ │ ├── defaults-eu.min.js │ │ │ ├── defaults-it_IT.min.js │ │ │ ├── defaults-nl_NL.min.js │ │ │ ├── defaults-pt_BR.min.js │ │ │ ├── defaults-ru_RU.min.js │ │ │ ├── defaults-ro_RO.min.js │ │ │ ├── defaults-zh_TW.js │ │ │ ├── defaults-pl_PL.min.js │ │ │ ├── defaults-cs_CZ.js │ │ │ ├── defaults-de_DE.js │ │ │ ├── defaults-ua_UA.js │ │ │ ├── defaults-es_CL.js │ │ │ ├── defaults-eu.js │ │ │ ├── defaults-it_IT.js │ │ │ ├── defaults-nl_NL.js │ │ │ ├── defaults-pt_BR.js │ │ │ ├── defaults-ru_RU.js │ │ │ ├── defaults-ro_RO.js │ │ │ ├── defaults-pl_PL.js │ │ │ ├── defaults-en_US.min.js │ │ │ ├── defaults-fr_FR.min.js │ │ │ ├── defaults-en_US.js │ │ │ └── defaults-fr_FR.js │ │ └── css │ │ └── bootstrap-select.min.css ├── admin.py ├── wsgi.py ├── models.py ├── urls.py ├── sitemaps.py ├── settings.py └── templates │ ├── stats.html │ ├── base.html │ ├── index.html │ └── staruser.html ├── .gitignore ├── Procfile ├── manage.py ├── requirements.txt └── README.md /runtime.txt: -------------------------------------------------------------------------------- 1 | python-3.4.2 2 | -------------------------------------------------------------------------------- /ProgrammerProfile/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | db.sqlite3 3 | *.pyc 4 | /staticfiles/ -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/img/social/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakazye/ProgrammerProfile/HEAD/ProgrammerProfile/staticfiles/img/social/github.png -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/img/social/hatena.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakazye/ProgrammerProfile/HEAD/ProgrammerProfile/staticfiles/img/social/hatena.png -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/img/social/qiita.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakazye/ProgrammerProfile/HEAD/ProgrammerProfile/staticfiles/img/social/qiita.png -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/img/social/quora.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakazye/ProgrammerProfile/HEAD/ProgrammerProfile/staticfiles/img/social/quora.png -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/img/social/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakazye/ProgrammerProfile/HEAD/ProgrammerProfile/staticfiles/img/social/facebook.png -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/img/social/linkedin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakazye/ProgrammerProfile/HEAD/ProgrammerProfile/staticfiles/img/social/linkedin.png -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/img/social/slashdot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakazye/ProgrammerProfile/HEAD/ProgrammerProfile/staticfiles/img/social/slashdot.png -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/img/social/googleplus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakazye/ProgrammerProfile/HEAD/ProgrammerProfile/staticfiles/img/social/googleplus.png -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/img/social/slideshare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakazye/ProgrammerProfile/HEAD/ProgrammerProfile/staticfiles/img/social/slideshare.png -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/img/social/stackoverflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakazye/ProgrammerProfile/HEAD/ProgrammerProfile/staticfiles/img/social/stackoverflow.png -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: EW_RELIC_CONFIG_FILE=newrelic.ini newrelic-admin run-program gunicorn --env DJANGO_SETTINGS_MODULE=ProgrammerProfile.settings ProgrammerProfile.wsgi --log-file - 2 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/img/check_flat/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakazye/ProgrammerProfile/HEAD/ProgrammerProfile/staticfiles/bootflat/img/check_flat/default.png -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/img/check_flat/default.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakazye/ProgrammerProfile/HEAD/ProgrammerProfile/staticfiles/bootflat/img/check_flat/default.psd -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakazye/ProgrammerProfile/HEAD/ProgrammerProfile/staticfiles/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakazye/ProgrammerProfile/HEAD/ProgrammerProfile/staticfiles/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakazye/ProgrammerProfile/HEAD/ProgrammerProfile/staticfiles/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakazye/ProgrammerProfile/HEAD/ProgrammerProfile/staticfiles/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | import dotenv 5 | 6 | if __name__ == "__main__": 7 | dotenv.read_dotenv() 8 | 9 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ProgrammerProfile.settings") 10 | 11 | from django.core.management import execute_from_command_line 12 | 13 | execute_from_command_line(sys.argv) 14 | -------------------------------------------------------------------------------- /ProgrammerProfile/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from ProgrammerProfile.models import BasicTwitterInfo 3 | from ProgrammerProfile.models import UserInfo 4 | 5 | class UserInfoAdmin(admin.ModelAdmin): 6 | list_display = ('target', 'category', 'subcategory', 'data') 7 | list_filter = ('category', 'subcategory') 8 | 9 | admin.site.register(BasicTwitterInfo) 10 | admin.site.register(UserInfo, UserInfoAdmin) 11 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/.csslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "adjoining-classes": false, 3 | "box-sizing": false, 4 | "box-model": false, 5 | "compatible-vendor-prefixes": false, 6 | "fallback-colors": false, 7 | "font-sizes": false, 8 | "important": false, 9 | "known-properties": false, 10 | "outline-none": false, 11 | "qualified-headings": false, 12 | "unique-headings": false, 13 | "universal-selector": false, 14 | "unqualified-attributes": false 15 | } 16 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | defusedxml==0.4.1 2 | dj-database-url==0.3.0 3 | dj-static==0.0.6 4 | Django==1.7.4 5 | django-dotenv==1.3.0 6 | django-toolbelt==0.0.1 7 | epc==0.0.5 8 | gunicorn==19.2.0 9 | jedi==0.8.1 10 | Markdown==2.5.2 11 | newrelic==2.42.0.35 12 | oauthlib==0.7.2 13 | psycopg2==2.5.4 14 | PyJWT==0.4.1 15 | python-social-auth==0.2.1 16 | python3-openid==3.0.5 17 | requests==2.5.1 18 | requests-oauthlib==0.4.2 19 | sexpdata==0.0.3 20 | six==1.9.0 21 | static3==0.5.1 22 | whitenoise==1.0.6 23 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-zh_CN.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | !function(a){a.fn.selectpicker.defaults={noneSelectedText:"没有选中任何项",noneResultsText:"没有找到匹配项",countSelectedText:"选中{1}中的{0}项",maxOptionsText:["超出限制 (最多选择{n}项)","组选择超出限制(最多选择{n}组)"],multipleSeparator:", "}}(jQuery); -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-zh_TW.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | !function(a){a.fn.selectpicker.defaults={noneSelectedText:"沒有選取任何項目",noneResultsText:"沒有找到符合的結果",countSelectedText:"已經選取{0}個項目",maxOptionsText:["超過限制 (最多選擇{n}項)","超過限制(最多選擇{n}組)"],selectAllText:"選取全部",deselectAllText:"全部取消",multipleSeparator:", "}}(jQuery); -------------------------------------------------------------------------------- /ProgrammerProfile/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for lovepoints project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/ 8 | """ 9 | from django.core.wsgi import get_wsgi_application 10 | from whitenoise.django import DjangoWhiteNoise 11 | import os 12 | 13 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ProgrammerProfile.settings") 14 | 15 | 16 | application = DjangoWhiteNoise(get_wsgi_application()) 17 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-cs_CZ.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | !function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nic není vybráno",noneResultsText:"Žádné výsledky",countSelectedText:"Označeno {0} z {1}",maxOptionsText:["Limit překročen ({n} {var} max)","Limit skupiny překročen ({n} {var} max)",["položek","položka"]],multipleSeparator:", "}}(jQuery); -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-de_DE.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | !function(a){a.fn.selectpicker.defaults={noneSelectedText:"Bitte wählen...",noneResultsText:"Keine Ergebnisse für",countSelectedText:"{0} von {1} ausgewählt",maxOptionsText:["Limit erreicht ({n} {var} max.)","Gruppen-Limit erreicht ({n} {var} max.)",["Eintrag","Einträge"]],multipleSeparator:", "}}(jQuery); -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-ua_UA.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | !function(a){a.fn.selectpicker.defaults={noneSelectedText:"Нічого не вибрано",noneResultsText:"Збігів не знайдено",countSelectedText:"Вибрано {0} із {1}",maxOptionsText:["Досягнута межа ({n} {var} максимум)","Досягнута межа в групі ({n} {var} максимум)",["items","item"]],multipleSeparator:", "}}(jQuery); -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-zh_CN.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | (function ($) { 8 | $.fn.selectpicker.defaults = { 9 | noneSelectedText: '没有选中任何项', 10 | noneResultsText: '没有找到匹配项', 11 | countSelectedText: '选中{1}中的{0}项', 12 | maxOptionsText: ['超出限制 (最多选择{n}项)', '组选择超出限制(最多选择{n}组)'], 13 | multipleSeparator: ', ' 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-es_CL.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | !function(a){a.fn.selectpicker.defaults={noneSelectedText:"No hay selección",noneResultsText:"No hay resultados",countSelectedText:"Seleccionados {0} de {1}",maxOptionsText:["Límite alcanzado ({n} {var} max)","Límite del grupo alcanzado({n} {var} max)",["elementos","element"]],multipleSeparator:", "}}(jQuery); -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-eu.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | !function(a){a.fn.selectpicker.defaults={noneSelectedText:"Hautapenik ez",noneResultsText:"Emaitzarik ez",countSelectedText:"{1}(e)tik {0} hautatuta",maxOptionsText:["Mugara iritsita ({n} {var} gehienez)","Taldearen mugara iritsita ({n} {var} gehienez)",["elementu","elementu"]],multipleSeparator:", "}}(jQuery); -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-it_IT.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | !function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nessuna selezione",noneResultsText:"Nessun risultato",countSelectedText:"Selezionati {0} di {1}",maxOptionsText:["Limite raggiunto ({n} {var} max)","Limite del gruppo raggiunto ({n} {var} max)",["elementi","elemento"]],multipleSeparator:", "}}(jQuery); -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-nl_NL.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | !function(a){a.fn.selectpicker.defaults={noneSelectedText:"Niets geselecteerd",noneResultsText:"Geen resultaten gevonden voor",countSelectedText:"{0} van {1} geselecteerd",maxOptionsText:["Limiet bereikt ({n} {var} max)","Groep limiet bereikt ({n} {var} max)",["items","item"]],multipleSeparator:", "}}(jQuery); -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-pt_BR.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | !function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nada selecionado",noneResultsText:"Nada encontrado contendo",countSelectedText:"Selecionado {0} de {1}",maxOptionsText:["Limite excedido (máx. {n} {var})","Limite do grupo excedido (máx. {n} {var})",["itens","item"]],multipleSeparator:", "}}(jQuery); -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-ru_RU.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | !function(a){a.fn.selectpicker.defaults={noneSelectedText:"Ничего не выбрано",noneResultsText:"Совпадений не найдено",countSelectedText:"Выбрано {0} из {1}",maxOptionsText:["Достигнут предел ({n} {var} максимум)","Достигнут предел в группе ({n} {var} максимум)",["items","item"]],multipleSeparator:", "}}(jQuery); -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-ro_RO.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | !function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nu a fost selectat nimic",noneResultsText:"Nu exista niciun rezultat",countSelectedText:"{0} din {1} selectat(e)",maxOptionsText:["Limita a fost atinsa ({n} {var} max)","Limita de grup a fost atinsa ({n} {var} max)",["iteme","item"]],multipleSeparator:", "}}(jQuery); -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-zh_TW.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | (function ($) { 8 | $.fn.selectpicker.defaults = { 9 | noneSelectedText: '沒有選取任何項目', 10 | noneResultsText: '沒有找到符合的結果', 11 | countSelectedText: '已經選取{0}個項目', 12 | maxOptionsText: ['超過限制 (最多選擇{n}項)', '超過限制(最多選擇{n}組)'], 13 | selectAllText: '選取全部', 14 | deselectAllText: '全部取消', 15 | multipleSeparator: ', ' 16 | }; 17 | }(jQuery)); 18 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-pl_PL.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | !function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nic nie zaznaczono",noneResultsText:"Brak wyników wyszukiwania",countSelectedText:"Zaznaczono {0} z {1}",maxOptionsText:["Osiągnięto limit ({n} {var} max)","Limit grupy osiągnięty ({n} {var} max)",["elementy","element"]],selectAll:"Zaznacz wszystkie",deselectAll:"Odznacz wszystkie",multipleSeparator:", "}}(jQuery); -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-cs_CZ.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | (function ($) { 8 | $.fn.selectpicker.defaults = { 9 | noneSelectedText: 'Nic není vybráno', 10 | noneResultsText: 'Žádné výsledky', 11 | countSelectedText: 'Označeno {0} z {1}', 12 | maxOptionsText: ['Limit překročen ({n} {var} max)', 'Limit skupiny překročen ({n} {var} max)', ['položek', 'položka']], 13 | multipleSeparator: ', ' 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-de_DE.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | (function ($) { 8 | $.fn.selectpicker.defaults = { 9 | noneSelectedText: 'Bitte wählen...', 10 | noneResultsText: 'Keine Ergebnisse für', 11 | countSelectedText: '{0} von {1} ausgewählt', 12 | maxOptionsText: ['Limit erreicht ({n} {var} max.)', 'Gruppen-Limit erreicht ({n} {var} max.)', ['Eintrag', 'Einträge']], 13 | multipleSeparator: ', ' 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-ua_UA.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | (function ($) { 8 | $.fn.selectpicker.defaults = { 9 | noneSelectedText: 'Нічого не вибрано', 10 | noneResultsText: 'Збігів не знайдено', 11 | countSelectedText: 'Вибрано {0} із {1}', 12 | maxOptionsText: ['Досягнута межа ({n} {var} максимум)', 'Досягнута межа в групі ({n} {var} максимум)', ['items', 'item']], 13 | multipleSeparator: ', ' 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-es_CL.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | (function ($) { 8 | $.fn.selectpicker.defaults = { 9 | noneSelectedText: 'No hay selección', 10 | noneResultsText: 'No hay resultados', 11 | countSelectedText: 'Seleccionados {0} de {1}', 12 | maxOptionsText: ['Límite alcanzado ({n} {var} max)', 'Límite del grupo alcanzado({n} {var} max)', ['elementos', 'element']], 13 | multipleSeparator: ', ' 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-eu.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | (function ($) { 8 | $.fn.selectpicker.defaults = { 9 | noneSelectedText: 'Hautapenik ez', 10 | noneResultsText: 'Emaitzarik ez', 11 | countSelectedText: '{1}(e)tik {0} hautatuta', 12 | maxOptionsText: ['Mugara iritsita ({n} {var} gehienez)', 'Taldearen mugara iritsita ({n} {var} gehienez)', ['elementu', 'elementu']], 13 | multipleSeparator: ', ' 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-it_IT.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | (function ($) { 8 | $.fn.selectpicker.defaults = { 9 | noneSelectedText: 'Nessuna selezione', 10 | noneResultsText: 'Nessun risultato', 11 | countSelectedText: 'Selezionati {0} di {1}', 12 | maxOptionsText: ['Limite raggiunto ({n} {var} max)', 'Limite del gruppo raggiunto ({n} {var} max)', ['elementi', 'elemento']], 13 | multipleSeparator: ', ' 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-nl_NL.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | (function ($) { 8 | $.fn.selectpicker.defaults = { 9 | noneSelectedText: 'Niets geselecteerd', 10 | noneResultsText: 'Geen resultaten gevonden voor', 11 | countSelectedText: '{0} van {1} geselecteerd', 12 | maxOptionsText: ['Limiet bereikt ({n} {var} max)', 'Groep limiet bereikt ({n} {var} max)', ['items', 'item']], 13 | multipleSeparator: ', ' 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-pt_BR.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | (function ($) { 8 | $.fn.selectpicker.defaults = { 9 | noneSelectedText: 'Nada selecionado', 10 | noneResultsText: 'Nada encontrado contendo', 11 | countSelectedText: 'Selecionado {0} de {1}', 12 | maxOptionsText: ['Limite excedido (máx. {n} {var})', 'Limite do grupo excedido (máx. {n} {var})', ['itens', 'item']], 13 | multipleSeparator: ', ' 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-ru_RU.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | (function ($) { 8 | $.fn.selectpicker.defaults = { 9 | noneSelectedText: 'Ничего не выбрано', 10 | noneResultsText: 'Совпадений не найдено', 11 | countSelectedText: 'Выбрано {0} из {1}', 12 | maxOptionsText: ['Достигнут предел ({n} {var} максимум)', 'Достигнут предел в группе ({n} {var} максимум)', ['items', 'item']], 13 | multipleSeparator: ', ' 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-ro_RO.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | (function ($) { 8 | $.fn.selectpicker.defaults = { 9 | noneSelectedText: 'Nu a fost selectat nimic', 10 | noneResultsText: 'Nu exista niciun rezultat', 11 | countSelectedText: '{0} din {1} selectat(e)', 12 | maxOptionsText: ['Limita a fost atinsa ({n} {var} max)', 'Limita de grup a fost atinsa ({n} {var} max)', ['iteme', 'item']], 13 | multipleSeparator: ', ' 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_media_list.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $media-list-font-color-head: $darkgray-dark !default; 4 | $media-list-font-color-body: $mediumgray-dark !default; 5 | 6 | 7 | // Exports 8 | //------------------------------------------------------ 9 | 10 | @include exports("media-list") { 11 | 12 | /** 13 | * media list 14 | * -------------------------------------------------- 15 | */ 16 | .media-list { 17 | color: $media-list-font-color-body; 18 | @at-root .media-heading { 19 | font-size: 14px; 20 | color: $media-list-font-color-head; 21 | } 22 | } 23 | 24 | } 25 | 26 | 27 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-pl_PL.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | (function ($) { 8 | $.fn.selectpicker.defaults = { 9 | noneSelectedText: 'Nic nie zaznaczono', 10 | noneResultsText: 'Brak wyników wyszukiwania', 11 | countSelectedText: 'Zaznaczono {0} z {1}', 12 | maxOptionsText: ['Osiągnięto limit ({n} {var} max)', 'Limit grupy osiągnięty ({n} {var} max)', ['elementy', 'element']], 13 | selectAll: 'Zaznacz wszystkie', 14 | deselectAll: 'Odznacz wszystkie', 15 | multipleSeparator: ', ' 16 | }; 17 | }(jQuery)); 18 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-en_US.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | !function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nothing selected",noneResultsText:"No results match",countSelectedText:function(a){return 1==a?"{0} item selected":"{0} items selected"},maxOptionsText:function(a,b){var c=[];return c[0]=1==a?"Limit reached ({n} item max)":"Limit reached ({n} items max)",c[1]=1==b?"Group limit reached ({n} item max)":"Group limit reached ({n} items max)",c},selectAllText:"Select All",deselectAllText:"Deselect All",multipleSeparator:", "}}(jQuery); -------------------------------------------------------------------------------- /ProgrammerProfile/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | class BasicTwitterInfo(models.Model): 4 | username = models.TextField() 5 | userImage = models.TextField() 6 | userScreenName = models.TextField() 7 | userDescription = models.TextField() 8 | lastUpdate = models.DateTimeField() 9 | 10 | def __str__(self): 11 | return self.username 12 | 13 | class UserInfo(models.Model): 14 | 15 | target = models.ForeignKey(BasicTwitterInfo, related_name='target') 16 | category = models.TextField() 17 | subcategory = models.TextField() 18 | data = models.TextField() 19 | update = models.ForeignKey(BasicTwitterInfo, related_name='update') 20 | 21 | def __str__(self): 22 | return self.target.username + ':' + self.category + ':' + self.subcategory 23 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-fr_FR.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | !function(a){a.fn.selectpicker.defaults={noneSelectedText:"Aucune sélection",noneResultsText:"Aucun résultat",countSelectedText:function(a){return a>1?"{0} éléments sélectionés":"{0} élément sélectioné"},maxOptionsText:function(a,b){var c=[];return c[0]=a>1?"Limite atteinte ({n} éléments max)":"Limite atteinte ({n} élément max)",c[1]=b>1?"Limite du groupe atteinte ({n} éléments max)":"Limite du groupe atteinte ({n} élément max)",c},multipleSeparator:", "}}(jQuery); -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_modal.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $modal-font-color: $darkgray-dark !default; 4 | 5 | $modal-radius: 4px; 6 | $modal-shadow: 0 1px 2px rgba(0, 0, 0, .2) !default; 7 | 8 | 9 | // Exports 10 | //------------------------------------------------------ 11 | 12 | @include exports("modal") { 13 | 14 | /** 15 | * modal 16 | * -------------------------------------------------- 17 | */ 18 | 19 | .modal { 20 | &-content { 21 | border: none; 22 | @include radius($type: border-radius, $value: $modal-radius); 23 | color: $modal-font-color; 24 | @include box-shadow($value: $modal-shadow); 25 | } 26 | &-header { 27 | border-bottom: none; 28 | } 29 | &-body { 30 | padding: 0 15px; 31 | } 32 | &-footer { 33 | border-top: none; 34 | } 35 | } 36 | 37 | } 38 | 39 | 40 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_thumbnail.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $media-font-color: $darkgray-dark !default; 4 | 5 | 6 | $thumbnail-shadow: 0 1px 2px rgba(0, 0, 0, .2) !default; 7 | 8 | 9 | // Exports 10 | //------------------------------------------------------ 11 | 12 | @include exports("thumbnail") { 13 | 14 | /** 15 | * thumbnail 16 | * -------------------------------------------------- 17 | */ 18 | .thumbnail { 19 | border: none; 20 | @include box-shadow($value: $list-shadow); 21 | 22 | & a > img, & > img { 23 | width: 100%; 24 | } 25 | 26 | & .caption { 27 | font-size: 14px; 28 | } 29 | 30 | & .caption h1, 31 | & .caption h2, 32 | & .caption h3, 33 | & .caption h4, 34 | & .caption h5, 35 | & .caption h6 { 36 | margin: 5px 0 10px; 37 | font-size: 16px; 38 | } 39 | } 40 | 41 | } 42 | 43 | 44 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | @import 4 | 5 | // Variables, Extends, Mixins 6 | "bootflat/global", 7 | 8 | // Base 9 | "bootflat/typography", 10 | "bootflat/button", 11 | "bootflat/button_group", 12 | "bootflat/label_badge", 13 | "bootflat/tooltip", 14 | "bootflat/popover", 15 | "bootflat/progress", 16 | "bootflat/breadcrumb", 17 | "bootflat/pagination", 18 | "bootflat/pager", 19 | "bootflat/form", 20 | "bootflat/stepper", 21 | "bootflat/selecter", 22 | "bootflat/checkbox_radio", 23 | "bootflat/toggle", 24 | "bootflat/calendar", 25 | "bootflat/pricing", 26 | "bootflat/alert", 27 | "bootflat/tab", 28 | "bootflat/pill", 29 | "bootflat/navbar", 30 | "bootflat/list", 31 | "bootflat/media_list", 32 | "bootflat/modal", 33 | "bootflat/well", 34 | "bootflat/thumbnail", 35 | "bootflat/jumbotron", 36 | "bootflat/panel", 37 | "bootflat/accordion", 38 | "bootflat/footer", 39 | "bootflat/timeline", 40 | "bootflat/dropdown"; 41 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-en_US.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | (function ($) { 8 | $.fn.selectpicker.defaults = { 9 | noneSelectedText: 'Nothing selected', 10 | noneResultsText: 'No results match', 11 | countSelectedText: function (numSelected, numTotal) { 12 | return (numSelected == 1) ? "{0} item selected" : "{0} items selected"; 13 | }, 14 | maxOptionsText: function (numAll, numGroup) { 15 | var arr = []; 16 | 17 | arr[0] = (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)'; 18 | arr[1] = (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'; 19 | 20 | return arr; 21 | }, 22 | selectAllText: 'Select All', 23 | deselectAllText: 'Deselect All', 24 | multipleSeparator: ', ' 25 | }; 26 | }(jQuery)); 27 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_well.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $well-font-color: $darkgray-dark !default; 4 | $well-background-color: $white !default; 5 | 6 | $well-blockquote-color: $mediumgray-light !default; 7 | 8 | $well-radius: 4px; 9 | $well-shadow: 0 1px 2px rgba(0, 0, 0, .2) !default; 10 | 11 | 12 | // Exports 13 | //------------------------------------------------------ 14 | 15 | @include exports("well") { 16 | 17 | /** 18 | * well 19 | * -------------------------------------------------- 20 | */ 21 | 22 | .well { 23 | padding: 10px; 24 | border: none; 25 | @include radius($type: border-radius, $value: $well-radius); 26 | color: $modal-font-color; 27 | background-color: $well-background-color; 28 | @include box-shadow($value: $well-shadow); 29 | 30 | & blockquote { 31 | border-color: $well-blockquote-color; 32 | } 33 | @at-root &-lg { 34 | padding: 20px; 35 | } 36 | @at-root &-sm { 37 | padding: 5px; 38 | } 39 | } 40 | 41 | } 42 | 43 | 44 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/js/i18n/defaults-fr_FR.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | (function ($) { 8 | $.fn.selectpicker.defaults = { 9 | noneSelectedText: 'Aucune sélection', 10 | noneResultsText: 'Aucun résultat', 11 | countSelectedText: function (numSelected, numTotal) { 12 | return (numSelected > 1) ? "{0} éléments sélectionés" : "{0} élément sélectioné"; 13 | }, 14 | maxOptionsText: function (numAll, numGroup) { 15 | var arr = []; 16 | 17 | arr[0] = (numAll > 1) ? 'Limite atteinte ({n} éléments max)' : 'Limite atteinte ({n} élément max)'; 18 | arr[1] = (numGroup > 1) ? 'Limite du groupe atteinte ({n} éléments max)' : 'Limite du groupe atteinte ({n} élément max)'; 19 | 20 | return arr; 21 | }, 22 | multipleSeparator: ', ' 23 | }; 24 | }(jQuery)); 25 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_tooltip.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $tooltip-background-color: $darkgray-dark !default; 4 | $tooltip-font-color: $white !default; 5 | 6 | 7 | // Exports 8 | //------------------------------------------------------ 9 | 10 | @include exports("tooltip") { 11 | 12 | /** 13 | * tooltip 14 | * -------------------------------------------------- 15 | */ 16 | 17 | .tooltip { 18 | @at-root &-inner { 19 | color: $tooltip-font-color; 20 | background-color: $tooltip-background-color; 21 | } 22 | &.top &-arrow, 23 | &.top-left &-arrow, 24 | &.top-right &-arrow { 25 | border-top-color: $tooltip-background-color; 26 | } 27 | &.right &-arrow { 28 | border-right-color: $tooltip-background-color; 29 | } 30 | &.left &-arrow { 31 | border-left-color: $tooltip-background-color; 32 | } 33 | &.bottom &-arrow, 34 | &.bottom-left &-arrow, 35 | &.bottom-right &-arrow { 36 | border-bottom-color: $tooltip-background-color; 37 | } 38 | } 39 | 40 | } 41 | 42 | 43 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_pager.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $paper-background-color: $grass-dark !default; 4 | $paper-background-color-hover: $grass-light !default; 5 | 6 | $paper-font-color: $white !default; 7 | $paper-font-color-disabled: $lightgray-dark !default; 8 | 9 | // Exports 10 | //------------------------------------------------------ 11 | 12 | @include exports("pager") { 13 | 14 | /** 15 | * pager 16 | * -------------------------------------------------- 17 | */ 18 | .pager { 19 | 20 | & li > a, 21 | & li > span { 22 | color: $paper-font-color; 23 | background-color: $paper-background-color; 24 | border-color: $paper-background-color; 25 | } 26 | & li > a:hover, 27 | & li > a:focus { 28 | background-color: $paper-background-color-hover; 29 | border-color: $paper-background-color-hover; 30 | } 31 | & .disabled > a, 32 | & .disabled > a:hover, 33 | & .disabled > a:focus, 34 | & .disabled > span { 35 | color: $paper-font-color-disabled; 36 | background-color: $paper-font-color; 37 | border-color: $paper-font-color-disabled; 38 | } 39 | } 40 | } 41 | 42 | 43 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_progress.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $progress-primary: $aqua-dark !default; 4 | $progress-success: $grass-dark !default; 5 | $progress-danger: $grapefruit-dark !default; 6 | $progress-warning: $sunflower-dark !default; 7 | $progress-info: $mint-dark !default; 8 | 9 | $progress-background-color: $lightgray-dark !default; 10 | 11 | // Exports 12 | //------------------------------------------------------ 13 | @include exports("progress") { 14 | 15 | /** 16 | * progress 17 | * -------------------------------------------------- 18 | */ 19 | .progress { 20 | background-color: $progress-background-color; 21 | @include box-shadow($value: none); 22 | 23 | &-bar { 24 | background-color: $progress-primary; 25 | @include box-shadow($value: none); 26 | } 27 | &-bar-success { 28 | background-color: $progress-success; 29 | } 30 | &-bar-info { 31 | background-color: $progress-info; 32 | } 33 | &-bar-warning { 34 | background-color: $progress-warning; 35 | } 36 | &-bar-danger { 37 | background-color: $progress-danger; 38 | } 39 | } 40 | } 41 | 42 | 43 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_pill.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $pill-background-color: $aqua-dark !default; 4 | $pill-background-color-hover: $lightgray-dark !default; 5 | $pill-font-color: $darkgray-dark !default; 6 | $pill-font-color-active: $white !default; 7 | 8 | 9 | // Exports 10 | //------------------------------------------------------ 11 | 12 | @include exports("pill") { 13 | 14 | /** 15 | * pill 16 | * -------------------------------------------------- 17 | */ 18 | .nav-pills { 19 | & > li.active > a, 20 | & > li.active > a:hover, 21 | & > li.active > a:focus { 22 | color: $pill-font-color-active; 23 | background-color: $pill-background-color; 24 | } 25 | & > li > a { 26 | color: $pill-background-color; 27 | } 28 | & > li > a:hover { 29 | color: $pill-font-color; 30 | background-color: $pill-background-color-hover; 31 | } 32 | & > .active > a > .badge { 33 | color: $pill-background-color; 34 | } 35 | & .open > a, 36 | & .open > a:focus, 37 | & .open > a:hover { 38 | color: $pill-font-color; 39 | background-color: $pill-background-color-hover; 40 | } 41 | } 42 | 43 | } 44 | 45 | 46 | -------------------------------------------------------------------------------- /ProgrammerProfile/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf import settings 2 | from django.conf.urls import patterns, include, url 3 | from django.conf.urls.static import static 4 | from django.contrib import admin 5 | from django.contrib.sitemaps.views import sitemap 6 | from ProgrammerProfile import sitemaps as my_sitemaps 7 | 8 | sitemaps = {'index': my_sitemaps.IndexSitemap, 9 | 'stats': my_sitemaps.StatsSitemap, 10 | 'staruser': my_sitemaps.StaruserSitemap, 11 | 'user': my_sitemaps.UserSitemap} 12 | 13 | urlpatterns = patterns('', 14 | url('^admin/', 15 | include(admin.site.urls)), 16 | url('^$', 17 | 'ProgrammerProfile.views.index'), 18 | url('^user/(?P\w+)/$', 19 | 'ProgrammerProfile.views.user'), 20 | url('^user/$', 21 | 'ProgrammerProfile.views.user'), 22 | url('^updateInfo$', 23 | 'ProgrammerProfile.views.updateInfo'), 24 | url('^staruser/$', 25 | 'ProgrammerProfile.views.staruser'), 26 | url('^staruser/(?P[^/]+)/$', 27 | 'ProgrammerProfile.views.staruser'), 28 | url('^stats/$', 29 | 'ProgrammerProfile.views.stats'), 30 | url('^logout/', 31 | 'ProgrammerProfile.views.logout'), 32 | url('', 33 | include('social.apps.django_app.urls', namespace='social')), 34 | url('^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, 35 | name='django.contrib.sitemaps.views.sitemap') 36 | ) + static(settings.STATIC_URL, 37 | document_root=settings.STATIC_ROOT) 38 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_popover.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $popover-background-color: $darkgray-dark !default; 4 | $popover-font-color: $white !default; 5 | $popover-title-font-color: $mediumgray-dark !default; 6 | 7 | 8 | // Exports 9 | //------------------------------------------------------ 10 | 11 | @include exports("popover") { 12 | 13 | /** 14 | * popover 15 | * -------------------------------------------------- 16 | */ 17 | 18 | .popover { 19 | background-color: $popover-background-color; 20 | color: $popover-font-color; 21 | border-color: $popover-background-color; 22 | 23 | @at-root &-title { 24 | padding-bottom: 0; 25 | font-weight: bold; 26 | color: $popover-title-font-color; 27 | background-color: transparent; 28 | border-bottom: none; 29 | } 30 | &.top .arrow, 31 | &.top .arrow:after { 32 | border-top-color: $popover-background-color; 33 | } 34 | &.right .arrow, 35 | &.right .arrow:after { 36 | border-right-color: $popover-background-color; 37 | } 38 | &.bottom .arrow, 39 | &.bottom .arrow:after { 40 | border-bottom-color: $popover-background-color; 41 | } 42 | &.left .arrow, 43 | &.left .arrow:after { 44 | border-left-color: $popover-background-color; 45 | } 46 | } 47 | 48 | } 49 | 50 | 51 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_checkbox_radio.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $img-src: "../bootflat/img/check_flat/default.png" !default; 4 | 5 | // Exports 6 | //------------------------------------------------------ 7 | 8 | @include exports("checkbox-radio") { 9 | 10 | /** 11 | * checkbox and radio 12 | * -------------------------------------------------- 13 | */ 14 | .checkbox, .radio { 15 | margin-top: 0; 16 | padding-left: 0; 17 | } 18 | .checkbox label, .radio label { 19 | position: relative; 20 | top: 2px; 21 | padding-left: 5px; 22 | } 23 | .icheckbox_flat, 24 | .iradio_flat { 25 | display: inline-block; 26 | *display: inline; 27 | vertical-align: middle; 28 | margin: 0; 29 | padding: 0 !important; 30 | width: 20px; 31 | height: 20px; 32 | background: url($img-src) no-repeat; 33 | border: none; 34 | cursor: pointer; 35 | } 36 | 37 | .icheckbox_flat { 38 | background-position: 0 0; 39 | 40 | &.checked { 41 | background-position: -22px 0; 42 | } 43 | &.disabled { 44 | background-position: -44px 0; 45 | cursor: default; 46 | } 47 | &.checked.disabled { 48 | background-position: -66px 0; 49 | } 50 | } 51 | 52 | .iradio_flat { 53 | background-position: -88px 0; 54 | 55 | &.checked { 56 | background-position: -110px 0; 57 | } 58 | &.disabled { 59 | background-position: -132px 0; 60 | cursor: default; 61 | } 62 | &.checked.disabled { 63 | background-position: -154px 0; 64 | } 65 | } 66 | 67 | } 68 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_label_badge.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $label-normal: $mediumgray-dark !default; 4 | $label-default: $white !default; 5 | $label-primary: $aqua-dark !default; 6 | $label-success: $grass-dark !default; 7 | $label-danger: $grapefruit-dark !default; 8 | $label-warning: $sunflower-dark !default; 9 | $label-info: $mint-dark !default; 10 | 11 | $label-default-font-color: $darkgray-dark !default; 12 | 13 | // Exports 14 | //------------------------------------------------------ 15 | 16 | @include exports("label-badge") { 17 | 18 | /** 19 | * labels and badges 20 | * -------------------------------------------------- 21 | */ 22 | .label, 23 | .badge { 24 | background-color: $label-normal; 25 | } 26 | 27 | .label-default, 28 | .badge-default { 29 | border: 1px solid $button-normal; 30 | background-color: $label-default; 31 | color: $label-default-font-color; 32 | } 33 | 34 | .label-primary, 35 | .badge-primary { 36 | border-color: $label-primary; 37 | background-color: $label-primary; 38 | } 39 | 40 | .label-success, 41 | .badge-success { 42 | border-color: $label-success; 43 | background-color: $label-success; 44 | } 45 | 46 | .label-danger, 47 | .badge-danger { 48 | border-color: $label-danger; 49 | background-color: $label-danger; 50 | } 51 | 52 | .label-warning, 53 | .badge-warning { 54 | border-color: $label-warning; 55 | background-color: $label-warning; 56 | } 57 | 58 | .label-info, 59 | .badge-info { 60 | border-color: $label-info; 61 | background-color: $label-info; 62 | } 63 | } 64 | 65 | 66 | -------------------------------------------------------------------------------- /ProgrammerProfile/sitemaps.py: -------------------------------------------------------------------------------- 1 | from django.contrib.sitemaps import Sitemap 2 | from django.core.urlresolvers import reverse 3 | from ProgrammerProfile.models import UserInfo 4 | import ProgrammerProfile.views 5 | 6 | 7 | class IndexSitemap(Sitemap): 8 | changefreq = 'monthly' 9 | priority = 1.0 10 | protocol = 'http' 11 | 12 | def items(self): 13 | return ['index'] 14 | 15 | def location(self, obj): 16 | return reverse('ProgrammerProfile.views.index') 17 | 18 | 19 | class StatsSitemap(Sitemap): 20 | changefreq = 'monthly' 21 | priority = 0.9 22 | protocol = 'http' 23 | 24 | def items(self): 25 | return ['stats'] 26 | 27 | def location(self, obj): 28 | return reverse('ProgrammerProfile.views.stats') 29 | 30 | 31 | class StaruserSitemap(Sitemap): 32 | changefreq = 'monthly' 33 | priority = 0.8 34 | protocol = 'http' 35 | 36 | def items(self): 37 | rtn = [] 38 | rtn.extend(ProgrammerProfile.views.SKILL_LANGUAGE_CATEGORY) 39 | rtn.extend(ProgrammerProfile.views.SKILL_EDITOR_CATEGORY) 40 | rtn.extend(ProgrammerProfile.views.SKILL_PLATFORM_CATEGORY) 41 | rtn.extend(ProgrammerProfile.views.SKILL_CONFIGURATION_CATEGORY) 42 | rtn.extend(ProgrammerProfile.views.SKILL_OTHERS_CATEGORY) 43 | return rtn 44 | 45 | def location(self, obj): 46 | return reverse('ProgrammerProfile.views.staruser', args=[obj]) 47 | 48 | class UserSitemap(Sitemap): 49 | changefreq = 'monthly' 50 | priority = 0.5 51 | protocol = 'http' 52 | 53 | def items(self): 54 | rtn = list(set([x['target__username'] for x in UserInfo.objects.values('target__username')])) 55 | return rtn 56 | 57 | def location(self, obj): 58 | return reverse('ProgrammerProfile.views.user', args=[obj]) 59 | 60 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_stepper.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $stepper-primary: $aqua-dark !default; 4 | $stepper-primary-hover: $aqua-light !default; 5 | 6 | $stepper-arrow-width: 20px !default; 7 | 8 | 9 | // Exports 10 | //------------------------------------------------------ 11 | 12 | @include exports("stepper") { 13 | 14 | /** 15 | * stepper 16 | * -------------------------------------------------- 17 | */ 18 | .stepper { 19 | & .stepper-input { 20 | overflow: hidden; 21 | -moz-appearance: textfield; 22 | 23 | &::-webkit-inner-spin-button, 24 | &::-webkit-outer-spin-button { 25 | -webkit-appearance: none; 26 | margin: 0; 27 | } 28 | } 29 | 30 | & .stepper-arrow { 31 | background-color: $stepper-primary; 32 | cursor: pointer; 33 | display: block; 34 | height: 50%; 35 | position: absolute; 36 | right: 15px; 37 | text-indent: -99999px; 38 | width: $stepper-arrow-width; 39 | 40 | &:hover, 41 | &:active { 42 | background-color: $stepper-primary-hover; 43 | } 44 | } 45 | & .up { 46 | @include prefixer($property: border-top-right-radius, $value: 3px, $prefixes: webkit moz spec); 47 | border: 1px solid darken($stepper-primary, 7%); 48 | top: 0; 49 | } 50 | & .down { 51 | @include prefixer($property: border-bottom-right-radius, $value: 3px, $prefixes: webkit moz spec); 52 | bottom: 0; 53 | } 54 | & .up::before, 55 | & .down::before { 56 | content: ""; 57 | position: absolute; 58 | width: 0; 59 | height: 0; 60 | border-left: 4px solid transparent; 61 | border-right: 4px solid transparent; 62 | } 63 | & .up::before { 64 | top: 5px; 65 | left: 5px; 66 | border-bottom: 4px solid $white; 67 | } 68 | & .down:before { 69 | bottom: 5px; 70 | left: 6px; 71 | border-top: 4px solid $white; 72 | } 73 | &.disabled .stepper-arrow { 74 | background-color: $stepper-primary; 75 | @include opacity($opacity: 45, $filter: true); 76 | } 77 | } 78 | 79 | } 80 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_footer.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $footer-background-color: $darkgray-dark !default; 4 | $footer-menu-title-color: $lightgray-dark !default; 5 | $footer-menu-item-color: $mediumgray-dark !default; 6 | $footer-menu-item-color-hover: $mediumgray-light !default; 7 | $footer-logo-color: $white !default; 8 | 9 | 10 | 11 | // Exports 12 | //------------------------------------------------------ 13 | 14 | @include exports("footer") { 15 | 16 | /** 17 | * footer 18 | * -------------------------------------------------- 19 | */ 20 | 21 | .footer { 22 | padding: 40px 0; 23 | background-color: $footer-background-color; 24 | 25 | &-logo, 26 | &-nav { 27 | float: left; 28 | padding: 0 20px; 29 | width: 20%; 30 | } 31 | @media (max-width: 768px) { 32 | &-logo { 33 | margin-bottom: 20px; 34 | } 35 | &-logo, 36 | &-nav { 37 | float: none; 38 | display: block; 39 | width: 100%; 40 | } 41 | } 42 | &-logo { 43 | margin-top: -5px; 44 | height: 32px; 45 | line-height: 32px; 46 | 47 | & img { 48 | margin-right: 10px; 49 | } 50 | & a { 51 | font-size: 20px; 52 | font-weight: bold; 53 | color: $footer-logo-color; 54 | } 55 | & a:hover, 56 | & a:active { 57 | text-decoration: none; 58 | } 59 | } 60 | &-nav .nav-title { 61 | margin-bottom: 15px; 62 | color: $footer-menu-title-color; 63 | } 64 | &-nav .nav-item { 65 | line-height: 28px; 66 | & > a { 67 | color: $footer-menu-item-color; 68 | } 69 | & > a:hover, 70 | & > a:active { 71 | color: $footer-menu-item-color-hover; 72 | text-decoration: none; 73 | } 74 | } 75 | &-copyright { 76 | color: $footer-menu-item-color; 77 | } 78 | } 79 | 80 | } 81 | 82 | 83 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_pagination.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $pagination-background-color: $white !default; 4 | $pagination-background-color-hover: $mediumgray-light !default; 5 | $pagination-background-color-active: $grass-dark !default; 6 | 7 | $pagination-font-color: $darkgray-dark !default; 8 | $pagination-font-color-hover: $white !default; 9 | $pagination-font-color-disabled: $lightgray-dark !default; 10 | 11 | // Exports 12 | //------------------------------------------------------ 13 | 14 | @include exports("pagination") { 15 | 16 | /** 17 | * pagination 18 | * -------------------------------------------------- 19 | */ 20 | .pagination { 21 | 22 | & > li > a, 23 | & > li > span { 24 | color: $pagination-font-color; 25 | background-color: $pagination-background-color; 26 | border-color: $pagination-background-color-hover; 27 | } 28 | & > li > a:hover, 29 | & > li > span:hover, 30 | & > li > a:focus, 31 | & > li > span:focus { 32 | color: $pagination-font-color-hover; 33 | background-color: $pagination-background-color-hover; 34 | border-color: $pagination-background-color-hover; 35 | } 36 | & > .active > a, 37 | & > .active > span, 38 | & > .active > a:hover, 39 | & > .active > span:hover, 40 | & > .active > a:focus, 41 | & > .active > span:focus { 42 | color: $pagination-font-color-hover; 43 | background-color: $pagination-background-color-active; 44 | border-color: $pagination-background-color-active; 45 | } 46 | & > .disabled > span, 47 | & > .disabled > span:hover, 48 | & > .disabled > span:focus, 49 | & > .disabled > a, 50 | & > .disabled > a:hover, 51 | & > .disabled > a:focus { 52 | color: $pagination-font-color-disabled; 53 | background-color: $pagination-background-color; 54 | border-color: $pagination-background-color-hover; 55 | } 56 | } 57 | } 58 | 59 | 60 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # 2019/1/1にクローズしました 3 | 4 | Twitterの認証に関するポリシーの変更や、毎月かかるサーバー料金が地味に負担だった。と、泣く泣くクローズしました。初めて沢山の人に使ってもらえたサービスだったので思い出深いです… 5 | 6 | ## Programmer Profileって何? 7 | 8 | 以下の事ができるサービスです。 9 | 10 |

11 | 12 | 13 | ##### プログラミングを勉強する際に、Twitterでフォローすると参考になる人を探せるサービス 14 | 15 | これから何かを勉強しよう!と思った時に、その領域に携わってる人・勉強している人をフォローすると、 16 | その界隈の動向が見えてきます。 17 | 18 | しかし、言語や技術用語は普通に検索するとなかなか引っかからないものも多いです。 19 | (CとかDとかF#とかRとか、ノイズ多く特に難しいですよね。「なでしこ」と検索して出てくるのも、サッカーの話ばかりだったりします) 20 | 21 | 各界について、自薦他薦含めて推薦数順に並べていますので、これから勉強していく上で情報源となるアカウントを探すことができます。 22 | 23 | ** 探してみる > ** [各界のフォローすべきTwitterアカウント](http://www.programmerprofile.net/staruser/ "フォローすべき人たち") 24 | 25 |

26 | 27 | ##### 同志を探せるサービス 28 | 29 | **本サービスでは、自薦を推奨しています。**つまり、「僕(私)はコレをやってるよ!」という表明です。プロフェッショナルである必要は全くありません。 30 | 31 | モノ作りや勉強をする時に、同志がいるというのは励みになります。 32 | 実際僕も、モノ作りをされてる方とTwitter上で交流しながら、相談したりされたりしながら、このサービスを作成しました。 33 | 34 | 推薦数関係なく、気の合いそうな人を探して、ここから一緒に悩んだり、相談したり、モチベーションを高め合ったりできる出会いが生まれたらなと思っています。 35 | 36 | ** ぜひ、右上のログインからユーザー登録をして、あなたの情報を教えてください! ** 37 | 38 |

39 | 40 | ##### プログラマのbio代わりになるツール 41 | 42 | プログラマの役に立つWebサービスがたくさんあります。 43 | slashdotといった老舗から、github、stackoverflow、qiita、などなど・・・ 44 | 45 | 自分のページをbioに設定すれば色々なアカウントや自分の情報を集約して、技術情報に特化したプロフィールを示す事ができる。 46 | 47 | 言うなれば、プログラマの為のツイプロです。 48 | **ぜひ、あなたのユーザーページ(http://www.programmerprofile.net/user/<あなたのTwitterアカウント名>)をbioに設定してください! ** 49 | 50 |

51 | 52 | 53 | ## ソースコードを公開しています 54 | 55 | [github:nakazye/ProgrammerProfile](https://github.com/nakazye/ProgrammerProfile "github:nakazye/ProgrammerProfile") でソースコードを公開しています。 56 | 改修に協力して欲しいという意図ではなくDjangoでアプリケーションを作成する際の参考になればという思いと、 57 | (恥ずかしい限りですが)こんな稚拙なコードでも公開まで持っていけるとというのを示せればと思っての公開です。 58 | 59 | 「僕(私)も何か作ってみようかな」という人が一人でも増えれば嬉しいです。 60 | 61 | 62 | 63 | これからの改修予定は全てgithubのissueに記載しています。 64 | [github:nakazye/ProgrammerProfile>issues](https://github.com/nakazye/ProgrammerProfile/issues "github:nakazye/ProgrammerProfile>issues") 65 | 66 | たとえば、「○○のカテゴリを追加して欲しい」などといった要望をいただいていますが、そういった要望がありましたら、issueに追加するかTwitterの[@nakazye](https://twitter.com/nakazye/ "@nakazye")までご連絡頂けると幸いです。 67 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_alert.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $alert-primary: $aqua-light !default; 4 | $alert-success: $grass-light !default; 5 | $alert-danger: $grapefruit-light !default; 6 | $alert-warning: $sunflower-light !default; 7 | 8 | $alert-close-color: $black !default; 9 | 10 | $alert-link-color: $mediumgray-light !default; 11 | 12 | 13 | // Exports 14 | //------------------------------------------------------ 15 | 16 | @include exports("alert") { 17 | 18 | /** 19 | * alert 20 | * -------------------------------------------------- 21 | */ 22 | .alert { 23 | 24 | & h4 { 25 | margin-bottom: 10px; 26 | font-weight: bold; 27 | } 28 | 29 | &-dismissable .close { 30 | color: $alert-close-color; 31 | } 32 | 33 | @at-root &-info { 34 | background-color: lighten($alert-primary, 10%); 35 | border: $alert-primary; 36 | } 37 | @at-root &-warning { 38 | background-color: lighten($alert-warning, 10%); 39 | border: $alert-warning; 40 | } 41 | @at-root &-danger { 42 | background-color: lighten($alert-danger, 10%); 43 | border: $alert-danger; 44 | } 45 | @at-root &-success { 46 | background-color: lighten($alert-success, 10%); 47 | border: $alert-success; 48 | } 49 | 50 | @at-root & &-link { 51 | cursor: pointer; 52 | text-decoration: underline; 53 | @include opacity($opacity: 65, $filter: true); 54 | &:hover, 55 | &:focus { 56 | @include opacity($opacity: 45, $filter: true); 57 | } 58 | } 59 | 60 | @at-root & .btn-link, 61 | & .btn-link:hover, 62 | & .btn-link:focus { 63 | color: $alert-close-color; 64 | @include opacity($opacity: 65, $filter: true); 65 | } 66 | @at-root & .btn-link:focus, 67 | & .btn-link:hover { 68 | text-decoration: none; 69 | @include opacity($opacity: 40, $filter: true); 70 | } 71 | } 72 | 73 | } 74 | 75 | 76 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_jumbotron.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $jumbotron-font-color: $darkgray-dark !default; 4 | 5 | $jumbotron-background-color: $white !default; 6 | 7 | $jumbotron-radius: 4px; 8 | $jumbotron-shadow: 0 1px 2px rgba(0, 0, 0, .2) !default; 9 | 10 | 11 | // Exports 12 | //------------------------------------------------------ 13 | 14 | @include exports("jumbotron") { 15 | 16 | /** 17 | * jumbotron 18 | * -------------------------------------------------- 19 | */ 20 | .jumbotron { 21 | margin-bottom: 20px; 22 | padding: 0; 23 | @include radius($type: border-radius, $value: $jumbotron-radius); 24 | background-color: $jumbotron-background-color; 25 | @include box-shadow($value: $jumbotron-shadow); 26 | 27 | @at-root .container & { 28 | @include radius($type: border-radius, $value: $jumbotron-radius); 29 | } 30 | 31 | & > &-photo img { 32 | @include radius($type: border-radius, $value: $jumbotron-radius $jumbotron-radius 0 0); 33 | width: 100%; 34 | } 35 | 36 | & &-contents { 37 | padding: 20px; 38 | color: $jumbotron-font-color; 39 | } 40 | & .carousel, 41 | & .carousel-inner, 42 | & .carousel-inner > .item.active img { 43 | @include radius($type: border-radius, $value: $jumbotron-radius $jumbotron-radius 0 0); 44 | } 45 | .carousel-inner > .item > a >img, 46 | .carousel-inner > .item > img { 47 | width: 100%; 48 | } 49 | & .carousel-control.left { 50 | @include radius($type: border-radius, $value: $jumbotron-radius 0 0 0); 51 | } 52 | & .carousel-control.right { 53 | @include radius($type: border-radius, $value: 0 $jumbotron-radius 0 0); 54 | } 55 | 56 | & h1, & .h1, 57 | & h2, & .h2 { 58 | font-weight: 400; 59 | } 60 | 61 | & h1, & .h1 { 62 | font-size: 28px; 63 | } 64 | & h2, & .h2 { 65 | font-size: 24px; 66 | } 67 | & p { 68 | font-size: 14px; 69 | } 70 | 71 | @media screen and (min-width: 768px) { 72 | &, 73 | .container & { 74 | padding: 0; 75 | } 76 | & h1, 77 | & .h1 { 78 | font-size: 28px; 79 | } 80 | } 81 | } 82 | } 83 | 84 | 85 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_accordion.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $accordion-border-color: $lightgray-dark !default; 4 | 5 | $accordion-panel-font-color: $darkgray-dark !default; 6 | $accordion-panel-font-color-hover: $mediumgray-dark !default; 7 | $accordion-panel-radius: 4px !default; 8 | 9 | $accordion-panel-shadow: 0 1px 2px rgba(0, 0, 0, .2) !default; 10 | 11 | $accordion-panel-background-color: $white !default; 12 | 13 | 14 | 15 | // Exports 16 | //------------------------------------------------------ 17 | 18 | @include exports("accordion") { 19 | 20 | /** 21 | * accordion 22 | * -------------------------------------------------- 23 | */ 24 | .panel-group { 25 | & .panel { 26 | @include radius($type: border-radius, $value: 0); 27 | background-color: transparent; 28 | @include box-shadow($value: none); 29 | } 30 | & .panel+.panel { 31 | margin-top: 0; 32 | } 33 | & .panel-heading { 34 | padding: 0; 35 | border-bottom-color: transparent; 36 | } 37 | & .panel-heading+.panel-collapse .panel-body { 38 | padding: 15px 0; 39 | border-top-color: transparent; 40 | } 41 | & .panel-title a { 42 | padding: 10px 0; 43 | display: block; 44 | } 45 | } 46 | .panel-group-lists { 47 | & .panel { 48 | border-bottom: 1px solid $accordion-border-color; 49 | background-color: $accordion-panel-background-color; 50 | @include box-shadow($value: $accordion-panel-shadow); 51 | } 52 | & .panel:first-child { 53 | @include radius($type: border-radius, $value: $accordion-panel-radius $accordion-panel-radius 0 0); 54 | } 55 | & .panel:last-child { 56 | @include radius($type: border-radius, $value: 0 0 $accordion-panel-radius $accordion-panel-radius); 57 | border-bottom: none; 58 | } 59 | & .panel-heading+.panel-collapse .panel-body { 60 | padding: 15px; 61 | border-top-color: $accordion-border-color; 62 | } 63 | & .panel-title a { 64 | padding: 10px 15px; 65 | color: $accordion-panel-font-color; 66 | } 67 | & .panel-title a:hover, 68 | & .panel-title a:focus, 69 | & .panel-title a:active { 70 | color: $accordion-panel-font-color-hover; 71 | } 72 | } 73 | 74 | } 75 | 76 | 77 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_typography.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $body-font-color: $darkgray-dark !default; 4 | $body-background-color: $white !default; 5 | 6 | $link-font-color: $aqua-dark !default; 7 | $link-font-color-hover: $aqua-light !default; 8 | 9 | $blockquote-border-color: $mediumgray-light !default; 10 | 11 | $image-radius: 4px !default; 12 | 13 | // Exports 14 | //------------------------------------------------------ 15 | 16 | @include exports("typography") { 17 | 18 | /** 19 | * typography 20 | * -------------------------------------------------- 21 | */ 22 | 23 | body { 24 | font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; 25 | // font-family: 'Lato', sans-serif; 26 | color: $body-font-color; 27 | background-color: $body-background-color; 28 | } 29 | a { 30 | color: $link-font-color; 31 | text-decoration: none; 32 | 33 | &:hover, 34 | &:focus { 35 | color: $link-font-color-hover; 36 | text-decoration: none; 37 | } 38 | &:focus { 39 | outline: none; 40 | } 41 | } 42 | h1, 43 | h2, 44 | h3, 45 | h4, 46 | h5, 47 | h6, 48 | .h1, 49 | .h2, 50 | .h3, 51 | .h4, 52 | .h5, 53 | .h6 { 54 | font-family: inherit; 55 | font-weight: 700; 56 | line-height: 1.1; 57 | color: inherit; 58 | } 59 | h1 small, 60 | h2 small, 61 | h3 small, 62 | h4 small, 63 | h5 small, 64 | h6 small, 65 | .h1 small, 66 | .h2 small, 67 | .h3 small, 68 | .h4 small, 69 | .h5 small, 70 | .h6 small { 71 | color: #e7e9ec; 72 | } 73 | h1, 74 | h2, 75 | h3 { 76 | margin-top: 30px; 77 | margin-bottom: 15px; 78 | } 79 | h4, 80 | h5, 81 | h6 { 82 | margin-top: 15px; 83 | margin-bottom: 15px; 84 | } 85 | h6 { 86 | font-weight: normal; 87 | } 88 | h1, 89 | .h1 { 90 | font-size: 51px; 91 | } 92 | h2, 93 | .h2 { 94 | font-size: 43px; 95 | } 96 | h3, 97 | .h3 { 98 | font-size: 30px; 99 | } 100 | h4, 101 | .h4 { 102 | font-size: 19px; 103 | } 104 | h5, 105 | .h5 { 106 | font-size: 18px; 107 | } 108 | h6, 109 | .h6 { 110 | font-size: 14px; 111 | } 112 | blockquote { 113 | border-left: 3px solid $blockquote-border-color; 114 | } 115 | .img-rounded { 116 | @include radius($type: border-radius, $value: $image-radius); 117 | } 118 | .img-comment { 119 | font-size: 15px; 120 | line-height: 1.2; 121 | font-style: italic; 122 | margin: 24px 0; 123 | } 124 | 125 | } 126 | 127 | 128 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/js/jquery.fs.stepper.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Stepper v3.0.7 - 2014-05-07 3 | * A jQuery plugin for cross browser number inputs. Part of the Formstone Library. 4 | * http://formstone.it/stepper/ 5 | * 6 | * Copyright 2014 Ben Plum; MIT Licensed 7 | */ 8 | 9 | !function(a){"use strict";function b(b){b=a.extend({},l,b||{});for(var d=a(this),e=0,f=d.length;f>e;e++)c(d.eq(e),b);return d}function c(b,c){if(!b.hasClass("stepper-input")){c=a.extend({},c,b.data("stepper-options"));var f=parseFloat(b.attr("min")),g=parseFloat(b.attr("max")),h=parseFloat(b.attr("step"))||1;b.addClass("stepper-input").wrap('
').after(''+c.labels.up+''+c.labels.down+"");var i=b.parent(".stepper"),k=a.extend({$stepper:i,$input:b,$arrow:i.find(".stepper-arrow"),min:void 0===typeof f||isNaN(f)?!1:f,max:void 0===typeof g||isNaN(g)?!1:g,step:void 0===typeof h||isNaN(h)?1:h,timer:null},c);k.digits=j(k.step),b.is(":disabled")&&i.addClass("disabled"),i.on("keypress",".stepper-input",k,d),i.on("touchstart.stepper mousedown.stepper",".stepper-arrow",k,e).data("stepper",k)}}function d(a){var b=a.data;(38===a.keyCode||40===a.keyCode)&&(a.preventDefault(),g(b,38===a.keyCode?b.step:-b.step))}function e(b){b.preventDefault(),b.stopPropagation(),f(b);var c=b.data;if(!c.$input.is(":disabled")&&!c.$stepper.hasClass("disabled")){var d=a(b.target).hasClass("up")?c.step:-c.step;c.timer=h(c.timer,125,function(){g(c,d,!1)}),g(c,d),a("body").on("touchend.stepper mouseup.stepper",c,f)}}function f(b){b.preventDefault(),b.stopPropagation();var c=b.data;i(c.timer),a("body").off(".stepper")}function g(a,b){var c=parseFloat(a.$input.val()),d=b;void 0===typeof c||isNaN(c)?d=a.min!==!1?a.min:0:a.min!==!1&&ca.max&&(d-=a.step),d!==c&&(d=k(d,a.digits),a.$input.val(d).trigger("change"))}function h(a,b,c){return i(a),setInterval(c,b)}function i(a){a&&(clearInterval(a),a=null)}function j(a){var b=String(a);return b.indexOf(".")>-1?b.length-b.indexOf(".")-1:0}function k(a,b){var c=Math.pow(10,b);return Math.round(a*c)/c}var l={customClass:"",labels:{up:"Up",down:"Down"}},m={defaults:function(b){return l=a.extend(l,b||{}),a(this)},destroy:function(){return a(this).each(function(){var b=a(this).data("stepper");b&&(b.$stepper.off(".stepper").find(".stepper-arrow").remove(),b.$input.unwrap().removeClass("stepper-input"))})},disable:function(){return a(this).each(function(){var b=a(this).data("stepper");b&&(b.$input.attr("disabled","disabled"),b.$stepper.addClass("disabled"))})},enable:function(){return a(this).each(function(){var b=a(this).data("stepper");b&&(b.$input.attr("disabled",null),b.$stepper.removeClass("disabled"))})}};a.fn.stepper=function(a){return m[a]?m[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?this:b.apply(this,arguments)},a.stepper=function(a){"defaults"===a&&m.defaults.apply(this,Array.prototype.slice.call(arguments,1))}}(jQuery,this); -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_toggle.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $toggle-height: 32px !default; 4 | $toggle-checkbox-opacity: 0 !default; 5 | 6 | $toggle-transition-value: all .25s ease-in-out !default; 7 | 8 | $toggle-default-background-color: $white !default; 9 | $toggle-checked-background-color: $grass-light !default; 10 | $toggle-disabled-background-color: $lightgray-dark !default; 11 | 12 | $toggle-handle-width: 50px !default; 13 | $toggle-handle-height: 32px !default; 14 | $toggle-handle-radius: 19px !default; 15 | 16 | $toggle-control-width: 30px !default; 17 | $toggle-control-height: 30px !default; 18 | $toggle-control-radius: 30px !default; 19 | 20 | $toggle-shadow: inset 0 0 0 1px lighten($mediumgray-dark, 5%) !default; 21 | $toggle-control-shadow: inset 0 0 0 1px lighten($mediumgray-dark, 5%), 1px 1px 1px lighten($mediumgray-dark, 10%) !default; 22 | $toggle-checked-shadow: inset 0 0 0 1px $lightgray-light, 1px 1px 1px lighten($mediumgray-dark, 10%) !default; 23 | 24 | // Exports 25 | //------------------------------------------------------ 26 | 27 | @include exports("toggle") { 28 | 29 | /** 30 | * toggle 31 | * -------------------------------------------------- 32 | */ 33 | .toggle { 34 | height: $toggle-height; 35 | 36 | & input[type="checkbox"], 37 | & input[type="radio"] { 38 | width: 0; 39 | height: 0; 40 | margin: 0; 41 | padding: 0; 42 | text-indent: -100000px; 43 | @include opacity($opacity: $toggle-checkbox-opacity, $filter: true); 44 | } 45 | 46 | & .handle { 47 | display: block; 48 | position: relative; 49 | top: -20px; 50 | left: 0; 51 | width: $toggle-handle-width; 52 | height: $toggle-handle-height; 53 | background-color: $toggle-default-background-color; 54 | @include radius($value: $toggle-handle-radius); 55 | @include box-shadow($value:$toggle-shadow); 56 | 57 | &:before, 58 | &:after { 59 | content: ""; 60 | position: absolute; 61 | top: 1px; 62 | left: 1px; 63 | display: block; 64 | width: $toggle-control-width; 65 | height: $toggle-control-height; 66 | @include radius($value: $toggle-control-radius); 67 | @include transition($toggle-transition-value); 68 | background-color: $toggle-default-background-color; 69 | @include box-shadow($value:$toggle-control-shadow); 70 | } 71 | 72 | } 73 | & input[type="checkbox"]:disabled + .handle, 74 | & input[type="radio"]:disabled + .handle, 75 | & input[type="checkbox"]:disabled + .handle:before, 76 | & input[type="radio"]:disabled + .handle:before, 77 | & input[type="checkbox"]:disabled + .handle:after, 78 | & input[type="radio"]:disabled + .handle:after { 79 | @include opacity($opacity: 60, $filter: true); 80 | background-color: $toggle-disabled-background-color; 81 | } 82 | 83 | & input[type="checkbox"]:checked + .handle:before, 84 | & input[type="radio"]:checked + .handle:before { 85 | width: $toggle-handle-width; 86 | background-color: $toggle-checked-background-color; 87 | } 88 | & input[type="checkbox"]:checked + .handle:after, 89 | & input[type="radio"]:checked + .handle:after { 90 | left: 20px; 91 | @include box-shadow($value:$toggle-checked-shadow); 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_pricing.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $pricing-primary: $aqua-light !default; 4 | $pricing-success: $grass-light !default; 5 | $pricing-warning: $sunflower-light !default; 6 | 7 | $pricing-foot-background-color: $lightgray-dark !default; 8 | $pricing-shadow: 0 1px 2px rgba(0, 0, 0, .2) !default; 9 | $pricing-shadow-active: 0 0 8px rgba(0, 0, 0, .6) !default; 10 | $pricing-radius: 4px !default; 11 | 12 | 13 | 14 | 15 | // Exports 16 | //------------------------------------------------------ 17 | 18 | @include exports("pricing") { 19 | 20 | /** 21 | * pricing 22 | * -------------------------------------------------- 23 | */ 24 | .pricing { 25 | 26 | & ul { 27 | list-style: none; 28 | padding: 0; 29 | } 30 | 31 | & .unit { 32 | position: relative; 33 | display: inline-block; 34 | text-align: center; 35 | min-width: 250px; 36 | @include radius($type: border-radius, $value: $pricing-radius); 37 | @include box-shadow($value: $pricing-shadow); 38 | 39 | &.active { 40 | top: 5px; 41 | margin-left: -36px; 42 | margin-right: -36px; 43 | z-index: 1; 44 | @include box-shadow($value: $pricing-shadow-active); 45 | 46 | & .price-title h3 { 47 | font-size: 40px; 48 | } 49 | } 50 | } 51 | 52 | @media screen and (max-width: 767px) { 53 | & .unit { 54 | display: block; 55 | margin-bottom: 20px; 56 | 57 | &.active { 58 | top: 0; 59 | margin-left: 0; 60 | margin-right: 0; 61 | 62 | & .price-title h3 { 63 | font-size: 30px; 64 | } 65 | } 66 | } 67 | } 68 | 69 | & .price-title { 70 | padding: 20px 20px 10px; 71 | @include radius($type: border-top-left-radius, $value: $pricing-radius); 72 | @include radius($type: border-top-right-radius, $value: $pricing-radius); 73 | color: #FFF; 74 | 75 | & h3, 76 | & h3 > p { 77 | margin: 0; 78 | } 79 | } 80 | 81 | & .price-body { 82 | padding: 20px 20px 10px; 83 | 84 | & ul { 85 | padding-top: 10px; 86 | } 87 | 88 | & li { 89 | margin-bottom: 10px; 90 | } 91 | 92 | & h4 { 93 | margin: 0; 94 | } 95 | } 96 | 97 | & .price-foot { 98 | padding: 20px; 99 | @include radius($type: border-bottom-left-radius, $value: $pricing-radius); 100 | @include radius($type: border-bottom-right-radius, $value: $pricing-radius); 101 | 102 | background-color: $pricing-foot-background-color; 103 | } 104 | 105 | & .price-primary { 106 | & .price-title { 107 | background-color: $pricing-primary; 108 | } 109 | & .price-body { 110 | background-color: lighten($pricing-primary, 30%); 111 | & ul { 112 | border-top: 1px solid lighten($pricing-primary, 20%); 113 | } 114 | } 115 | } 116 | & .price-success { 117 | & .price-title { 118 | background-color: $pricing-success; 119 | } 120 | & .price-body { 121 | background-color: lighten($pricing-success, 30%); 122 | & ul { 123 | border-top: 1px solid lighten($pricing-success, 20%); 124 | } 125 | } 126 | } 127 | & .price-warning { 128 | & .price-title { 129 | background-color: $pricing-warning; 130 | } 131 | & .price-body { 132 | background-color: lighten($pricing-warning, 30%); 133 | & ul { 134 | border-top: 1px solid lighten($pricing-warning, 20%); 135 | } 136 | } 137 | } 138 | } 139 | } 140 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_button_group.scss: -------------------------------------------------------------------------------- 1 | // Exports 2 | //------------------------------------------------------ 3 | 4 | @include exports("button-group") { 5 | 6 | /** 7 | * button-group 8 | * -------------------------------------------------- 9 | */ 10 | .btn-group { 11 | @at-root &.open .dropdown-toggle { 12 | @include box-shadow($value: inset 0 1px 2px rgba(0, 0, 0, .125)); 13 | } 14 | 15 | & .btn { 16 | border-left-color: darken($button-normal, 7%); 17 | } 18 | 19 | @at-root &.open .btn-default.dropdown-toggle, 20 | & .btn-default:focus, 21 | & .btn-default:active, 22 | & .btn-default.active { 23 | color: $button-default; 24 | } 25 | 26 | & .btn-primary, 27 | & .btn-primary:focus, 28 | & .btn-primary:active, 29 | & .btn-primary.active { 30 | border-left-color: darken($button-primary, 7%); 31 | } 32 | 33 | & .btn-success, 34 | & .btn-success:focus, 35 | & .btn-success:active, 36 | & .btn-success.active { 37 | border-left-color: darken($button-success, 7%); 38 | } 39 | 40 | & .btn-warning, 41 | & .btn-warning:focus, 42 | & .btn-warning:active, 43 | & .btn-warning.active { 44 | border-left-color: darken($button-warning, 12%); 45 | } 46 | 47 | & .btn-danger, 48 | & .btn-danger:focus, 49 | & .btn-danger:active, 50 | & .btn-danger.active { 51 | border-left-color: darken($button-danger, 7%); 52 | } 53 | 54 | & .btn-info, 55 | & .btn-info:focus, 56 | & .btn-info:active, 57 | & .btn-info.active { 58 | border-left-color: darken($button-info, 7%); 59 | } 60 | 61 | & .btn:first-child, 62 | & .btn-primary:first-child, 63 | & .btn-success:first-child, 64 | & .btn-warning:first-child, 65 | & .btn-danger:first-child, 66 | & .btn-info:first-child { 67 | border-left-color: transparent; 68 | } 69 | } 70 | 71 | .btn-group-vertical { 72 | & .btn, 73 | & .btn-group .btn-primary { 74 | border-top-color: darken($button-normal, 7%) !important; 75 | } 76 | 77 | & .btn-primary, 78 | & .btn-primary:focus, 79 | & .btn-primary:active, 80 | & .btn-primary.active, 81 | & .btn-group .btn-primary { 82 | border-top-color: darken($button-primary, 7%) !important; 83 | } 84 | 85 | & .btn-success, 86 | & .btn-success:focus, 87 | & .btn-success:active, 88 | & .btn-success.active, 89 | & .btn-group .btn-success { 90 | border-top-color: darken($button-success, 7%) !important; 91 | } 92 | 93 | & .btn-warning, 94 | & .btn-warning:focus, 95 | & .btn-warning:active, 96 | & .btn-warning.active, 97 | & .btn-group .btn-warning { 98 | border-top-color: darken($button-warning, 12%) !important; 99 | } 100 | 101 | & .btn-danger, 102 | & .btn-danger:focus, 103 | & .btn-danger:active, 104 | & .btn-danger.active, 105 | & .btn-group .btn-danger { 106 | border-top-color: darken($button-danger, 7%) !important; 107 | } 108 | 109 | & .btn-info, 110 | & .btn-info:focus, 111 | & .btn-info:active, 112 | & .btn-info.active, 113 | & .btn-group .btn-info { 114 | border-top-color: darken($button-info, 7%) !important; 115 | } 116 | 117 | & .btn:not(.btn-default):first-child, 118 | & .btn-primary:first-child, 119 | & .btn-success:first-child, 120 | & .btn-warning:first-child, 121 | & .btn-danger:first-child, 122 | & .btn-info:first-child { 123 | border-top: none; 124 | } 125 | } 126 | 127 | } 128 | 129 | 130 | 131 | 132 | 133 | 134 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_calendar.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $calendar-background-color: $bittersweet-light !default; 4 | $calendar-font-color: $white !default; 5 | $calendar-current-color: $bittersweet-dark !default; 6 | 7 | $calendar-shadow: 0 1px 2px rgba(0, 0, 0, .2) !default; 8 | $calendar-radius: 4px !default; 9 | 10 | 11 | 12 | // Exports 13 | //------------------------------------------------------ 14 | 15 | @include exports("calendar") { 16 | 17 | /** 18 | * calendar 19 | * -------------------------------------------------- 20 | */ 21 | .calendar { 22 | padding: 20px; 23 | @include radius($type: border-radius, $value: $calendar-radius); 24 | color: $white; 25 | background-color: lighten($calendar-background-color, 10%); 26 | @include box-shadow($value: $calendar-shadow); 27 | 28 | & .unit { 29 | float: left; 30 | width: 14.28%; 31 | text-align: center; 32 | } 33 | 34 | & .years { 35 | 36 | & .prev { 37 | text-align: left; 38 | } 39 | & .next { 40 | text-align: right; 41 | } 42 | & .prev em, 43 | & .next em { 44 | position: relative; 45 | display: inline-block; 46 | @include radius($type: border-radius, $value: 50%); 47 | border: 1px solid $calendar-font-color; 48 | width: 34px; 49 | height: 34px; 50 | cursor: pointer; 51 | } 52 | & .prev em:before, 53 | & .next em:before { 54 | position: absolute; 55 | display: block; 56 | content: ""; 57 | margin-top: 6px; 58 | border-style: solid; 59 | border-width: 7px; 60 | width: 0; 61 | height: 0; 62 | font-size: 0; 63 | } 64 | & .prev em:before { 65 | top: 3px; 66 | left: 4px; 67 | border-color: transparent $calendar-font-color transparent transparent; 68 | } 69 | & .next em:before { 70 | top: 3px; 71 | left: 13px; 72 | border-color: transparent transparent transparent $calendar-font-color; 73 | } 74 | & .prev em:hover, 75 | & .next em:hover, 76 | & .prev em:active, 77 | & .next em:active { 78 | border-color: $calendar-current-color; 79 | } 80 | & .prev em:hover:before, 81 | & .prev em:active:before { 82 | border-color: transparent $calendar-current-color transparent transparent; 83 | } 84 | 85 | & .next em:hover:before, 86 | & .next em:active:before { 87 | border-color: transparent transparent transparent $calendar-current-color; 88 | } 89 | 90 | & .monyear { 91 | float: left; 92 | width: 71.42%; 93 | text-align: center; 94 | height: 34px; 95 | line-height: 34px; 96 | } 97 | } 98 | 99 | & .days { 100 | margin-top: 15px; 101 | padding-top: 15px; 102 | border-top: 1px solid lighten($calendar-current-color, 10%); 103 | & .unit { 104 | margin-bottom: 3px; 105 | text-align: center; 106 | height: 34px; 107 | line-height: 34px; 108 | 109 | & b { 110 | @include radius($type: border-radius, $value: 50%); 111 | font-weight: normal; 112 | width: 34px; 113 | height: 34px; 114 | } 115 | &:hover b, 116 | &:active b, 117 | &.active b { 118 | display: inline-block; 119 | background-color: $calendar-font-color; 120 | color: $calendar-current-color; 121 | cursor: pointer; 122 | @include transition (all 0.2s ease-in-out); 123 | } 124 | &.older b { 125 | color: $calendar-current-color; 126 | background-color: transparent; 127 | cursor: default; 128 | width: auto; 129 | height: auto; 130 | } 131 | } 132 | } 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_dropdown.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $dropdown-background-color: $darkgray-dark !default; 4 | $dropdown-background-color-hover: $darkgray-light !default; 5 | 6 | $dropdown-normal: $mediumgray-dark !default; 7 | $dropdown-default: $white !default; 8 | 9 | $dropdown-padding: 5px 20px !default; 10 | 11 | $dropdown-radius: 4px !default; 12 | 13 | $dropdown-font-size: 14px !default; 14 | $dropdown-font-color-dark: $darkgray-dark !default; 15 | $dropdown-font-color-light: $white !default; 16 | $dropdown-font-weight: 700 !default; 17 | 18 | // Exports 19 | //------------------------------------------------------ 20 | 21 | @include exports("dropdown") { 22 | 23 | /** 24 | * dropdown-menu 25 | * -------------------------------------------------- 26 | */ 27 | .dropdown-menu { 28 | border: none; 29 | background-color: $dropdown-background-color; 30 | 31 | & .dropdown-header { 32 | padding: $dropdown-padding; 33 | font-size: $dropdown-font-size; 34 | font-weight: $dropdown-font-weight; 35 | color: $dropdown-normal; 36 | } 37 | 38 | & li a { 39 | padding: $dropdown-padding; 40 | color: $dropdown-font-color-light; 41 | } 42 | & li a:hover, 43 | & li a:focus, 44 | & .active a, 45 | & .active a:hover, 46 | & .active a:focus{ 47 | color: $dropdown-font-color-light; 48 | background-color: $dropdown-background-color-hover; 49 | outline: none; 50 | } 51 | & .disabled a, 52 | & .disabled a:hover, 53 | & .disabled a:focus { 54 | color: $dropdown-background-color-hover; 55 | cursor: default; 56 | } 57 | & .divider { 58 | background-color: $dropdown-background-color-hover; 59 | border-bottom: none; 60 | } 61 | 62 | @at-root .dropup & { 63 | margin-bottom: 0; 64 | @include radius($type: border-radius, $value: $dropdown-radius $dropdown-radius 0 0); 65 | } 66 | } 67 | /** 68 | * dropdown-submenu 69 | * -------------------------------------------------- 70 | */ 71 | .dropdown-submenu { 72 | position: relative; 73 | 74 | & .dropdown-menu { 75 | top: 0; 76 | left: 100%; 77 | margin-top: -6px; 78 | margin-left: -1px; 79 | @include radius($type: border-radius, $value: 0 4px 4px 4px); 80 | } 81 | &:hover .dropdown-menu { 82 | display: block; 83 | } 84 | .dropup & .dropdown-menu { 85 | top: auto; 86 | bottom: 0; 87 | margin-top: 0; 88 | margin-bottom: -2px; 89 | @include radius($type: border-radius, $value: 4px 4px 4px 0); 90 | } 91 | & > a:after { 92 | display: block; 93 | content: " "; 94 | float: right; 95 | width: 0; 96 | height: 0; 97 | border-color: transparent; 98 | border-style: solid; 99 | border-width: 5px 0 5px 5px; 100 | border-left-color: $dropdown-default; 101 | margin-top: 5px; 102 | margin-right: -10px; 103 | } 104 | @at-root .dropdown-default & > a:after { 105 | border-left-color: $dropdown-font-color-dark; 106 | } 107 | &:hover a:after { 108 | border-left-color: $dropdown-default; 109 | } 110 | &.pull-left { 111 | float: none; 112 | } 113 | &.pull-left .dropdown-menu { 114 | left: -100%; 115 | margin-left: 10px; 116 | @include radius($type: border-radius, $value: 4px 0 4px 4px); 117 | } 118 | } 119 | 120 | } 121 | 122 | 123 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_breadcrumb.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $breadcrumb-font-color: $darkgray-dark !default; 4 | $breadcrumb-link-color: $aqua-dark !default; 5 | $breadcrumb-background-color: $lightgray-dark !default; 6 | 7 | $breadcrumb-arrow-radius: 4px !default; 8 | $breadcrumb-arrow-font-color: $white !default; 9 | $breadcrumb-arrow-background-color: $aqua-dark !default; 10 | $breadcrumb-arrow-background-color-hover: $aqua-light !default; 11 | 12 | // Exports 13 | //------------------------------------------------------ 14 | @include exports("breadcrumb") { 15 | 16 | /** 17 | * breadcrumb 18 | * -------------------------------------------------- 19 | */ 20 | .breadcrumb { 21 | color: $breadcrumb-font-color; 22 | background-color: $breadcrumb-background-color; 23 | & > .active { 24 | color: $breadcrumb-font-color; 25 | } 26 | & a { 27 | color: $breadcrumb-link-color; 28 | } 29 | } 30 | 31 | .breadcrumb-arrow { 32 | padding: 0; 33 | list-style: none; 34 | background-color: $breadcrumb-background-color; 35 | height: 36px; 36 | line-height: 36px; 37 | 38 | & li:first-child a { 39 | @include radius($type: border-radius, $value: $breadcrumb-arrow-radius 0 0 $breadcrumb-arrow-radius); 40 | } 41 | & li, 42 | & li a, 43 | & li span{ 44 | display: inline-block; 45 | vertical-align: top; 46 | } 47 | & li:not(:first-child) { 48 | margin-left: -5px; 49 | } 50 | & li + li:before { 51 | padding: 0; 52 | content: ""; 53 | } 54 | & li span { 55 | padding: 0 10px; 56 | } 57 | & li a, 58 | & li:not(:first-child) span { 59 | padding: 0 10px 0 25px; 60 | height: 36px; 61 | line-height: 36px; 62 | } 63 | & li:first-child a { 64 | padding: 0 10px; 65 | } 66 | & li a { 67 | position: relative; 68 | border: 1px solid $breadcrumb-arrow-background-color; 69 | color: $breadcrumb-arrow-font-color; 70 | background-color: $breadcrumb-arrow-background-color; 71 | text-decoration: none; 72 | } 73 | & li:first-child a { 74 | padding-left: 10px; 75 | } 76 | & li a:before, 77 | & li a:after { 78 | position: absolute; 79 | top: -1px; 80 | content: ''; 81 | width: 0; 82 | height: 0; 83 | border-top: 18px solid transparent; 84 | border-bottom: 18px solid transparent; 85 | } 86 | & li a:before { 87 | right: -10px; 88 | border-left-width: 11px; 89 | border-left-style: solid; 90 | border-left-color: $breadcrumb-arrow-background-color; 91 | z-index: 3; 92 | } 93 | & li a:after{ 94 | right: -11px; 95 | border-left: 11px solid darken($breadcrumb-arrow-background-color, 10%); 96 | z-index: 2; 97 | } 98 | & li a:hover, 99 | & li a:focus { 100 | background-color: $breadcrumb-arrow-background-color-hover; 101 | border: 1px solid $breadcrumb-arrow-background-color-hover; 102 | } 103 | & li a:hover:before, 104 | & li a:focus:before { 105 | border-left-color: $breadcrumb-arrow-background-color-hover; 106 | } 107 | & li a:active { 108 | background-color: darken($breadcrumb-arrow-background-color, 10%); 109 | border: 1px solid darken($breadcrumb-arrow-background-color, 10%); 110 | } 111 | & li a:active:before, 112 | & li a:active:after { 113 | border-left-color: darken($breadcrumb-arrow-background-color, 10%); 114 | } 115 | & li span { 116 | color: $breadcrumb-font-color; 117 | } 118 | } 119 | } 120 | 121 | 122 | -------------------------------------------------------------------------------- /ProgrammerProfile/settings.py: -------------------------------------------------------------------------------- 1 | """ 2 | Django settings for ProgrammerProfile project. 3 | 4 | For more information on this file, see 5 | https://docs.djangoproject.com/en/1.7/topics/settings/ 6 | 7 | For the full list of settings and their values, see 8 | https://docs.djangoproject.com/en/1.7/ref/settings/ 9 | """ 10 | 11 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...) 12 | import os 13 | BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 14 | SITE_ROOT = os.path.realpath(os.path.dirname(__file__)) 15 | TEMPLATE_DIRS = (os.path.join(SITE_ROOT, 'templates'), ) 16 | 17 | # Quick-start development settings - unsuitable for production 18 | # See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/ 19 | 20 | # SECURITY WARNING: keep the secret key used in production secret! 21 | SECRET_KEY = os.environ.get('SECRET_KEY') 22 | 23 | # SECURITY WARNING: don't run with debug turned on in production! 24 | DEBUG = (os.environ.get('STAGE') == 'DEBUG') 25 | TEMPLATE_DEBUG = (os.environ.get('STAGE') == 'DEBUG') 26 | 27 | ALLOWED_HOSTS = ['*'] 28 | 29 | # Application definition 30 | 31 | TEMPLATE_LOADERS = ('django.template.loaders.app_directories.Loader', ) 32 | 33 | TEMPLATE_CONTEXT_PROCESSORS = ( 34 | 'django.core.context_processors.static', 35 | 'django.contrib.auth.context_processors.auth', 36 | 'django.core.context_processors.request', 37 | # social-auth 38 | 'social.apps.django_app.context_processors.backends', 39 | 'social.apps.django_app.context_processors.login_redirect', 40 | ) 41 | 42 | STATICFILES_FINDERS = ( 43 | 'django.contrib.staticfiles.finders.FileSystemFinder', 44 | 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 45 | ) 46 | 47 | INSTALLED_APPS = ( 48 | 'django.contrib.admin', 49 | 'django.contrib.auth', 50 | 'django.contrib.contenttypes', 51 | 'django.contrib.sessions', 52 | 'django.contrib.messages', 53 | 'django.contrib.staticfiles', 54 | 'django.contrib.sitemaps', 55 | 'social.apps.django_app.default', 56 | 'ProgrammerProfile', 57 | 'gunicorn', 58 | ) 59 | 60 | MIDDLEWARE_CLASSES = ( 61 | 'django.contrib.sessions.middleware.SessionMiddleware', 62 | 'django.middleware.common.CommonMiddleware', 63 | 'django.middleware.csrf.CsrfViewMiddleware', 64 | 'django.contrib.auth.middleware.AuthenticationMiddleware', 65 | 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 66 | 'django.contrib.messages.middleware.MessageMiddleware', 67 | 'django.middleware.clickjacking.XFrameOptionsMiddleware', 68 | ) 69 | 70 | AUTHENTICATION_BACKENDS = ( 71 | 'social.backends.twitter.TwitterOAuth', 72 | 'django.contrib.auth.backends.ModelBackend', 73 | ) 74 | 75 | ROOT_URLCONF = 'ProgrammerProfile.urls' 76 | 77 | WSGI_APPLICATION = 'ProgrammerProfile.wsgi.application' 78 | 79 | 80 | # Database 81 | # https://docs.djangoproject.com/en/1.7/ref/settings/#databases 82 | 83 | # DATABASES = { 84 | # 'default': { 85 | # 'ENGINE': 'django.db.backends.sqlite3', 86 | # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 87 | # } 88 | # } 89 | import dj_database_url 90 | DATABASES = { 91 | 'default': dj_database_url.config(default=os.environ.get('DATABASE_URL')) 92 | } 93 | 94 | # Internationalization 95 | # https://docs.djangoproject.com/en/1.7/topics/i18n/ 96 | 97 | LANGUAGE_CODE = 'ja' 98 | 99 | TIME_ZONE = 'Asia/Tokyo' 100 | 101 | USE_I18N = True 102 | 103 | USE_L10N = True 104 | 105 | USE_TZ = True 106 | 107 | 108 | # Static files (CSS, JavaScript, Images) 109 | # https://docs.djangoproject.com/en/1.7/howto/static-files/ 110 | 111 | STATIC_URL = '/static/' 112 | STATIC_ROOT = 'staticfiles' 113 | STATICFILES_DIRS = (os.path.join(SITE_ROOT, STATIC_ROOT), ) 114 | STATICFIELS_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage' 115 | 116 | # social auth 117 | LOGIN_REDIRECT_URL = '/' 118 | SOCIAL_AUTH_TWITTER_KEY = os.environ.get('TWITTER_KEY_FOR_USER') 119 | SOCIAL_AUTH_TWITTER_SECRET = os.environ.get('TWITTER_SECRET_FOR_USER') 120 | 121 | import markdown 122 | README = markdown.Markdown().convert(open(os.path.join(SITE_ROOT, '../', 'README.md')).read()) 123 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_timeline.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $timeline-division-background-color: $mediumgray-light !default; 4 | $timeline-years-background-color: $mediumgray-dark !default; 5 | $timeline-years-color: $white !default; 6 | $timeline-dotted-color: $aqua-light !default; 7 | $timeline-dotted-border-color: $lightgray-light !default; 8 | 9 | $timeline-radius: 4px !default; 10 | 11 | // Exports 12 | //------------------------------------------------------ 13 | 14 | @include exports("timeline") { 15 | 16 | /** 17 | * timeline 18 | * -------------------------------------------------- 19 | */ 20 | 21 | .timeline { 22 | & dl { 23 | position: relative; 24 | top: 0; 25 | margin: 0; 26 | padding: 20px 0; 27 | 28 | &:before { 29 | position: absolute; 30 | top: 0; 31 | bottom: 0; 32 | left: 50%; 33 | margin-left: -1px; 34 | width: 2px; 35 | content: ''; 36 | background-color: $timeline-division-background-color; 37 | z-index: 100; 38 | } 39 | 40 | & dt { 41 | position: relative; 42 | top: 30px; 43 | padding: 3px 5px; 44 | margin: 0 auto 30px; 45 | text-align: center; 46 | @include radius($type: border-radius, $value: $timeline-radius); 47 | background-color: $timeline-years-background-color; 48 | font-weight: normal; 49 | color: $timeline-years-color; 50 | width: 120px; 51 | z-index: 200; 52 | } 53 | 54 | & dd { 55 | position: relative; 56 | z-index: 200; 57 | & .circ { 58 | position: absolute; 59 | top: 40px; 60 | left: 50%; 61 | margin-left: -11px; 62 | border: 4px solid $timeline-dotted-border-color; 63 | width: 22px; 64 | height: 22px; 65 | @include radius($type: border-radius, $value: 50%); 66 | background-color: $timeline-dotted-color; 67 | z-index: 200; 68 | } 69 | 70 | & .time { 71 | position: absolute; 72 | top: 31px; 73 | left: 50%; 74 | padding: 10px 20px; 75 | width: 100px; 76 | display: inline-block; 77 | color: $timeline-dotted-color; 78 | } 79 | 80 | & .events { 81 | position: relative; 82 | margin-top: 31px; 83 | padding: 10px 10px 0; 84 | @include radius($type: border-radius, $value: $timeline-radius); 85 | background-color: $white; 86 | width: 47%; 87 | 88 | &:before { 89 | position: absolute; 90 | top: 12px; 91 | width: 0; 92 | height: 0; 93 | content: ''; 94 | border-width: 6px; 95 | border-style: solid; 96 | } 97 | 98 | & .events-object { 99 | margin-right: 10px; 100 | } 101 | 102 | & .events-body { 103 | overflow: hidden; 104 | zoom: 1; 105 | 106 | & .events-heading { 107 | margin: 0 0 10px; 108 | font-size: 14px; 109 | } 110 | } 111 | } 112 | 113 | &.pos-right { 114 | 115 | & .time { 116 | margin-left: -100px; 117 | text-align: right; 118 | } 119 | & .events { 120 | float: right; 121 | 122 | &:before { 123 | left: -12px; 124 | border-color: transparent $white transparent transparent; 125 | } 126 | } 127 | } 128 | &.pos-left { 129 | & .time { 130 | margin-left: 0; 131 | text-align: left; 132 | } 133 | & .events { 134 | float: left; 135 | &:before { 136 | right: -12px; 137 | border-color: transparent transparent transparent $white; 138 | } 139 | } 140 | } 141 | } 142 | } 143 | } 144 | @media screen and (max-width: 767px) { 145 | .timeline dl { 146 | &:before { 147 | left: 60px; 148 | } 149 | & dt { 150 | margin: 0 0 30px; 151 | } 152 | & dd { 153 | & .circ { 154 | left: 60px; 155 | } 156 | & .time { 157 | left: 0; 158 | } 159 | &.pos-left { 160 | & .time { 161 | margin-left: 0; 162 | padding: 10px 0; 163 | text-align: left; 164 | } 165 | & .events { 166 | float: right; 167 | width: 84%; 168 | &:before { 169 | left: -12px; 170 | border-color: transparent $white transparent transparent; 171 | } 172 | } 173 | } 174 | &.pos-right { 175 | & .time { 176 | margin-left: 0; 177 | padding: 10px 0; 178 | text-align: left; 179 | } 180 | & .events { 181 | float: right; 182 | width: 84%; 183 | } 184 | } 185 | } 186 | } 187 | } 188 | 189 | } 190 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/js/icheck.min.js: -------------------------------------------------------------------------------- 1 | /*! iCheck v1.0.1 by Damir Sultanov, http://git.io/arlzeA, MIT Licensed */ 2 | (function(f){function A(a,b,d){var c=a[0],g=/er/.test(d)?_indeterminate:/bl/.test(d)?n:k,e=d==_update?{checked:c[k],disabled:c[n],indeterminate:"true"==a.attr(_indeterminate)||"false"==a.attr(_determinate)}:c[g];if(/^(ch|di|in)/.test(d)&&!e)x(a,g);else if(/^(un|en|de)/.test(d)&&e)q(a,g);else if(d==_update)for(var f in e)e[f]?x(a,f,!0):q(a,f,!0);else if(!b||"toggle"==d){if(!b)a[_callback]("ifClicked");e?c[_type]!==r&&q(a,g):x(a,g)}}function x(a,b,d){var c=a[0],g=a.parent(),e=b==k,u=b==_indeterminate, 3 | v=b==n,s=u?_determinate:e?y:"enabled",F=l(a,s+t(c[_type])),B=l(a,b+t(c[_type]));if(!0!==c[b]){if(!d&&b==k&&c[_type]==r&&c.name){var w=a.closest("form"),p='input[name="'+c.name+'"]',p=w.length?w.find(p):f(p);p.each(function(){this!==c&&f(this).data(m)&&q(f(this),b)})}u?(c[b]=!0,c[k]&&q(a,k,"force")):(d||(c[b]=!0),e&&c[_indeterminate]&&q(a,_indeterminate,!1));D(a,e,b,d)}c[n]&&l(a,_cursor,!0)&&g.find("."+C).css(_cursor,"default");g[_add](B||l(a,b)||"");g.attr("role")&&!u&&g.attr("aria-"+(v?n:k),"true"); 4 | g[_remove](F||l(a,s)||"")}function q(a,b,d){var c=a[0],g=a.parent(),e=b==k,f=b==_indeterminate,m=b==n,s=f?_determinate:e?y:"enabled",q=l(a,s+t(c[_type])),r=l(a,b+t(c[_type]));if(!1!==c[b]){if(f||!d||"force"==d)c[b]=!1;D(a,e,s,d)}!c[n]&&l(a,_cursor,!0)&&g.find("."+C).css(_cursor,"pointer");g[_remove](r||l(a,b)||"");g.attr("role")&&!f&&g.attr("aria-"+(m?n:k),"false");g[_add](q||l(a,s)||"")}function E(a,b){if(a.data(m)){a.parent().html(a.attr("style",a.data(m).s||""));if(b)a[_callback](b);a.off(".i").unwrap(); 5 | f(_label+'[for="'+a[0].id+'"]').add(a.closest(_label)).off(".i")}}function l(a,b,f){if(a.data(m))return a.data(m).o[b+(f?"":"Class")]}function t(a){return a.charAt(0).toUpperCase()+a.slice(1)}function D(a,b,f,c){if(!c){if(b)a[_callback]("ifToggled");a[_callback]("ifChanged")[_callback]("if"+t(f))}}var m="iCheck",C=m+"-helper",r="radio",k="checked",y="un"+k,n="disabled";_determinate="determinate";_indeterminate="in"+_determinate;_update="update";_type="type";_click="click";_touch="touchbegin.i touchend.i"; 6 | _add="addClass";_remove="removeClass";_callback="trigger";_label="label";_cursor="cursor";_mobile=/ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);f.fn[m]=function(a,b){var d='input[type="checkbox"], input[type="'+r+'"]',c=f(),g=function(a){a.each(function(){var a=f(this);c=a.is(d)?c.add(a):c.add(a.find(d))})};if(/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(a))return a=a.toLowerCase(),g(this),c.each(function(){var c= 7 | f(this);"destroy"==a?E(c,"ifDestroyed"):A(c,!0,a);f.isFunction(b)&&b()});if("object"!=typeof a&&a)return this;var e=f.extend({checkedClass:k,disabledClass:n,indeterminateClass:_indeterminate,labelHover:!0},a),l=e.handle,v=e.hoverClass||"hover",s=e.focusClass||"focus",t=e.activeClass||"active",B=!!e.labelHover,w=e.labelHoverClass||"hover",p=(""+e.increaseArea).replace("%","")|0;if("checkbox"==l||l==r)d='input[type="'+l+'"]';-50>p&&(p=-50);g(this);return c.each(function(){var a=f(this);E(a);var c=this, 8 | b=c.id,g=-p+"%",d=100+2*p+"%",d={position:"absolute",top:g,left:g,display:"block",width:d,height:d,margin:0,padding:0,background:"#fff",border:0,opacity:0},g=_mobile?{position:"absolute",visibility:"hidden"}:p?d:{position:"absolute",opacity:0},l="checkbox"==c[_type]?e.checkboxClass||"icheckbox":e.radioClass||"i"+r,z=f(_label+'[for="'+b+'"]').add(a.closest(_label)),u=!!e.aria,y=m+"-"+Math.random().toString(36).substr(2,6),h='
")[_callback]("ifCreated").parent().append(e.insert);d=f('').css(d).appendTo(h);a.data(m,{o:e,s:a.attr("style")}).css(g);e.inheritClass&&h[_add](c.className||"");e.inheritID&&b&&h.attr("id",m+"-"+b);"static"==h.css("position")&&h.css("position","relative");A(a,!0,_update);if(z.length)z.on(_click+".i mouseover.i mouseout.i "+_touch,function(b){var d=b[_type],e=f(this);if(!c[n]){if(d==_click){if(f(b.target).is("a"))return; 10 | A(a,!1,!0)}else B&&(/ut|nd/.test(d)?(h[_remove](v),e[_remove](w)):(h[_add](v),e[_add](w)));if(_mobile)b.stopPropagation();else return!1}});a.on(_click+".i focus.i blur.i keyup.i keydown.i keypress.i",function(b){var d=b[_type];b=b.keyCode;if(d==_click)return!1;if("keydown"==d&&32==b)return c[_type]==r&&c[k]||(c[k]?q(a,k):x(a,k)),!1;if("keyup"==d&&c[_type]==r)!c[k]&&x(a,k);else if(/us|ur/.test(d))h["blur"==d?_remove:_add](s)});d.on(_click+" mousedown mouseup mouseover mouseout "+_touch,function(b){var d= 11 | b[_type],e=/wn|up/.test(d)?t:v;if(!c[n]){if(d==_click)A(a,!1,!0);else{if(/wn|er|in/.test(d))h[_add](e);else h[_remove](e+" "+t);if(z.length&&B&&e==v)z[/ut|nd/.test(d)?_remove:_add](w)}if(_mobile)b.stopPropagation();else return!1}})})}})(window.jQuery||window.Zepto); 12 | -------------------------------------------------------------------------------- /ProgrammerProfile/templates/stats.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load static %} 3 | 4 | {% block title %}Programmer Profile - 各界の統計{% endblock %} 5 | 6 | {% block moreheader %} 7 | 8 | 9 | 10 | 11 | 12 | {% endblock %} 13 | 14 | {% block content %} 15 | 16 |
17 |
18 |
19 |
20 |

各界の戦闘力(推薦の総数)

21 |

推薦数が0の分野については表示していません。

22 |

※ %表示は、一番多い分野を100%とした際の割合です。

23 |
24 | 25 |
26 | 27 | {% for skillCombatPower in skillCombatPowers %} 28 | 29 | 30 | 31 | 32 | 39 | 40 |
{{ skillCombatPower.subcategory }}:{{ skillCombatPower.subcategory__count }} 33 |
34 |
35 | {{ skillCombatPower.subcategory__ratio }}% 36 |
37 |
38 |
41 |
42 | {% endfor%} 43 |
44 |
45 |
46 | 47 |
48 | 49 |
50 |
51 |
52 | 53 |
54 | 62 |
63 |
64 |
65 | 70 | このエントリーをはてなブックマークに追加 75 | 76 | 77 |
78 |
79 | 85 | 93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 | 103 | 104 | {% endblock %} 105 | -------------------------------------------------------------------------------- /ProgrammerProfile/templates/base.html: -------------------------------------------------------------------------------- 1 | {% load static %} 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | {% block title %}Programmer Profile{% endblock %} 24 | {% block moreheader %}{% endblock %} 25 | 26 | 27 | 28 | 37 | 38 |
39 | 68 |
69 |
70 | 71 | 72 | 73 | {% block content %}{% endblock %} 74 | 75 | 78 | 94 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootstrap-select/css/bootstrap-select.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */.bootstrap-select{width:220px \0}.bootstrap-select>.btn{width:100%;padding-right:25px}.error .bootstrap-select .btn{border:1px solid #b94a48}.control-group.error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .btn:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row-fluid .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-search .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-group .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.input-append .bootstrap-select.btn-group{margin-left:-1px}.input-prepend .bootstrap-select.btn-group{margin-right:-1px}.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group .btn .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .btn .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .btn{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;z-index:1035;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:hover small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:focus small,.bootstrap-select.btn-group .dropdown-menu li.active:not(.disabled) a small{color:#64b1d8;color:rgba(100,177,216,.4)}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px}.bootstrap-select.btn-group.fit-width .btn .filter-option{position:static}.bootstrap-select.btn-group.fit-width .btn .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.btn{z-index:1035+1}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom-width:7px;border-bottom-style:solid;border-bottom-color:#ccc;border-bottom-color:rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-bottom:0;border-top-width:7px;border-top-style:solid;border-top-color:#ccc;border-top-color:rgba(204,204,204,.2)}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after{display:block}.bs-searchbox,.bs-actionsbox{padding:4px 8px}.bs-actionsbox{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox input.form-control{margin-bottom:0;width:100%}.mobile-device{position:absolute;top:0;left:0;display:block!important;width:100%;height:100%!important;opacity:0} -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_tab.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $tab-background-color: $lightgray-dark !default; 4 | $tab-background-color-hover: $lightgray-light !default; 5 | $tab-radius: 4px !default; 6 | 7 | $tab-font-color: $darkgray-dark !default; 8 | $tab-font-color-acitve: $white !default; 9 | 10 | $tab-aside-width: 74px !default; 11 | 12 | $tab-border-color: $mediumgray-light !default; 13 | // Exports 14 | //------------------------------------------------------ 15 | 16 | @include exports("tab") { 17 | 18 | /** 19 | * tab 20 | * -------------------------------------------------- 21 | */ 22 | .nav-tabs { 23 | border-bottom: none; 24 | background-color: $tab-background-color; 25 | @include radius($type: border-radius, $value: $tab-radius $tab-radius 0 0); 26 | 27 | & > li { 28 | margin-bottom: 0; 29 | border-left: 1px solid $tab-border-color; 30 | } 31 | & > li:first-child { 32 | border-left: none; 33 | } 34 | & > li > a { 35 | margin-right: 0; 36 | border: none; 37 | @include radius($type: border-radius, $value: 0); 38 | color: $tab-font-color; 39 | } 40 | & > li:first-child > a { 41 | @include radius($type: border-radius, $value: $tab-radius 0 0 0); 42 | } 43 | & > li > a:focus, 44 | & > li > a:hover { 45 | border: none; 46 | background-color: $tab-background-color-hover; 47 | } 48 | & > li.active > a, 49 | & > li.active > a:focus, 50 | & > li.active > a:hover { 51 | border: none; 52 | background-color: $tab-font-color-acitve !important; 53 | } 54 | 55 | & .dropdown-toggle, 56 | & .dropdown-toggle:hover, 57 | & .dropdown-toggle:focus { 58 | color: $tab-font-color; 59 | } 60 | 61 | & li.dropdown.open .dropdown-toggle { 62 | color: $tab-font-color; 63 | background-color: $tab-background-color-hover; 64 | } 65 | & li.dropdown.active.open .dropdown-toggle { 66 | color: $tab-font-color; 67 | } 68 | & li.dropdown.active.open .dropdown-toggle .caret, 69 | & li.dropdown.active .dropdown-toggle .caret { 70 | border-top-color: $tab-font-color; 71 | border-bottom-color: $tab-font-color; 72 | } 73 | & li.dropdown.open .caret, 74 | & li.dropdown.open.active .caret, 75 | & li.dropdown.open a:hover .caret, 76 | & li.dropdown.open a:focus .caret, 77 | & .dropdown-toggle .caret, 78 | & .dropdown-toggle:hover .caret, 79 | & .dropdown-toggle:focus .caret { 80 | border-top-color: $tab-font-color; 81 | border-bottom-color: $tab-font-color; 82 | } 83 | 84 | &.nav-justified > li > a { 85 | margin-bottom: 0; 86 | text-align: center; 87 | } 88 | &.nav-justified > .dropdown .dropdown-menu { 89 | top: auto; 90 | left: auto; 91 | } 92 | &.nav-justified > li > a { 93 | @include radius($type: border-radius, $value: 0); 94 | } 95 | &.nav-justified > li:first-child > a { 96 | @include radius($type: border-radius, $value: $tab-radius 0 0 0); 97 | } 98 | &.nav-justified > li:last-child > a { 99 | @include radius($type: border-radius, $value: 0 $tab-radius 0 0); 100 | } 101 | &.nav-justified > .active > a, 102 | &.nav-justified > .active > a:hover, 103 | &.nav-justified > .active > a:focus { 104 | border: none; 105 | } 106 | @media (min-width: 768px) { 107 | &.nav-justified > li > a { 108 | border-bottom: none; 109 | @include radius($type: border-radius, $value: 0); 110 | } 111 | &.nav-justified > .active > a, 112 | &.nav-justified > .active > a:hover, 113 | &.nav-justified > .active > a:focus { 114 | border-bottom: none; 115 | } 116 | } 117 | 118 | @at-root .tab-content { 119 | padding: 10px; 120 | } 121 | } 122 | 123 | .tabs-below { 124 | & .nav-tabs { 125 | @include radius($type: border-radius, $value: 0 0 $tab-radius $tab-radius); 126 | } 127 | & .nav-tabs > li:first-child > a { 128 | @include radius($type: border-radius, $value: 0 0 0 $tab-radius); 129 | } 130 | & .nav-tabs.nav-justified > li:last-child > a { 131 | @include radius($type: border-radius, $value: 0 0 $tab-radius 0); 132 | } 133 | } 134 | 135 | .tabs-left .nav-tabs > li, 136 | .tabs-right .nav-tabs > li { 137 | float: none; 138 | border-left: none; 139 | border-top: 1px solid $tab-border-color; 140 | } 141 | .tabs-left .nav-tabs > li:first-child, 142 | .tabs-right .nav-tabs > li:first-child { 143 | border-top: none; 144 | } 145 | .tabs-left .nav-tabs > li > a, 146 | .tabs-right .nav-tabs > li > a { 147 | min-width: $tab-aside-width; 148 | margin-right: 0; 149 | } 150 | .tabs-left { 151 | & .nav-tabs { 152 | float: left; 153 | margin-right: 19px; 154 | @include radius($type: border-radius, $value: $tab-radius 0 0 $tab-radius); 155 | } 156 | & .nav-tabs > li:first-child > a { 157 | @include radius($type: border-radius, $value: $tab-radius 0 0 0); 158 | } 159 | & .nav-tabs > li:last-child > a { 160 | @include radius($type: border-radius, $value: 0 0 0 $tab-radius); 161 | } 162 | } 163 | .tabs-right { 164 | & .nav-tabs { 165 | float: right; 166 | margin-left: 19px; 167 | @include radius($type: border-radius, $value: 0 $tab-radius $tab-radius 0); 168 | } 169 | & .nav-tabs > li:first-child > a { 170 | @include radius($type: border-radius, $value: 0 $tab-radius 0 0); 171 | } 172 | & .nav-tabs > li:last-child > a { 173 | @include radius($type: border-radius, $value: 0 0 $tab-radius 0); 174 | } 175 | } 176 | 177 | } 178 | 179 | 180 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_list.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $list-primary: $aqua-light !default; 4 | $list-info: $mint-light !default; 5 | $list-warning: $sunflower-light !default; 6 | $list-success: $grass-light !default; 7 | $list-danger: $grapefruit-light !default; 8 | 9 | $list-primary-hover: $aqua-dark !default; 10 | $list-info-hover: $mint-dark !default; 11 | $list-warning-hover: $sunflower-dark !default; 12 | $list-success-hover: $grass-dark !default; 13 | $list-danger-hover: $grapefruit-dark !default; 14 | 15 | $list-border-color: $lightgray-dark !default; 16 | $list-background-color: $white !default; 17 | $list-font-color: $darkgray-dark !default; 18 | $list-font-color-hover: $mediumgray-dark !default; 19 | 20 | $list-item-background-color: $lightgray-dark !default; 21 | 22 | $list-radius: 4px !default; 23 | $list-shadow: 0 1px 2px rgba(0, 0, 0, .2) !default; 24 | 25 | 26 | 27 | // Exports 28 | //------------------------------------------------------ 29 | 30 | @include exports("list") { 31 | 32 | /** 33 | * list 34 | * -------------------------------------------------- 35 | */ 36 | .list-group { 37 | @include radius($type: border-radius, $value: $list-radius); 38 | @include box-shadow($value: $list-shadow); 39 | @at-root &-item { 40 | border-color: transparent; 41 | border-top-color: $list-border-color; 42 | &:first-child { 43 | border-top: none; 44 | } 45 | @at-root &-heading { 46 | color: $list-font-color; 47 | } 48 | } 49 | } 50 | 51 | 52 | a.list-group-item { 53 | color: $list-font-color; 54 | 55 | & .list-group-item-heading { 56 | font-size: 16px; 57 | color: $list-font-color; 58 | } 59 | 60 | &:hover, 61 | &:focus { 62 | background-color: $list-item-background-color; 63 | } 64 | &.active, 65 | &.active:hover, 66 | &.active:focus { 67 | background-color: $list-primary; 68 | border-color: $list-primary; 69 | } 70 | &.active .list-group-item-text, 71 | &.active:hover .list-group-item-text, 72 | &.active:focus .list-group-item-text { 73 | color: $list-background-color; 74 | } 75 | } 76 | .list-group-item-primary { 77 | color: darken($list-primary, 10%); 78 | border-color: $list-primary-hover transparent transparent transparent; 79 | background-color: $list-primary; 80 | &:first-child { 81 | border-color: transparent; 82 | } 83 | @at-root a.list-group-item-primary { 84 | color: darken($list-primary, 30%); 85 | &:hover, 86 | &:focus { 87 | color: $list-background-color; 88 | background-color: $list-primary-hover; 89 | } 90 | &.active, 91 | &:hover, 92 | &:focus { 93 | background-color: $list-primary-hover; 94 | border-color: $list-primary transparent transparent transparent; 95 | } 96 | } 97 | } 98 | .list-group-item-success { 99 | color: darken($list-success, 10%); 100 | border-color: $list-success-hover transparent transparent transparent; 101 | background-color: $list-success; 102 | &:first-child { 103 | border-color: transparent; 104 | } 105 | @at-root a.list-group-item-success { 106 | color: darken($list-success, 30%); 107 | &:hover, 108 | &:focus { 109 | color: $list-background-color; 110 | background-color: $list-success-hover; 111 | } 112 | &.active, 113 | &:hover, 114 | &:focus { 115 | background-color: $list-success-hover; 116 | border-color: $list-success transparent transparent transparent; 117 | } 118 | } 119 | } 120 | .list-group-item-warning { 121 | color: darken($list-warning, 10%); 122 | border-color: $list-warning-hover transparent transparent transparent; 123 | background-color: $list-warning; 124 | &:first-child { 125 | border-color: transparent; 126 | } 127 | @at-root a.list-group-item-warning { 128 | color: darken($list-warning, 40%); 129 | &:hover, 130 | &:focus { 131 | color: $list-background-color; 132 | background-color: $list-warning-hover; 133 | } 134 | &.active, 135 | &:hover, 136 | &:focus { 137 | background-color: $list-warning-hover; 138 | border-color: $list-warning transparent transparent transparent; 139 | } 140 | } 141 | } 142 | .list-group-item-info { 143 | color: darken($list-info, 10%); 144 | border-color: $list-info-hover transparent transparent transparent; 145 | background-color: $list-info; 146 | &:first-child { 147 | border-color: transparent; 148 | } 149 | @at-root a.list-group-item-info { 150 | color: darken($list-info, 30%); 151 | &:hover, 152 | &:focus { 153 | color: $list-background-color; 154 | background-color: $list-info-hover; 155 | } 156 | &.active, 157 | &:hover, 158 | &:focus { 159 | background-color: $list-info-hover; 160 | border-color: $list-info transparent transparent transparent; 161 | } 162 | } 163 | } 164 | .list-group-item-danger { 165 | color: darken($list-danger, 10%); 166 | border-color: $list-danger-hover transparent transparent transparent; 167 | background-color: $list-danger; 168 | &:first-child { 169 | border-color: transparent; 170 | } 171 | @at-root a.list-group-item-danger { 172 | color: darken($list-danger, 30%); 173 | &:hover, 174 | &:focus { 175 | color: $list-background-color; 176 | background-color: $list-danger-hover; 177 | } 178 | &.active, 179 | &:hover, 180 | &:focus { 181 | background-color: $list-danger-hover; 182 | border-color: $list-danger transparent transparent transparent; 183 | } 184 | } 185 | } 186 | } 187 | 188 | 189 | -------------------------------------------------------------------------------- /ProgrammerProfile/templates/index.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load static %} 3 | 4 | {% block moreheader %} 5 | 6 | 7 | 8 | 9 | 10 | {% endblock %} 11 | 12 | 13 | {% block content %} 14 | 15 |
16 |
17 |
18 |
19 |
20 |

README.md

21 |
22 | {{ README| safe }} 23 |
24 |
25 |
26 |
27 | 28 |
29 | 30 |
31 |
32 |
33 |
お願い
34 |
35 |

サービスを開始したばかりで、情報が豊富とは言い難い現状です。

36 |

あなたが知っているすごい人の情報、頑張っている友達の情報、そしてあなた自身の情報を教えてください。(ログインすることで推薦が可能となります)

37 |

各ユーザーのページには、http://www.programmerprofile.net/user/<twitterユーザー名> でもアクセス可能です。

38 |
39 |
40 |
41 | 42 |
43 |
44 | 45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | 53 |
54 | 55 |
56 |
57 |
58 |
念のため
59 |
60 |

本サービスでは、ログインにTwitterの認証機能(OAuth)を利用しています。

61 |

OAuthの情報はログイン管理にのみ利用しており、かつパーミッションもフォローや投稿ができない一番弱いものを設定しています(Twitter連携時に確認できます)。

62 |
63 |
64 |
65 |
66 | 67 |
68 | 69 |
70 |
71 |
72 |
お知らせ
73 |
74 |

paizaに紹介されました!ちょっと焦ってます!良いサービスにできるよう頑張ります!

75 |

これは便利!新米エンジニアが見るべきアカウントを探せるサービス

76 |
77 |
78 |
79 |
80 | 81 |
82 |
83 |
84 |
85 |
作った人
86 |
87 |

この人です→@nakazye

88 |

個人で運営しているサービスの為、問い合わせに対する迅速な返信や対応ができない場合もございますのでご了承ください。

89 |
90 |
91 |
92 |
93 | 94 |
95 | 96 | 97 | 98 |
99 | 107 |
108 |
109 |
110 | 115 | このエントリーをはてなブックマークに追加 120 | 121 | 122 |
123 |
124 | 130 | 138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 | {% endblock %} 146 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_button.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $button-normal: $mediumgray-dark !default; 4 | $button-default: $white !default; 5 | $button-primary: $aqua-dark !default; 6 | $button-success: $grass-dark !default; 7 | $button-danger: $grapefruit-dark !default; 8 | $button-warning: $sunflower-dark !default; 9 | $button-info: $mint-dark !default; 10 | 11 | $button-normal-hover: $mediumgray-light !default; 12 | $button-default-hover: $button-default !default; 13 | $button-primary-hover: $aqua-light !default; 14 | $button-success-hover: $grass-light !default; 15 | $button-danger-hover: $grapefruit-light !default; 16 | $button-warning-hover: $sunflower-light !default; 17 | $button-info-hover: $mint-light !default; 18 | 19 | $button-font-color-dark: $darkgray-dark !default; 20 | $button-font-color-light: $white !default; 21 | 22 | $button-opacity: 45 !default; 23 | $button-shadow: inset 0 1px 2px rgba(0, 0, 0, .125) !default; 24 | 25 | // Exports 26 | //------------------------------------------------------ 27 | 28 | @include exports("button") { 29 | 30 | /** 31 | * button 32 | * -------------------------------------------------- 33 | */ 34 | .btn { 35 | color: $button-font-color-light; 36 | 37 | &, 38 | &.disabled, 39 | &[disabled] { 40 | border-color: $button-normal; 41 | background-color: $button-normal; 42 | } 43 | &:hover, 44 | &:focus, 45 | &:active, 46 | &.active { 47 | color: $button-font-color-light; 48 | border-color: $button-normal-hover; 49 | background-color: $button-normal-hover; 50 | outline: none !important; 51 | } 52 | &:active, 53 | &.active { 54 | @include box-shadow($value: $button-shadow); 55 | } 56 | &.disabled, 57 | &[disabled] { 58 | @include opacity($opacity: $button-opacity, $filter: true); 59 | } 60 | 61 | @at-root &-link { 62 | &, 63 | &:hover, 64 | &:focus, 65 | &:active, 66 | &.active, 67 | &.disabled, 68 | &[disabled] { 69 | border-color: transparent; 70 | background-color: transparent; 71 | color: $button-primary; 72 | @include box-shadow($value: none); 73 | } 74 | &:hover, 75 | &:focus { 76 | text-decoration: underline; 77 | } 78 | } 79 | 80 | @at-root &-default { 81 | color: $button-font-color-dark; 82 | border-color: $button-normal !important; 83 | 84 | &:hover, 85 | &:focus, 86 | &:active, 87 | &.active { 88 | border-color: $button-normal-hover; 89 | background-color: $button-normal-hover; 90 | } 91 | &, 92 | &.disabled, 93 | &[disabled] { 94 | background-color: $button-default; 95 | } 96 | } 97 | @at-root .open .dropdown-toggle.btn-default { 98 | border-color: $button-normal-hover; 99 | background-color: $button-normal-hover; 100 | } 101 | 102 | @at-root &-primary { 103 | &, 104 | &:active, 105 | &.active, 106 | &.disabled, 107 | &[disabled] { 108 | border-color: $button-primary; 109 | background-color: $button-primary; 110 | } 111 | &:hover, 112 | &:focus { 113 | border-color: $button-primary-hover; 114 | background-color: $button-primary-hover; 115 | } 116 | } 117 | @at-root .open .dropdown-toggle.btn-primary { 118 | border-color: $button-primary-hover; 119 | background-color: $button-primary-hover; 120 | } 121 | 122 | @at-root &-info { 123 | &, 124 | &:active, 125 | &.active, 126 | &.disabled, 127 | &[disabled] { 128 | border-color: $button-info; 129 | background-color: $button-info; 130 | } 131 | &:hover, 132 | &:focus { 133 | border-color: $button-info-hover; 134 | background-color: $button-info-hover; 135 | } 136 | } 137 | @at-root .open .dropdown-toggle.btn-info { 138 | border-color: $button-info-hover; 139 | background-color: $button-info-hover; 140 | } 141 | 142 | @at-root &-success { 143 | &, 144 | &:active, 145 | &.active, 146 | &.disabled, 147 | &[disabled] { 148 | border-color: $button-success; 149 | background-color: $button-success; 150 | } 151 | &:hover, 152 | &:focus { 153 | border-color: $button-success-hover; 154 | background-color: $button-success-hover; 155 | } 156 | } 157 | @at-root .open .dropdown-toggle.btn-success { 158 | border-color: $button-success-hover; 159 | background-color: $button-success-hover; 160 | } 161 | 162 | @at-root &-warning { 163 | &, 164 | &:active, 165 | &.active, 166 | &.disabled, 167 | &[disabled] { 168 | border-color: $button-warning; 169 | background-color: $button-warning; 170 | } 171 | &:hover, 172 | &:focus { 173 | border-color: $button-warning-hover; 174 | background-color: $button-warning-hover; 175 | } 176 | } 177 | @at-root .open .dropdown-toggle.btn-warning { 178 | border-color: $button-warning-hover; 179 | background-color: $button-warning-hover; 180 | } 181 | 182 | @at-root &-danger { 183 | &, 184 | &:active, 185 | &.active, 186 | &.disabled, 187 | &[disabled], 188 | .open .dropdown-toggle.btn { 189 | border-color: $button-danger; 190 | background-color: $button-danger; 191 | } 192 | &:hover, 193 | &:focus { 194 | border-color: $button-danger-hover; 195 | background-color: $button-danger-hover; 196 | } 197 | } 198 | @at-root .open .dropdown-toggle.btn-danger { 199 | border-color: $button-danger-hover; 200 | background-color: $button-danger-hover; 201 | } 202 | } 203 | } 204 | 205 | 206 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_form.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $form-normal: $mediumgray-dark !default; 4 | $form-default: $white !default; 5 | $form-primary: $aqua-dark !default; 6 | $form-success: $grass-dark !default; 7 | $form-danger: $grapefruit-dark !default; 8 | $form-warning: $sunflower-dark !default; 9 | $form-info: $mint-dark !default; 10 | 11 | $message-success: $grass-dark !default; 12 | $message-danger: $grapefruit-dark !default; 13 | $message-warning: $sunflower-dark !default; 14 | 15 | $form-font-color: $darkgray-dark !default; 16 | $form-placeholder-font-color: $lightgray-dark !default; 17 | 18 | $form-disabled-color: $lightgray-dark !default; 19 | 20 | $search-query-value: 17px !default; 21 | 22 | $search-icon-width: 30px !default; 23 | $search-icon-line-height: 30px !default; 24 | 25 | // Exports 26 | //------------------------------------------------------ 27 | 28 | @include exports("form") { 29 | 30 | /** 31 | * form 32 | * -------------------------------------------------- 33 | */ 34 | .form-control { 35 | color: $form-font-color; 36 | border-color: $form-normal; 37 | 38 | &, 39 | &:focus { 40 | @include box-shadow($value: none); 41 | } 42 | &:focus { 43 | border-color: $form-primary; 44 | } 45 | &::-moz-placeholder, 46 | &:-ms-input-placeholder, 47 | &::-webkit-input-placeholder { 48 | color: $form-placeholder-font-color; 49 | } 50 | 51 | &.disabled, 52 | &[disabled] { 53 | border-color: $form-disabled-color; 54 | background-color: $form-disabled-color; 55 | } 56 | } 57 | 58 | .input-group-btn { 59 | & .btn + .btn { 60 | border-width: 1px; 61 | border-style: solid; 62 | border-color: darken($form-normal, 7%); 63 | } 64 | & .btn + .btn.btn-default { 65 | border-color: darken($form-default, 7%); 66 | } 67 | & .btn + .btn.btn-primary { 68 | border-color: darken($form-primary, 7%); 69 | } 70 | & .btn + .btn.btn-info { 71 | border-color: darken($form-info, 7%); 72 | } 73 | & .btn + .btn.btn-success { 74 | border-color: darken($form-success, 7%); 75 | } 76 | & .btn + .btn.btn-warning { 77 | border-color: darken($form-warning, 7%); 78 | } 79 | & .btn + .btn.btn-danger { 80 | border-color: darken($form-danger, 7%); 81 | } 82 | } 83 | 84 | .input-group-addon { 85 | background-color: $form-normal; 86 | border-color: darken($form-normal, 7%); 87 | color: $form-default; 88 | 89 | & .radio, 90 | & .checkbox { 91 | margin: -3px 0 -4px !important; 92 | } 93 | } 94 | 95 | .form-search { 96 | & .search-query, 97 | & .search-query:first-child, 98 | & .search-query:last-child { 99 | padding: 0 $search-query-value; 100 | @include radius($type: border-radius, $value: $search-query-value); 101 | } 102 | @at-root .input-group .form-control:last-child { 103 | // padding: 0 $search-query-value 0 10px; 104 | @include radius($type: border-top-left-radius, $value: 0); 105 | @include radius($type: border-bottom-left-radius, $value: 0); 106 | } 107 | @at-root .input-group .form-control:first-child { 108 | @include radius($type: border-top-right-radius, $value: 0); 109 | @include radius($type: border-bottom-right-radius, $value: 0); 110 | } 111 | & .btn { 112 | @include radius($type: border-radius, $value: $search-query-value); 113 | } 114 | } 115 | 116 | .search-only { 117 | position: relative; 118 | & .search-icon { 119 | position: absolute; 120 | top: 2px; 121 | left: $search-query-value / 2; 122 | width: $search-icon-width; 123 | line-height: $search-icon-line-height; 124 | text-align: center; 125 | font-size: $search-query-value; 126 | color: $form-placeholder-font-color; 127 | z-index: 20; 128 | } 129 | & .form-control:last-child { 130 | padding-left: $search-icon-width + 10; 131 | } 132 | } 133 | 134 | .has-success { 135 | & .help-block, 136 | & .control-label, 137 | & .radio, 138 | & .checkbox, 139 | & .radio-inline, 140 | & .checkbox-inline { 141 | color: $message-success; 142 | } 143 | & .form-control { 144 | border-color: $message-success; 145 | @include box-shadow($value: none); 146 | } 147 | & .form-control:focus { 148 | border-color: $message-success; 149 | @include box-shadow($value: none); 150 | } 151 | & .input-group-addon { 152 | background-color: $message-success; 153 | border-color: $message-success; 154 | } 155 | & .form-control-feedback { 156 | color: $message-success; 157 | } 158 | } 159 | .has-warning { 160 | & .help-block, 161 | & .control-label, 162 | & .radio, 163 | & .checkbox, 164 | & .radio-inline, 165 | & .checkbox-inline { 166 | color: $message-warning; 167 | } 168 | & .form-control { 169 | border-color: $message-warning; 170 | @include box-shadow($value: none); 171 | } 172 | & .form-control:focus { 173 | border-color: $message-warning; 174 | @include box-shadow($value: none); 175 | } 176 | & .input-group-addon { 177 | background-color: $message-warning; 178 | border-color: $message-warning; 179 | } 180 | & .form-control-feedback { 181 | color: $message-warning; 182 | } 183 | } 184 | .has-error { 185 | & .help-block, 186 | & .control-label, 187 | & .radio, 188 | & .checkbox, 189 | & .radio-inline, 190 | & .checkbox-inline { 191 | color: $message-danger; 192 | } 193 | & .form-control { 194 | border-color: $message-danger; 195 | @include box-shadow($value: none); 196 | } 197 | & .form-control:focus { 198 | border-color: $message-danger; 199 | @include box-shadow($value: none); 200 | } 201 | & .input-group-addon { 202 | background-color: $message-danger; 203 | border-color: $message-danger; 204 | } 205 | & .form-control-feedback { 206 | color: $message-danger; 207 | } 208 | } 209 | 210 | } 211 | 212 | 213 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_selecter.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $selecter-primary: $aqua-dark !default; 4 | 5 | $selecter-border-color: $mediumgray-dark !default; 6 | $selecter-background-color: $white !default; 7 | $selecter-disabled-color: $mediumgray-dark !default; 8 | $selecter-disabled-background-color: $lightgray-dark !default; 9 | $selecter-radius-value: 4px !default; 10 | $selecter-arrow-width: 20px !default; 11 | 12 | $selecter-group-color: $mediumgray-dark !default; 13 | $selecter-group-background-color: $lightgray-light !default; 14 | 15 | $selecter-item-border-color: $lightgray-dark !default; 16 | $selecter-item-hover: $lightgray-dark !default; 17 | $selecter-item-selected: $aqua-dark !default; 18 | $selecter-item-selected-border-color: $aqua-light !default; 19 | 20 | 21 | // Exports 22 | //------------------------------------------------------ 23 | 24 | @include exports("selecter") { 25 | .selecter { 26 | display: block; 27 | position: relative; 28 | max-width: 100%; 29 | z-index: 1; 30 | outline: none; 31 | 32 | & .selecter-element { 33 | display: none; 34 | *left: -999999px; 35 | height: 100%; 36 | left: 0; 37 | position: absolute; 38 | @include opacity($opacity: 0, $filter: true); 39 | width: 100%; 40 | z-index: 0; 41 | } 42 | & .selecter-element, 43 | & .selecter-element:focus { 44 | outline: none; 45 | -webkit-tap-highlight-color: rgba(255, 255, 255, 0); 46 | -webkit-tap-highlight-color: transparent; 47 | } 48 | 49 | & .selecter-selected { 50 | background-color: $selecter-background-color; 51 | border: 1px solid $selecter-border-color; 52 | @include radius($value: $selecter-radius-value); 53 | cursor: pointer; 54 | display: block; 55 | overflow: hidden; 56 | padding: 6px 10px; 57 | position: relative; 58 | text-overflow: clip; 59 | z-index: 2; 60 | 61 | &:after { 62 | position: absolute; 63 | top: 14px; 64 | right: 10px; 65 | content: ""; 66 | width: 0; 67 | height: 0; 68 | border-top: 4px solid $black; 69 | border-left: 4px solid transparent; 70 | border-right: 4px solid transparent; 71 | } 72 | } 73 | & .selecter-options { 74 | border: 1px solid $selecter-border-color; 75 | border-width: 0 1px 1px; 76 | @include radius($value: 0 0 $selecter-radius-value $selecter-radius-value); 77 | @include box-shadow($value: 0 6px 12px rgba(0,0,0,.175)); 78 | background-color: $selecter-background-color; 79 | display: none; 80 | left: 0; 81 | max-height: 260px; 82 | overflow: auto; 83 | overflow-x: hidden; 84 | position: absolute; 85 | top: 100%; 86 | width: 100%; 87 | *width: auto; 88 | z-index: 50; 89 | } 90 | & .selecter-group { 91 | border-bottom: 1px solid $selecter-item-border-color; 92 | color: $selecter-group-color; 93 | background-color: $selecter-group-background-color; 94 | display: block; 95 | font-size: 11px; 96 | padding: 5px 10px 4px; 97 | text-transform: uppercase; 98 | } 99 | & .selecter-item { 100 | background-color: $selecter-background-color; 101 | border-bottom: 1px solid $selecter-item-border-color; 102 | cursor: pointer; 103 | display: block; 104 | margin: 0; 105 | overflow: hidden; 106 | padding: 6px 10px; 107 | text-overflow: ellipsis; 108 | width: 100%; 109 | 110 | &.selected { 111 | color: $white; 112 | border-bottom-color: $selecter-item-selected-border-color; 113 | background-color: $selecter-item-selected; 114 | } 115 | &.disabled { 116 | color: $selecter-disabled-color; 117 | cursor: default; 118 | } 119 | &:first-child { 120 | @include radius($value: 0); 121 | } 122 | &:last-child { 123 | @include radius($value: 0 0 $selecter-radius-value $selecter-radius-value); 124 | border-bottom: 0; 125 | } 126 | } 127 | 128 | & .selecter-item:hover { 129 | background-color: $selecter-item-hover; 130 | } 131 | & .selecter-item.selected:hover { 132 | background-color: $selecter-item-selected; 133 | } 134 | 135 | & .selecter-item.disabled:hover, 136 | &:hover .selecter-selected, 137 | &.disabled .selecter-item:hover { 138 | background-color: $selecter-background-color; 139 | } 140 | 141 | /* Open */ 142 | &.open { 143 | outline: 0; 144 | z-index: 3; 145 | 146 | & .selecter-selected { 147 | border: 1px solid $selecter-primary; 148 | @include radius($value: $selecter-radius-value $selecter-radius-value 0 0); 149 | z-index: 51; 150 | } 151 | } 152 | 153 | &.open .selecter-selected, 154 | &.focus .selecter-selected { 155 | background-color: $selecter-background-color; 156 | } 157 | 158 | /* 'Cover' Positioning */ 159 | &.cover { 160 | & .selecter-options { 161 | @include radius($value: $selecter-radius-value); 162 | border-width: 1px; 163 | top: 0; 164 | 165 | & .selecter-item.first { 166 | @include radius($value: $selecter-radius-value $selecter-radius-value 0 0); 167 | } 168 | 169 | } 170 | 171 | &.open .selecter-selected { 172 | @include radius($value: $selecter-radius-value $selecter-radius-value 0 0); 173 | z-index: 49; 174 | } 175 | } 176 | 177 | 178 | /* 'Bottom' Positioning */ 179 | &.bottom { 180 | & .selecter-options { 181 | border-width: 1px 1px 0; 182 | bottom: 100%; 183 | top: auto; 184 | } 185 | & .selecter-item:last-child { 186 | @include radius($value: 0); 187 | border: none; 188 | } 189 | &.open .selecter-selected { 190 | @include radius($value: 0 0 $selecter-radius-value $selecter-radius-value); 191 | } 192 | &.open .selecter-options { 193 | @include radius($value: $selecter-radius-value $selecter-radius-value 0 0); 194 | } 195 | } 196 | 197 | /* 'Bottom' + 'Cover' Positioning */ 198 | &.bottom.cover { 199 | & .selecter-options { 200 | bottom: 0; 201 | top: auto; 202 | } 203 | &.open .selecter-selected, 204 | &.open .selecter-options { 205 | @include radius($value: $selecter-radius-value); 206 | } 207 | } 208 | 209 | 210 | /* Multiple Select */ 211 | &.multiple .selecter-options { 212 | @include radius($value: $selecter-radius-value); 213 | border-width: 1px; 214 | box-shadow: none; 215 | display: block; 216 | position: static; 217 | width: 100%; 218 | } 219 | 220 | /* 'Disabled' State */ 221 | &.disabled { 222 | & .selecter-selected { 223 | background-color: $selecter-disabled-background-color; 224 | border-color: $selecter-disabled-background-color; 225 | color: $selecter-disabled-color; 226 | cursor: default; 227 | } 228 | & .selecter-options { 229 | background-color: $selecter-disabled-background-color; 230 | border-color: $selecter-disabled-background-color; 231 | } 232 | & .selecter-group, 233 | & .selecter-item { 234 | background-color: $selecter-disabled-background-color; 235 | border-color: $selecter-item-border-color; 236 | color: $selecter-disabled-color; 237 | cursor: default; 238 | } 239 | & .selecter-item.selected { 240 | background-color: $selecter-primary; 241 | @include opacity($opacity: 45, $filter: true); 242 | color: $white; 243 | } 244 | } 245 | 246 | 247 | /* Scroller Support */ 248 | & .selecter-options.scroller { 249 | overflow: hidden; 250 | 251 | & .scroller-content { 252 | max-height: 260px; 253 | padding: 0; 254 | } 255 | } 256 | 257 | } 258 | } 259 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_panel.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $panel-normal: $lightgray-dark !default; 4 | $panel-default: $white !default; 5 | $panel-primary: $aqua-dark !default; 6 | $panel-success: $grass-dark !default; 7 | $panel-danger: $grapefruit-dark !default; 8 | $panel-warning: $sunflower-dark !default; 9 | $panel-info: $mint-dark !default; 10 | 11 | $panel-font-color: $darkgray-dark !default; 12 | 13 | $panel-background-color: $white !default; 14 | $panel-shadow: 0 1px 2px rgba(0, 0, 0, .2) !default; 15 | $panel-radius: 4px !default; 16 | 17 | 18 | // Exports 19 | //------------------------------------------------------ 20 | 21 | @include exports("panel") { 22 | 23 | /** 24 | * panel 25 | * -------------------------------------------------- 26 | */ 27 | .panel { 28 | background-color: $panel-background-color; 29 | border: none; 30 | @include radius($type: border-radius, $value: $panel-radius); 31 | @include box-shadow($value: $panel-shadow); 32 | 33 | & .list-group { 34 | @include box-shadow($value: none); 35 | } 36 | & .list-group-item:first-child { 37 | border-top: 1px solid $panel-normal; 38 | } 39 | 40 | &-heading { 41 | @include radius($type: border-radius, $value: $panel-radius $panel-radius 0 0); 42 | } 43 | &-title { 44 | font-size: 14px; 45 | color: $panel-font-color; 46 | font-weight: normal; 47 | } 48 | &-footer { 49 | background-color: $panel-normal; 50 | border-top-color: $panel-normal; 51 | @include radius($type: border-radius, $value: 0 0 $panel-radius $panel-radius); 52 | } 53 | 54 | @at-root &-default { 55 | border-color: $panel-normal; 56 | & > .panel-heading { 57 | color: $panel-font-color; 58 | background-color: $panel-normal; 59 | border-color: $panel-normal; 60 | } 61 | } 62 | @at-root &-primary { 63 | border-color: $panel-primary; 64 | & > .panel-heading { 65 | color: $panel-default; 66 | background-color: $panel-primary; 67 | border-color: $panel-primary; 68 | } 69 | } 70 | @at-root &-success { 71 | border-color: $panel-success; 72 | & > .panel-heading { 73 | color: $panel-default; 74 | background-color: $panel-success; 75 | border-color: $panel-success; 76 | } 77 | } 78 | @at-root &-info { 79 | border-color: $panel-info; 80 | & > .panel-heading { 81 | color: $panel-default; 82 | background-color: $panel-info; 83 | border-color: $panel-info; 84 | } 85 | } 86 | @at-root &-warning { 87 | border-color: $panel-warning; 88 | & > .panel-heading { 89 | color: $panel-default; 90 | background-color: $panel-warning; 91 | border-color: $panel-warning; 92 | } 93 | } 94 | @at-root &-danger { 95 | border-color: $panel-danger; 96 | & > .panel-heading { 97 | color: $panel-default; 98 | background-color: $panel-danger; 99 | border-color: $panel-danger; 100 | } 101 | } 102 | 103 | @at-root &-primary > &-heading > &-title, 104 | &-success > &-heading > &-title, 105 | &-info > &-heading > &-title, 106 | &-warning > &-heading > &-title, 107 | &-danger > &-heading > &-title { 108 | color: $panel-default; 109 | } 110 | 111 | & > .list-group:first-child .list-group-item:first-child, 112 | & > .table:first-child, 113 | & > .table-responsive:first-child > .table:first-child { 114 | @include radius($type: border-radius, $value: $panel-radius $panel-radius 0 0); 115 | } 116 | & > .list-group:last-child .list-group-item:last-child { 117 | @include radius($type: border-radius, $value: 0 0 $panel-radius $panel-radius); 118 | } 119 | & > .table:first-child > thead:first-child > tr:first-child td:first-child, 120 | & > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, 121 | & > .table:first-child > tbody:first-child > tr:first-child td:first-child, 122 | & > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, 123 | & > .table:first-child > thead:first-child > tr:first-child th:first-child, 124 | & > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, 125 | & > .table:first-child > tbody:first-child > tr:first-child th:first-child, 126 | & > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { 127 | @include radius($type: border-radius, $value: $panel-radius 0 0 0); 128 | } 129 | & > .table:first-child > thead:first-child > tr:first-child td:last-child, 130 | & > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, 131 | & > .table:first-child > tbody:first-child > tr:first-child td:last-child, 132 | & > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, 133 | & > .table:first-child > thead:first-child > tr:first-child th:last-child, 134 | & > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, 135 | & > .table:first-child > tbody:first-child > tr:first-child th:last-child, 136 | & > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { 137 | @include radius($type: border-radius, $value: 0 $panel-radius 0 0); 138 | } 139 | & > .table:last-child, 140 | & > .table-responsive:last-child > .table:last-child { 141 | @include radius($type: border-radius, $value: 0 0 $panel-radius $panel-radius); 142 | } 143 | & > .table:last-child > tbody:last-child > tr:last-child td:first-child, 144 | & > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, 145 | & > .table:last-child > tfoot:last-child > tr:last-child td:first-child, 146 | & > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, 147 | & > .table:last-child > tbody:last-child > tr:last-child th:first-child, 148 | & > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, 149 | & > .table:last-child > tfoot:last-child > tr:last-child th:first-child, 150 | & > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { 151 | @include radius($type: border-radius, $value: 0 0 0 $panel-radius); 152 | } 153 | & > .table:last-child > tbody:last-child > tr:last-child td:last-child, 154 | & > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, 155 | & > .table:last-child > tfoot:last-child > tr:last-child td:last-child, 156 | & > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, 157 | & > .table:last-child > tbody:last-child > tr:last-child th:last-child, 158 | & > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, 159 | & > .table:last-child > tfoot:last-child > tr:last-child th:last-child, 160 | & > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { 161 | @include radius($type: border-radius, $value: 0 0 $panel-radius 0); 162 | } 163 | & > &-body + .table, 164 | & > &-body + .table-responsive { 165 | border-top-color: $panel-normal; 166 | } 167 | } 168 | 169 | } 170 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_global.scss: -------------------------------------------------------------------------------- 1 | // Global Variables 2 | //------------------------------------------------------ 3 | $modules: () !default; 4 | 5 | $experimental: true !default; 6 | 7 | // prefix elements 8 | $prefix-webkit: true !global; 9 | $prefix-moz: true !global; 10 | $prefix-spec: true !global; 11 | 12 | // color elements 13 | $white: #FFF !default; 14 | $black: #000 !default; 15 | 16 | $bluejeans-dark: #4A89DC !default; 17 | $bluejeans-light: #5D9CEC !default; 18 | 19 | $aqua-dark: #3BAFDA !default; 20 | $aqua-light: #4FC1E9 !default; 21 | 22 | $mint-dark: #37BC9B !default; 23 | $mint-light: #48CFAD !default; 24 | 25 | $grass-dark: #8CC152 !default; 26 | $grass-light: #A0D468 !default; 27 | 28 | $sunflower-dark: #F6BB42 !default; 29 | $sunflower-light: #FFCE54 !default; 30 | 31 | $bittersweet-dark: #E9573F !default; 32 | $bittersweet-light: #FC6E51 !default; 33 | 34 | $grapefruit-dark: #DA4453 !default; 35 | $grapefruit-light: #ED5565 !default; 36 | 37 | $lavender-dark: #967ADC !default; 38 | $lavender-light: #AC92EC !default; 39 | 40 | $pinkrose-dark: #D770AD !default; 41 | $pinkrose-light: #EC87C0 !default; 42 | 43 | $lightgray-dark: #E6E9ED !default; 44 | $lightgray-light: #F5F7FA !default; 45 | 46 | $mediumgray-dark: #AAB2BD !default; 47 | $mediumgray-light: #CCD1D9 !default; 48 | 49 | $darkgray-dark: #434A54 !default; 50 | $darkgray-light: #656D78 !default; 51 | 52 | // Global Mixins 53 | //------------------------------------------------------ 54 | 55 | // We use this to loading scss files 56 | @mixin exports($name) { 57 | @if index($modules, $name) { 58 | } @else { 59 | $modules: append($modules, $name) !global; 60 | @content; 61 | } 62 | } 63 | 64 | // We use this to do set opacity 65 | @mixin opacity($opacity:50, $filter: true) { 66 | opacity: $opacity / 100; 67 | @if $filter { 68 | filter: alpha(opacity=$opacity); 69 | } 70 | } 71 | 72 | // We use this to ellipsis text 73 | @mixin ellipsis($width: 100%) { 74 | display: inline-block; 75 | max-width: $width; 76 | overflow: hidden; 77 | text-overflow: ellipsis; 78 | white-space: nowrap; 79 | } 80 | 81 | // We use this to add across browser prefixes 82 | @mixin prefixer($property, $value, $prefixes: webkit moz spec) { 83 | @if $experimental { 84 | @each $prefix in $prefixes { 85 | @if $prefix != spec { 86 | @if $property == border-top-left-radius and $prefix == moz { 87 | @if $prefix-moz { 88 | -moz-border-radius-topleft: $value; 89 | } 90 | } @else if $property == border-top-right-radius and $prefix == moz { 91 | @if $prefix-moz { 92 | -moz-border-radius-topright: $value; 93 | } 94 | } @else if $property == border-bottom-right-radius and $prefix == moz { 95 | @if $prefix-moz { 96 | -moz-border-radius-bottomright: $value; 97 | } 98 | } @else if $property == border-bottom-left-radius and $prefix == moz { 99 | @if $prefix-moz { 100 | -moz-border-radius-bottomleft: $value; 101 | } 102 | } @else { 103 | @if $prefix == webkit { 104 | @if $prefix-webkit { 105 | -webkit-#{$property}: $value; 106 | } 107 | } 108 | @if $prefix == moz { 109 | @if $prefix-moz { 110 | -moz-#{$property}: $value; 111 | } 112 | } 113 | } 114 | } @else { 115 | @if $prefix-spec { 116 | #{$property}: $value; 117 | } 118 | } 119 | } 120 | } 121 | } 122 | 123 | // We use this to add box-sizing across browser prefixes 124 | @mixin box-sizing($value: border-box) { 125 | @include prefixer($property: box-sizing, $value: $value, $prefixes: webkit moz spec); 126 | } 127 | 128 | // We use this to control border radius. 129 | @mixin radius($type: border-radius, $value: $global-radius) { 130 | @include prefixer($property: $type, $value: $value, $prefixes: webkit moz spec); 131 | } 132 | 133 | // We use this to control box shadow. 134 | @mixin box-shadow($value) { 135 | @include prefixer($property: box-shadow, $value: $value, $prefixes: webkit moz spec); 136 | } 137 | // We use this to creat animation effect. 138 | // Examples: 139 | // @include keyframes(move-the-object) { 140 | // 0% { left: 100px; } 141 | // 100% { left: 200px; } 142 | // } 143 | // .object-to-animate { 144 | // @include animation(move-the-object .5s 1); 145 | // } 146 | @mixin animation ($value...) { 147 | @include prefixer($property: animation, $value: $value, $prefixes: webkit moz spec); 148 | } 149 | // Individual Animation Properties 150 | @mixin animation-name ($value...) { 151 | @include prefixer($property: animation-name, $value: $value, $prefixes: webkit moz spec); 152 | } 153 | @mixin animation-duration ($value...) { 154 | @include prefixer($property: animation-duration, $value: $value, $prefixes: webkit moz spec); 155 | } 156 | @mixin animation-timing-function ($value...) { 157 | // ease | linear | ease-in | ease-out | ease-in-out 158 | @include prefixer($property: animation-timing-function, $value: $value, $prefixes: webkit moz spec); 159 | } 160 | @mixin animation-iteration-count ($value...) { 161 | // infinite | 162 | @include prefixer($property: animation-iteration-count, $value: $value, $prefixes: webkit moz spec); 163 | } 164 | @mixin animation-direction ($value...) { 165 | @include prefixer($property: animation-direction, $value: $value, $prefixes: webkit moz spec); 166 | } 167 | @mixin animation-play-state ($value...) { 168 | // running | paused 169 | @include prefixer($property: animation-play-state, $value: $value, $prefixes: webkit moz spec); 170 | } 171 | @mixin animation-delay ($value...) { 172 | @include prefixer($property: animation-delay, $value: $value, $prefixes: webkit moz spec); 173 | } 174 | @mixin animation-fill-mode ($value...) { 175 | // none | forwards | backwards | both 176 | @include prefixer($property: animation-fill-mode, $value: $value, $prefixes: webkit moz spec); 177 | } 178 | @mixin keyframes($name) { 179 | $original-prefix-webkit: $prefix-webkit; 180 | $original-prefix-moz: $prefix-moz; 181 | $original-prefix-spec: $prefix-spec; 182 | 183 | @if $original-prefix-webkit { 184 | @include disable-prefix(); 185 | $prefix-webkit: true !global; 186 | @-webkit-keyframes #{$name} { 187 | @content; 188 | } 189 | } 190 | @if $original-prefix-moz { 191 | @include disable-prefix(); 192 | $prefix-moz: true !global; 193 | @-moz-keyframes #{$name} { 194 | @content; 195 | } 196 | } 197 | @if $original-prefix-spec { 198 | @include disable-prefix(); 199 | $prefix-spec: true !global; 200 | @keyframes #{$name} { 201 | @content; 202 | } 203 | } 204 | 205 | $prefix-webkit: $original-prefix-webkit !global; 206 | $prefix-moz: $original-prefix-moz !global; 207 | $prefix-spec: $original-prefix-spec !global; 208 | } 209 | 210 | // We use this to set transform. 211 | @mixin transform($value: none) { 212 | // none | 213 | @include prefixer($property: transform, $value: $value, $prefixes: webkit moz spec); 214 | } 215 | 216 | @mixin transform-origin($value: 50%) { 217 | // x-axis - left | center | right | length | % 218 | // y-axis - top | center | bottom | length | % 219 | // z-axis - length 220 | @include prefixer($property: transform-origin, $value: $value, $prefixes: webkit moz spec); 221 | } 222 | 223 | @mixin transform-style ($value: flat) { 224 | @include prefixer($property: transform-style, $value: $value, $prefixes: webkit moz spec); 225 | } 226 | 227 | // We use this to set transition. 228 | // example: @include transition (all 2s ease-in-out); 229 | // @include transition (opacity 1s ease-in 2s, width 2s ease-out); 230 | // @include transition-property (transform, opacity); 231 | 232 | @mixin transition ($value...) { 233 | @if length($value) >= 1 { 234 | @include prefixer($property: transition, $value: $value, $prefixes: webkit moz spec); 235 | } @else { 236 | $value: all 0.15s ease-out 0s; 237 | @include prefixer($property: transition, $value: $value, $prefixes: webkit moz spec); 238 | } 239 | } -------------------------------------------------------------------------------- /ProgrammerProfile/templates/staruser.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load static %} 3 | 4 | {% block title %}Programmer Profile - {% if selected %}{{ selected }}{% else %}各{% endif %}界のフォローすべきTwitterアカウント{% endblock %} 5 | 6 | {% block moreheader %} 7 | 8 | 9 | 10 | 11 | 12 | {% endblock %} 13 | 14 | {% block content %} 15 | 16 | 73 | 74 |
75 |
76 |

あの人がいないじゃないか!というのがありましたら、推薦宜しくお願いします。有益なリスト作りにご協力お願いします!

77 |
78 |
79 |
80 |
81 |
82 |
83 | 84 |
85 |
86 | 87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 | {% for staruser in users %} 97 |
98 |
99 | 100 | @{{ staruser.username }} 101 | 102 |
103 |
104 | {{ staruser.num_recommend }}人の推薦 105 | 106 |

@{{ staruser.username }}

107 |
108 |

{{ staruser.userScreenName }}

109 | {{ staruser.userDescription }} 110 |
111 |
112 |
113 | {% endfor %} 114 |
115 |
116 |
117 |
118 | 119 |
120 | 121 |
122 |
123 |
124 | 125 |
126 | 134 |
135 |
136 |
137 | 142 | このエントリーをはてなブックマークに追加 147 | 148 | 149 |
150 |
151 | 157 | 165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 | 175 | 176 | {% endblock %} 177 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/bootflat/_navbar.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | //------------------------------------------------------ 3 | $navbar-background-color: $mint-dark !default; 4 | $navbar-background-color-active: $mint-light !default; 5 | 6 | $navbar-font-color: $white !default; 7 | $navbar-item-background-color-hover: $navbar-background-color-active !default; 8 | 9 | $navbar-inverse-background-color: $black !default; 10 | 11 | // Exports 12 | //------------------------------------------------------ 13 | 14 | @include exports("navbar") { 15 | 16 | /** 17 | * navbar 18 | * -------------------------------------------------- 19 | */ 20 | .navbar-form { 21 | padding: 0 !important; 22 | } 23 | 24 | .navbar-default { 25 | & { 26 | background-color: $navbar-background-color; 27 | border-color: $navbar-background-color; 28 | } 29 | & .navbar-brand, 30 | & .navbar-link, 31 | & .btn-link { 32 | color: darken($navbar-background-color, 15%); 33 | } 34 | & .navbar-brand:hover, 35 | & .navbar-brand:focus, 36 | & .navbar-link:hover, 37 | & .btn-link:hover, 38 | & .btn-link:focus { 39 | color: $navbar-font-color; 40 | background-color: transparent; 41 | } 42 | & .navbar-text, 43 | & .navbar-nav > li > a { 44 | color: darken($navbar-background-color, 15%); 45 | } 46 | & .navbar-nav > li > a:hover, 47 | & .navbar-nav > li > a:focus { 48 | color: $navbar-font-color; 49 | } 50 | & .navbar-nav > .active > a, 51 | & .navbar-nav > .active > a:hover, 52 | & .navbar-nav > .active > a:focus { 53 | color: $navbar-font-color; 54 | background-color: $navbar-background-color-active; 55 | } 56 | & .btn-link[disabled]:hover, 57 | fieldset[disabled] & .btn-link:hover, 58 | & .btn-link[disabled]:focus, 59 | fieldset[disabled] & .btn-link:focus, 60 | & .navbar-nav > .disabled > a, 61 | & .navbar-nav > .disabled > a:hover, 62 | & .navbar-nav > .disabled > a:focus { 63 | color: darken($navbar-background-color, 8%); 64 | background-color: transparent; 65 | } 66 | & .navbar-toggle { 67 | border-color: darken($navbar-background-color, 15%); 68 | background-color: darken($navbar-background-color, 15%); 69 | } 70 | & .navbar-toggle:hover, 71 | & .navbar-toggle:focus { 72 | border-color: darken($navbar-background-color, 10%); 73 | background-color: darken($navbar-background-color, 10%); 74 | } 75 | & .navbar-toggle .icon-bar { 76 | background-color: $navbar-background-color; 77 | } 78 | & .navbar-collapse, 79 | & .navbar-form { 80 | border-color: $navbar-item-background-color-hover; 81 | } 82 | 83 | 84 | & .navbar-nav > .open > a, 85 | & .navbar-nav > .open > a:hover, 86 | & .navbar-nav > .open > a:focus { 87 | color: $navbar-font-color; 88 | background-color: $navbar-background-color; 89 | } 90 | 91 | @media (max-width: 767px) { 92 | & .navbar-nav > li > a:hover, 93 | & .navbar-nav > li > a:focus { 94 | background-color: $navbar-background-color-active; 95 | } 96 | & .navbar-nav .open .dropdown-menu > .divider { 97 | background-color: $navbar-item-background-color-hover; 98 | } 99 | & .navbar-nav .open .dropdown-menu > li > a { 100 | color: darken($navbar-background-color, 15%);; 101 | } 102 | & .navbar-nav .open .dropdown-menu > li > a:hover, 103 | & .navbar-nav .open .dropdown-menu > li > a:focus, 104 | & .navbar-nav .open .dropdown-menu > .active > a, 105 | & .navbar-nav .open .dropdown-menu > .active > a:hover, 106 | & .navbar-nav .open .dropdown-menu > .active > a:focus { 107 | color: $navbar-font-color; 108 | background-color: $navbar-item-background-color-hover; 109 | } 110 | & .navbar-nav .open .dropdown-menu > .dropdown-header { 111 | color: darken($navbar-background-color, 15%); 112 | } 113 | & .navbar-nav .open .dropdown-menu > .disabled > a, 114 | & .navbar-nav .open .dropdown-menu > .disabled > a:hover, 115 | & .navbar-nav .open .dropdown-menu > .disabled > a:focus { 116 | color: darken($navbar-background-color, 10%); 117 | } 118 | } 119 | } 120 | 121 | .navbar-inverse { 122 | & { 123 | background-color: lighten($navbar-inverse-background-color, 20%); 124 | border-color: lighten($navbar-inverse-background-color, 20%); 125 | } 126 | & .navbar-brand, 127 | & .navbar-link, 128 | & .btn-link { 129 | color: lighten($navbar-inverse-background-color, 55%); 130 | } 131 | & .navbar-brand:hover, 132 | & .navbar-brand:focus, 133 | & .navbar-link:hover, 134 | & .btn-link:hover, 135 | & .btn-link:focus { 136 | color: $navbar-font-color; 137 | background-color: transparent; 138 | } 139 | & .navbar-text, 140 | & .navbar-nav > li > a { 141 | color: lighten($navbar-inverse-background-color, 55%); 142 | } 143 | & .navbar-nav > li > a:hover, 144 | & .navbar-nav > li > a:focus { 145 | color: $navbar-font-color; 146 | } 147 | & .navbar-nav > .active > a, 148 | & .navbar-nav > .active > a:hover, 149 | & .navbar-nav > .active > a:focus { 150 | color: $navbar-font-color; 151 | background-color: $navbar-inverse-background-color; 152 | } 153 | & .btn-link[disabled]:hover, 154 | fieldset[disabled] & .btn-link:hover, 155 | & .btn-link[disabled]:focus, 156 | fieldset[disabled] & .btn-link:focus, 157 | & .navbar-nav > .disabled > a, 158 | & .navbar-nav > .disabled > a:hover, 159 | & .navbar-nav > .disabled > a:focus { 160 | color: lighten($navbar-inverse-background-color, 40%); 161 | background-color: transparent; 162 | } 163 | & .navbar-toggle { 164 | border-color: $navbar-inverse-background-color; 165 | background-color: $navbar-inverse-background-color; 166 | } 167 | & .navbar-toggle:hover, 168 | & .navbar-toggle:focus { 169 | border-color: lighten($navbar-inverse-background-color, 10%); 170 | background-color: lighten($navbar-inverse-background-color, 10%); 171 | } 172 | & .navbar-toggle .icon-bar { 173 | background-color: lighten($navbar-inverse-background-color, 55%); 174 | } 175 | & .navbar-collapse, 176 | & .navbar-form { 177 | border-color: $navbar-inverse-background-color; 178 | } 179 | & .navbar-nav > .open > a, 180 | & .navbar-nav > .open > a:hover, 181 | & .navbar-nav > .open > a:focus { 182 | color: $navbar-font-color; 183 | background-color: $navbar-inverse-background-color; 184 | } 185 | 186 | @media (max-width: 767px) { 187 | & .navbar-nav > li > a:hover, 188 | & .navbar-nav > li > a:focus { 189 | background-color: $navbar-inverse-background-color; 190 | } 191 | & .navbar-nav .open .dropdown-menu > .divider { 192 | background-color: $navbar-inverse-background-color; 193 | } 194 | & .navbar-nav .open .dropdown-menu > li > a { 195 | color: lighten($navbar-inverse-background-color, 55%); 196 | } 197 | & .navbar-nav .open .dropdown-menu > li > a:hover, 198 | & .navbar-nav .open .dropdown-menu > li > a:focus, 199 | & .navbar-nav .open .dropdown-menu > .active > a, 200 | & .navbar-nav .open .dropdown-menu > .active > a:hover, 201 | & .navbar-nav .open .dropdown-menu > .active > a:focus { 202 | color: $navbar-font-color; 203 | background-color: $navbar-inverse-background-color; 204 | } 205 | & .navbar-nav .open .dropdown-menu > .dropdown-header { 206 | color: lighten($navbar-inverse-background-color, 75%); 207 | } 208 | & .navbar-nav .open .dropdown-menu > .disabled > a, 209 | & .navbar-nav .open .dropdown-menu > .disabled > a:hover, 210 | & .navbar-nav .open .dropdown-menu > .disabled > a:focus { 211 | color: lighten($navbar-inverse-background-color, 40%); 212 | } 213 | } 214 | } 215 | 216 | } 217 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/js/jquery.fs.selecter.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Selecter v3.1.2 - 2014-05-30 3 | * A jQuery plugin for replacing default select elements. Part of the Formstone Library. 4 | * http://formstone.it/selecter/ 5 | * 6 | * Copyright 2014 Ben Plum; MIT Licensed 7 | */ 8 | 9 | !function(a,b){"use strict";function c(b){b=a.extend({},F,b||{}),null===E&&(E=a("body"));for(var c=a(this),e=0,f=c.length;f>e;e++)d(c.eq(e),b);return c}function d(b,c){if(!b.hasClass("selecter-element")){c=a.extend({},c,b.data("selecter-options")),c.external&&(c.links=!0);var d=b.find("option, optgroup"),g=d.filter("option"),h=g.filter(":selected"),j=h.length>0?g.index(h):1,k="div";c.tabIndex=b[0].tabIndex,b[0].tabIndex=-1,c.multiple=b.prop("multiple"),c.disabled=b.is(":disabled");var q="",s="";s+="<"+k+' class="selecter '+c.customClass,C?s+=" mobile":c.cover&&(s+=" cover"),s+=c.multiple?" multiple":" closed",c.disabled&&(s+=" disabled"),s+='" tabindex="'+c.tabIndex+'">',s+="",c.multiple||(q+='',q+=a("").text(v(""!==h.text()?h.text():c.label,c.trim)).html(),q+=""),q+='
',q+="
",b.addClass("selecter-element").wrap(s).after(q);var t=b.parent(".selecter"),u=a.extend({$select:b,$allOptions:d,$options:g,$selecter:t,$selected:t.find(".selecter-selected"),$itemsWrapper:t.find(".selecter-options"),index:-1,guid:z++},c);e(u),u.multiple||r(j,u),void 0!==a.fn.scroller&&u.$itemsWrapper.scroller(),u.$selecter.on("touchstart.selecter",".selecter-selected",u,f).on("click.selecter",".selecter-selected",u,i).on("click.selecter",".selecter-item",u,m).on("close.selecter",u,l).data("selecter",u),u.$select.on("change.selecter",u,n),C||(u.$selecter.on("focus.selecter",u,o).on("blur.selecter",u,p),u.$select.on("focus.selecter",u,function(a){a.data.$selecter.trigger("focus")}))}}function e(b){for(var c="",d=b.links?"a":"span",e=0,f=0,g=b.$allOptions.length;g>f;f++){var h=b.$allOptions.eq(f);if("OPTGROUP"===h[0].tagName)c+='";else{var i=h.val();h.attr("value")||h.attr("value",i),c+="<"+d+' class="selecter-item',h.is(":selected")&&(c+=" selected"),h.is(":disabled")&&(c+=" disabled"),c+='" ',c+=b.links?'href="'+i+'"':'data-value="'+i+'"',c+=">"+a("").text(v(h.text(),b.trim)).html()+"",e++}}b.$itemsWrapper.html(c),b.$items=b.$selecter.find(".selecter-item")}function f(a){a.stopPropagation();var b=a.data,c=a.originalEvent;y(b.timer),b.touchStartX=c.touches[0].clientX,b.touchStartY=c.touches[0].clientY,b.$selecter.on("touchmove.selecter",".selecter-selected",b,g).on("touchend.selecter",".selecter-selected",b,h)}function g(a){var b=a.data,c=a.originalEvent;(Math.abs(c.touches[0].clientX-b.touchStartX)>10||Math.abs(c.touches[0].clientY-b.touchStartY)>10)&&b.$selecter.off("touchmove.selecter touchend.selecter")}function h(a){var b=a.data;b.$selecter.off("touchmove.selecter touchend.selecter click.selecter"),b.timer=x(b.timer,1e3,function(){b.$selecter.on("click.selecter",".selecter-selected",b,i)}),i(a)}function i(c){c.preventDefault(),c.stopPropagation();var d=c.data;if(!d.$select.is(":disabled"))if(a(".selecter").not(d.$selecter).trigger("close.selecter",[d]),C&&!D){var e=d.$select[0];if(b.document.createEvent){var f=b.document.createEvent("MouseEvents");f.initMouseEvent("mousedown",!1,!0,b,0,0,0,0,0,!1,!1,!1,!1,0,null),e.dispatchEvent(f)}else e.fireEvent&&e.fireEvent("onmousedown")}else d.$selecter.hasClass("closed")?j(c):d.$selecter.hasClass("open")&&l(c)}function j(a){a.preventDefault(),a.stopPropagation();var b=a.data;if(!b.$selecter.hasClass("open")){{var c=b.$selecter.offset(),d=E.outerHeight(),e=b.$itemsWrapper.outerHeight(!0);b.index>=0?b.$items.eq(b.index).position():{left:0,top:0}}c.top+e>d&&b.$selecter.addClass("bottom"),b.$itemsWrapper.show(),b.$selecter.removeClass("closed").addClass("open"),E.on("click.selecter-"+b.guid,":not(.selecter-options)",b,k),s(b)}}function k(b){b.preventDefault(),b.stopPropagation(),0===a(b.currentTarget).parents(".selecter").length&&l(b)}function l(a){a.preventDefault(),a.stopPropagation();var b=a.data;b.$selecter.hasClass("open")&&(b.$itemsWrapper.hide(),b.$selecter.removeClass("open bottom").addClass("closed"),E.off(".selecter-"+b.guid))}function m(b){b.preventDefault(),b.stopPropagation();var c=a(this),d=b.data;if(!d.$select.is(":disabled")){if(d.$itemsWrapper.is(":visible")){var e=d.$items.index(c);e!==d.index&&(r(e,d),t(d))}d.multiple||l(b)}}function n(b,c){var d=a(this),e=b.data;if(!c&&!e.multiple){var f=e.$options.index(e.$options.filter("[value='"+w(d.val())+"']"));r(f,e),t(e)}}function o(b){b.preventDefault(),b.stopPropagation();var c=b.data;c.$select.is(":disabled")||c.multiple||(c.$selecter.addClass("focus").on("keydown.selecter-"+c.guid,c,q),a(".selecter").not(c.$selecter).trigger("close.selecter",[c]))}function p(b){b.preventDefault(),b.stopPropagation();var c=b.data;c.$selecter.removeClass("focus").off("keydown.selecter-"+c.guid),a(".selecter").not(c.$selecter).trigger("close.selecter",[c])}function q(b){var c=b.data;if(13===b.keyCode)c.$selecter.hasClass("open")&&(l(b),r(c.index,c)),t(c);else if(!(9===b.keyCode||b.metaKey||b.altKey||b.ctrlKey||b.shiftKey)){b.preventDefault(),b.stopPropagation();var d=c.$items.length-1,e=c.index<0?0:c.index;if(a.inArray(b.keyCode,B?[38,40,37,39]:[38,40])>-1)e+=38===b.keyCode||B&&37===b.keyCode?-1:1,0>e&&(e=0),e>d&&(e=d);else{var f,g,h=String.fromCharCode(b.keyCode).toUpperCase();for(g=c.index+1;d>=g;g++)if(f=c.$options.eq(g).text().charAt(0).toUpperCase(),f===h){e=g;break}if(0>e||e===c.index)for(g=0;d>=g;g++)if(f=c.$options.eq(g).text().charAt(0).toUpperCase(),f===h){e=g;break}}e>=0&&(r(e,c),s(c))}}function r(a,b){var c=b.$items.eq(a),d=c.hasClass("selected"),e=c.hasClass("disabled");if(!e){if(-1===a&&""!==b.label)b.$selected.html(b.label);else if(d)b.multiple&&(b.$options.eq(a).prop("selected",null),c.removeClass("selected"));else{{var f=c.html();c.data("value")}b.multiple?b.$options.eq(a).prop("selected",!0):(b.$selected.html(f).removeClass("placeholder"),b.$items.filter(".selected").removeClass("selected"),b.$select[0].selectedIndex=a),c.addClass("selected")}b.multiple||(b.index=a)}}function s(b){var c=b.index>=0?b.$items.eq(b.index).position():{left:0,top:0};void 0!==a.fn.scroller?b.$itemsWrapper.scroller("scroll",b.$itemsWrapper.find(".scroller-content").scrollTop()+c.top,0).scroller("reset"):b.$itemsWrapper.scrollTop(b.$itemsWrapper.scrollTop()+c.top)}function t(a){a.links?u(a):(a.callback.call(a.$selecter,a.$select.val(),a.index),a.$select.trigger("change",[!0]))}function u(a){var c=a.$select.val();a.external?b.open(c):b.location.href=c}function v(a,b){return 0===b?a:a.length>b?a.substring(0,b)+"...":a}function w(a){return"string"==typeof a?a.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,"\\$1"):a}function x(a,b,c,d){return y(a,d),d===!0?setInterval(c,b):setTimeout(c,b)}function y(a){null!==a&&(clearInterval(a),a=null)}var z=0,A=b.navigator.userAgent||b.navigator.vendor||b.opera,B=/Firefox/i.test(A),C=/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(A),D=B&&C,E=null,F={callback:a.noop,cover:!1,customClass:"",label:"",external:!1,links:!1,trim:0},G={defaults:function(b){return F=a.extend(F,b||{}),a(this)},disable:function(b){return a(this).each(function(c,d){var e=a(d).parent(".selecter").data("selecter");if(e)if("undefined"!=typeof b){var f=e.$items.index(e.$items.filter("[data-value="+b+"]"));e.$items.eq(f).addClass("disabled"),e.$options.eq(f).prop("disabled",!0)}else e.$selecter.hasClass("open")&&e.$selecter.find(".selecter-selected").trigger("click.selecter"),e.$selecter.addClass("disabled"),e.$select.prop("disabled",!0)})},enable:function(b){return a(this).each(function(c,d){var e=a(d).parent(".selecter").data("selecter");if(e)if("undefined"!=typeof b){var f=e.$items.index(e.$items.filter("[data-value="+b+"]"));e.$items.eq(f).removeClass("disabled"),e.$options.eq(f).prop("disabled",!1)}else e.$selecter.removeClass("disabled"),e.$select.prop("disabled",!1)})},destroy:function(){return a(this).each(function(b,c){var d=a(c).parent(".selecter").data("selecter");d&&(d.$selecter.hasClass("open")&&d.$selecter.find(".selecter-selected").trigger("click.selecter"),void 0!==a.fn.scroller&&d.$selecter.find(".selecter-options").scroller("destroy"),d.$select[0].tabIndex=d.tabIndex,d.$selected.remove(),d.$itemsWrapper.remove(),d.$selecter.off(".selecter"),d.$select.off(".selecter").removeClass("selecter-element").show().unwrap())})},refresh:function(){return a(this).each(function(b,c){var d=a(c).parent(".selecter").data("selecter");if(d){var f=d.index;d.$allOptions=d.$select.find("option, optgroup"),d.$options=d.$allOptions.filter("option"),d.index=-1,f=d.$options.index(d.$options.filter(":selected")),e(d),d.multiple||r(f,d)}})}};a.fn.selecter=function(a){return G[a]?G[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?this:c.apply(this,arguments)},a.selecter=function(a){"defaults"===a&&G.defaults.apply(this,Array.prototype.slice.call(arguments,1))}}(jQuery,window); -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/bootflat/scss/.csscomb.json: -------------------------------------------------------------------------------- 1 | { 2 | "always-semicolon": true, 3 | "block-indent": 2, 4 | "colon-space": [0, 1], 5 | "color-case": "lower", 6 | "color-shorthand": true, 7 | "combinator-space": true, 8 | "element-case": "lower", 9 | "eof-newline": true, 10 | "leading-zero": false, 11 | "remove-empty-rulesets": true, 12 | "rule-indent": 2, 13 | "stick-brace": " ", 14 | "strip-spaces": true, 15 | "unitless-zero": true, 16 | "vendor-prefix-align": true, 17 | "sort-order": [ 18 | [ 19 | "position", 20 | "top", 21 | "right", 22 | "bottom", 23 | "left", 24 | "z-index", 25 | "display", 26 | "float", 27 | "width", 28 | "min-width", 29 | "max-width", 30 | "height", 31 | "min-height", 32 | "max-height", 33 | "-webkit-box-sizing", 34 | "-moz-box-sizing", 35 | "box-sizing", 36 | "-webkit-appearance", 37 | "padding", 38 | "padding-top", 39 | "padding-right", 40 | "padding-bottom", 41 | "padding-left", 42 | "margin", 43 | "margin-top", 44 | "margin-right", 45 | "margin-bottom", 46 | "margin-left", 47 | "overflow", 48 | "overflow-x", 49 | "overflow-y", 50 | "-webkit-overflow-scrolling", 51 | "-ms-overflow-x", 52 | "-ms-overflow-y", 53 | "-ms-overflow-style", 54 | "clip", 55 | "clear", 56 | "font", 57 | "font-family", 58 | "font-size", 59 | "font-style", 60 | "font-weight", 61 | "font-variant", 62 | "font-size-adjust", 63 | "font-stretch", 64 | "font-effect", 65 | "font-emphasize", 66 | "font-emphasize-position", 67 | "font-emphasize-style", 68 | "font-smooth", 69 | "-webkit-hyphens", 70 | "-moz-hyphens", 71 | "hyphens", 72 | "line-height", 73 | "color", 74 | "text-align", 75 | "-webkit-text-align-last", 76 | "-moz-text-align-last", 77 | "-ms-text-align-last", 78 | "text-align-last", 79 | "text-emphasis", 80 | "text-emphasis-color", 81 | "text-emphasis-style", 82 | "text-emphasis-position", 83 | "text-decoration", 84 | "text-indent", 85 | "text-justify", 86 | "text-outline", 87 | "-ms-text-overflow", 88 | "text-overflow", 89 | "text-overflow-ellipsis", 90 | "text-overflow-mode", 91 | "text-shadow", 92 | "text-transform", 93 | "text-wrap", 94 | "-webkit-text-size-adjust", 95 | "-ms-text-size-adjust", 96 | "letter-spacing", 97 | "-ms-word-break", 98 | "word-break", 99 | "word-spacing", 100 | "-ms-word-wrap", 101 | "word-wrap", 102 | "-moz-tab-size", 103 | "-o-tab-size", 104 | "tab-size", 105 | "white-space", 106 | "vertical-align", 107 | "list-style", 108 | "list-style-position", 109 | "list-style-type", 110 | "list-style-image", 111 | "pointer-events", 112 | "cursor", 113 | "visibility", 114 | "zoom", 115 | "flex-direction", 116 | "flex-order", 117 | "flex-pack", 118 | "flex-align", 119 | "table-layout", 120 | "empty-cells", 121 | "caption-side", 122 | "border-spacing", 123 | "border-collapse", 124 | "content", 125 | "quotes", 126 | "counter-reset", 127 | "counter-increment", 128 | "resize", 129 | "-webkit-user-select", 130 | "-moz-user-select", 131 | "-ms-user-select", 132 | "-o-user-select", 133 | "user-select", 134 | "nav-index", 135 | "nav-up", 136 | "nav-right", 137 | "nav-down", 138 | "nav-left", 139 | "background", 140 | "background-color", 141 | "background-image", 142 | "-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient", 143 | "filter:progid:DXImageTransform.Microsoft.gradient", 144 | "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", 145 | "filter", 146 | "background-repeat", 147 | "background-attachment", 148 | "background-position", 149 | "background-position-x", 150 | "background-position-y", 151 | "-webkit-background-clip", 152 | "-moz-background-clip", 153 | "background-clip", 154 | "background-origin", 155 | "-webkit-background-size", 156 | "-moz-background-size", 157 | "-o-background-size", 158 | "background-size", 159 | "border", 160 | "border-color", 161 | "border-style", 162 | "border-width", 163 | "border-top", 164 | "border-top-color", 165 | "border-top-style", 166 | "border-top-width", 167 | "border-right", 168 | "border-right-color", 169 | "border-right-style", 170 | "border-right-width", 171 | "border-bottom", 172 | "border-bottom-color", 173 | "border-bottom-style", 174 | "border-bottom-width", 175 | "border-left", 176 | "border-left-color", 177 | "border-left-style", 178 | "border-left-width", 179 | "border-radius", 180 | "border-top-left-radius", 181 | "border-top-right-radius", 182 | "border-bottom-right-radius", 183 | "border-bottom-left-radius", 184 | "-webkit-border-image", 185 | "-moz-border-image", 186 | "-o-border-image", 187 | "border-image", 188 | "-webkit-border-image-source", 189 | "-moz-border-image-source", 190 | "-o-border-image-source", 191 | "border-image-source", 192 | "-webkit-border-image-slice", 193 | "-moz-border-image-slice", 194 | "-o-border-image-slice", 195 | "border-image-slice", 196 | "-webkit-border-image-width", 197 | "-moz-border-image-width", 198 | "-o-border-image-width", 199 | "border-image-width", 200 | "-webkit-border-image-outset", 201 | "-moz-border-image-outset", 202 | "-o-border-image-outset", 203 | "border-image-outset", 204 | "-webkit-border-image-repeat", 205 | "-moz-border-image-repeat", 206 | "-o-border-image-repeat", 207 | "border-image-repeat", 208 | "outline", 209 | "outline-width", 210 | "outline-style", 211 | "outline-color", 212 | "outline-offset", 213 | "-webkit-box-shadow", 214 | "-moz-box-shadow", 215 | "box-shadow", 216 | "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", 217 | "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", 218 | "opacity", 219 | "-ms-interpolation-mode", 220 | "-webkit-transition", 221 | "-moz-transition", 222 | "-ms-transition", 223 | "-o-transition", 224 | "transition", 225 | "-webkit-transition-delay", 226 | "-moz-transition-delay", 227 | "-ms-transition-delay", 228 | "-o-transition-delay", 229 | "transition-delay", 230 | "-webkit-transition-timing-function", 231 | "-moz-transition-timing-function", 232 | "-ms-transition-timing-function", 233 | "-o-transition-timing-function", 234 | "transition-timing-function", 235 | "-webkit-transition-duration", 236 | "-moz-transition-duration", 237 | "-ms-transition-duration", 238 | "-o-transition-duration", 239 | "transition-duration", 240 | "-webkit-transition-property", 241 | "-moz-transition-property", 242 | "-ms-transition-property", 243 | "-o-transition-property", 244 | "transition-property", 245 | "-webkit-transform", 246 | "-moz-transform", 247 | "-ms-transform", 248 | "-o-transform", 249 | "transform", 250 | "-webkit-transform-origin", 251 | "-moz-transform-origin", 252 | "-ms-transform-origin", 253 | "-o-transform-origin", 254 | "transform-origin", 255 | "-webkit-animation", 256 | "-moz-animation", 257 | "-ms-animation", 258 | "-o-animation", 259 | "animation", 260 | "-webkit-animation-name", 261 | "-moz-animation-name", 262 | "-ms-animation-name", 263 | "-o-animation-name", 264 | "animation-name", 265 | "-webkit-animation-duration", 266 | "-moz-animation-duration", 267 | "-ms-animation-duration", 268 | "-o-animation-duration", 269 | "animation-duration", 270 | "-webkit-animation-play-state", 271 | "-moz-animation-play-state", 272 | "-ms-animation-play-state", 273 | "-o-animation-play-state", 274 | "animation-play-state", 275 | "-webkit-animation-timing-function", 276 | "-moz-animation-timing-function", 277 | "-ms-animation-timing-function", 278 | "-o-animation-timing-function", 279 | "animation-timing-function", 280 | "-webkit-animation-delay", 281 | "-moz-animation-delay", 282 | "-ms-animation-delay", 283 | "-o-animation-delay", 284 | "animation-delay", 285 | "-webkit-animation-iteration-count", 286 | "-moz-animation-iteration-count", 287 | "-ms-animation-iteration-count", 288 | "-o-animation-iteration-count", 289 | "animation-iteration-count", 290 | "-webkit-animation-direction", 291 | "-moz-animation-direction", 292 | "-ms-animation-direction", 293 | "-o-animation-direction", 294 | "animation-direction" 295 | ] 296 | ] 297 | } 298 | -------------------------------------------------------------------------------- /ProgrammerProfile/staticfiles/img/titlelogo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | --------------------------------------------------------------------------------