管理者権限でログインしているかどうかをひと目で分かるようにする Redmine プラグインを作った

Redmine の管理者と一般ユーザを分けていると、よくある失敗として、
管理者権限でログインしたままでいることを忘れたままチケットを作成・更新してしまう、
ということがあります。

そうすると、チケットの更新者が自分じゃなくて管理者ユーザになってしまって悲しい思いをします。

そういった事故を減らすために管理者でログインしているかどうかをテーマでひと目で分かるようにするプラグインを作りました。

環境

Redmine 3.0.0

機能

管理者ユーザでログインしている時のみ <body> タグの class に "admin" を追加します。

この class を利用したテーマを自作することで管理者と一般ユーザの画面の見た目を切り替えることができるようになります。

利用手順

テーマを作成します。

例えば、public/themes/admin/stylesheets/application.css を以下のように作成します。

@import url(../../../stylesheets/application.css);
body.admin #top-menu { background-color: #f0908d; }
body.admin #header { background-color: #f2a0a1; }

管理画面で作成したテーマを指定します。


この例の場合は、一般ユーザでログインした場合は通常の画面

管理者でログインした場合は別の見た目になります。

これで誤ったアカウントでチケットを更新する事故をかなり防げるようになります。

まとめ
  • 管理者でログインしているかどうかを判別するために画面を切り替えるプラグインを作った
  • プラグインを作って class 属性を操作するのは簡単な割にできることが広がっていい感じ

ステータスバーの文字色を白くする

環境: iOS SDK 8.1

ナビゲーションバーの背景色を変更すると、デフォルトではステータスバーの時刻とかバッテリー残量表示の文字が見づらくなる。

背景色にあった文字色に変更する。

手順

info.plist に以下の行を追加

  • View controller-based status bar appearance
  • Boolean
  • NO

コードでステータスバーのスタイルを変更。

// Appdelegate.swift
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.BlackOpaque

MagicalRecord でシミュレータ実行時に作成された sqlite のデータベースファイルを探す

環境: iOS SDK8.1

MagicalRecord で

MagicalRecord.setupCoreDataStackWithAutoMigratingSqliteStoreNamed("database.sqlite")

のように実行した場合、シミュレータでは

~/Library/Developer/CoreSimulator/Devices/デバイスID

以下に作成される。

デバイス ID が分からないことが多いので find で探す。

$ find ~/Library/Developer/CoreSimulator/Devices/ -name "database.sqlite"

iOS で下バーでタブみたいなやつ

環境: iOS SDK 8.1

こういうやつ

f:id:suer:20150102213858p:plain

UITabBarController を使う。

let controller1 = UIViewController(nibName: nil, bundle: nil)
controller1.tabBarItem = UITabBarItem(tabBarSystemItem: .Favorites, tag: 1)
let controller2 = UIViewController(nibName: nil, bundle: nil)
controller2.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Contacts, tag: 2)
let controller3 = UIViewController(nibName: nil, bundle: nil)
controller3.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.More, tag: 3)

let tabBarController = UITabBarController(nibName: nil, bundle: nil)
tabBarController.setViewControllers([controller1, controller2, controller3], animated: false)