Refactor modals into template

This commit is contained in:
Jakob Borg committed 2014-07-14 14:14:26 +02:00
1 parent d812f559ef
commit 35b5999cba
4 files changed
+90 -131

No files matched your search

+7 -2
View File
@@ -18,7 +18,7 @@ func init() {
bs, _ = ioutil.ReadAll(gr)
Assets["angular.min.js"] = bs
bs, _ = hex.DecodeString("1f8b080000096e8800ffec3ded72db3892fffd14185d6644d9326527b3737b719ca9c4c9ec7a93382e7fcc5d95e3a9a24448e29822157ec4d6d97ef7eb064012200092b293dc6ed5ba666c0968341a8d46a3bbd140462372102f5749309b67c4391890a73bbb3f937f7857f198bc8e9319f1221f20a22c09c67916272971524a4936a7e4e0e3d1d9c9e1ebf3b38f27a7641a8474e06e00ba57614818ba942434a5c917eabbe43ca5249e42b32025699c27134a26b14f097c9dc55f6812519f8c57d019f97078b69d66ab9022ae3098d028c5eebc8c4ca0764cc934ce81a4206234bc3f3c787b74fa9675ef6e6c8c36ff4cc320cac83889afa1efe7244b723a84bea22c88725a7c5f86798afff3ef6473042d67613cf642f2e439997a610a405e34cb432f11df1168a39fc387147831c9fa7b1b1b5fbc84a4ab6802c38a6664bf68e12e623f0fa9d32febfa43727139d8630df2241c7b80669ff4813f0c4f09e702a1d360e64c732808e288384fe659b63c4ee22f814f9301b9dd20f0a314ba3e9d7a7998a5ee4d9a4cff4e3d283bf216ac83ffd93e383df96dfb2cbea21174d4d2f6208eaf025ab4555ade0fea6466491c863471faa745e9419684305089f674122f8191accb827664c132a15fde781976b3b35796ce68f6f11d14e19454a5c8232fc93883d94c00256c200c3b921251d6610a00b7f77bb54a60a75ebe581dbec131f695d2082412915c5c1a901c463850853c51bf4ce22c9ec4e1c11ce61fe4b8245382a149826b47c30d6b297a8b753a35204434d4494fe832368c148b930c98ead9ea8e81e901bd3692972f6709c8cd61348d4573852f94faaf2a16b32afce9278bfe73d27f4361dae5423f48443971e0f340ae4519c24a64a65c9ec5f9648e15e74b1f244354ddd7c9389c588848e802f488910ebdaa20c28fafa330f67c23215e9ad12448af4a52d81f504aa7b0fea3590aba681a27948ce3384c49086b074a3268a3ce6f9631609879567e1bf880fb7d00c8234004eb05646e92088e9063214b84439057be0f0b20a5290066ab2528b07e466fb2fefd50c2f6c1bb39a591ff6ebc4c257c1ff36c16e3b239c195f63e5804a0e0df05af47e9a04216e58b314d54742780c08b0e2318ca172f3c9550f21a5254c156d08a4a2c4f333651b906c2632ff140ed8427f4730e8a411e2f7081c098415b443e1b7605d280105af1755be31e62fb0d3615c26b39131bd8274f6e3cf1c25751740c8b4ec2c88ac99b00040336bc1511d50db41588de46de38a4be1d578506855145f237b6ad19b1f0aa6e684e5109bfe6bbaa2cb4584caa726bfbf3e3e858a7809710ac6c6c7ca2377d15c5d16a11e729d8161e4e1053727caf3520ba5455da2c0f4ecd4b53ac38994de7876dcb71586c53dca05089573986d85ee560bb804532f1d84679aef0ae15e1b197a6d771e2372395a004e26555d248edd97b7995a2e5f6f7b3b36330f16097828e6afc6d42f6eaf8f01d5dc993767c48788940e12d832bf85e9ba4d2840093e0349f4c40f153df19485a3f9812e7076630c8a5d20407519039833db5cae9ff474433e0c115db73fb03dc64bdd0e9cfc118ead7a07573a4da910a122ae3644d32aa86cd44206c3acf33dca99a214d76924af4bdcedcdf3c50713a67edc34a689627918d1de609b171fd76ec4daefc245e821c407f20b92017200de3d84b7c6175df5b26a56980a5d5338571cc11b8b44865da9855ea0242a7b0c8b7487f94ae60a12f80c614e52e4d25531cec12af3e385540f74c22c0310219d85e2279c08d42c74c9d405e4c90dcaefafc71fc276c9f2ef02c7564f370e0c25a7deb4de612f2c0afa3c719c365087e996c725e04fe25d9df077b14fc2c3a0dc035ebd79be20f58424714b60d32a5d9648efe1bb3873438339f5957bf22b5fb7d28a011ba83e7278707f1621947a0c790e0aeb350e3b8348c1ad34d4c64df0945174fc7da40fc08c69e02495f7b10382d58ef0afce4a536aea2ca86e23bb37d6df6dba6a12c6f9f30e37a308f59f2103baf6bf43ca3189d25f453c133bc76064305224347cf4198edd29f1d9011d9ddd9d95121035f6c6bc58fe4fe427b7560b8c9c21c607cc3c672b6f73109997be9c7eb087c86254db2159b3acb14150110c352d04a32304ecd58b053267f4104d63290ffc1cbe6eec2bb717686e4af6493f392411c46af57194dcfe20c2ccc6d83b3ae4121f332df221125de38cfdaba0627a04bdf0a98b5f37b02f6d4644e1c6a63adc6949dae433000de5ba41c7f8c018ffaa6d2b6187820a2f33aa8872fccddd5e205a85ec031c8f254d97cb1b86e6998f61f846bdd81b82102e6697415a16d24db024a0f3a6a9828f035618dfd805d58319f66f172093d1b31b3c85fc6d7701f35a9a11b565fb52ec0d9df8b9d4b378bcfa183e400a606b6fe2d5e01f3324eb3c4d91deca9e310cdf7490f0305609af5c8dd1da94a0ffd90f6ea63e1d55b504d9c5e4525c63f8e6932017d0fae9398982dd2fb71d0338e56b0441a9061c60f42f02fbefd8407d134fe06b3eda3979f7cb5c95666ac1fc0dc587b160bb16f33aa2b34299f782ba665122c3c70e34d980cecabcda12a14df7c22619fb48dd8c05e1e9c67fa9ae1dfe9865599c2e52483510104ec164639c185c5bb189900241af6ea7c65bbd1348cc19e876ecc6a11c3cb06b588c50753c5d3426a51cd039c61f3120ddc23f87bf8e652153a043419fa58eea2951752d62d32115861dad44ad5ba2459ccec9f7e476bb9549d5c5089838ba5de33ec423f0eea181bb44e9fc5a7d8f04b6d6ce02c4686ff35f81a5fadcb4fe1caaec3b405587ba99d5bbab2fea76597ae1f3bf14c5786ad3cb3eb461c2bc6febe33c704618c6922f4d8a4db7f6d986f89e5ff6f43a82981c67dca3e94df69eb3420312aa54cd0a4c33f0b990242b8d726fabe257bc200f6dedfed7db7cc336cb73e76ac71471d2e8e60813e0d3beb948f3e01439851392285f416dd46152b09c7baa7f81b384481d70d6934cbe66072915dcb884bfba061a0021bd8ca56611087d5add220ac1551dbd144e9f56c164a39cfd0bda5b10cd2304655620aeb1f7cda5fcc460466501c99065e9fe2884b42ad99539b30892f5d99e2e4dce5628d068d2c6ae34f17e674e60cf5834c3ad3317366340253ed8a128f603c1a6d1468bb2aab0b6e2d961f9785875d247520a0a3a404b8024876baeb08dcf2ec0ac345a6ea57b0bd2dc1b4212fc1aa3561c2c39d463200406e884706820f5d63edece4c6ccd6d4fb02bb8748a32898aa49db041715f9c7e9c7233765c7e3c1b446a54421368897193bc79fb37c95f439b9ed63961128c0ed3390497600bf5c86e2346bf4671a47fdfbfb7a746319a75aac0ffa82b1014143d68929d2a145396c7143c03562c902eb8444cd69232c602797d50c134388df30139d053ccd13f8152f28cf4d9af0dc1475ceca7c951f0ae1a29f732f4ccd523ed4857b40eeLine truncated
bs, _ = hex.DecodeString("1f8b080000096e8800ffec3d7f73dbb692fffb53a0bab4a41c997292bedebb384e2f71d2f7fcf2cb13dbbd9b71dd194a8424d614a912641c9de3ef7ebb00480204405171927b6fe63cad2d018bc562b158ec2e16c8784c8eb2d53a8fe78b82f84743f270ffc18fe41fe1553621cfb37c4ec2340288b4c8e349596439233ea394140b4a8edebd3d7b7ffcfcfcecddfb53328b133a0c7600ddb324211c1d23396534ff40a3809c334ab219348b196159994f2999661125f0759e7da0794a2332594367e4cdf1d91e2bd609455c493ca529c3eec2824ca17642c92c2b81a438e534bc3e3e7af9f6f425ef3ed8d919effec192382dc824cfaea1efc7a4c84b3a82bed2224e4b5a7d5f2525c3ffc577b23b8696f3249b8409b9f798ccc284015098cecb24cce57704daf14af8c08017d3c23bd8d9f910e684add3290c2b9d93c3aa45b0cca232a1be57d779237271393ce00dca3c998480e69078c01f8ea7860b80d0593cf7672514c4594afc7b8ba2589de4d98738a2f990dcec10f8d10a8388cec2322958f091e5b3bfd310cade864bdec17fef1d9dbeff65ef2cbba22974b4a1ed51965dc5b46aabb5bc1db6c92cf22c4968ee7ba755e95191273050857636cd56c048de65453bb26095d30f2fc202bbd93fa84be7b478f70a8a704a9a52e451981782c17c2680123e108e1d494929ef9001c0cded41ab12d869962fd7c72f708c9e569a824422928b4b0b92e31407aa9127eb57795664d32c395ac0fc831cd7642a3034cf71ed18b8612da52fb1cea40684882626e9395d65969162715e00534357dd09303da6d756f2cad53c07b9394e67996caef185d2e859c3625e853f5ebef41e13ef058569570ba33897e5c487cf43b51665082b91996a799195d305569caf22900c5975db26e378ea2022a74bd023563accaa8a8828bb4e932c8cac8484aca079ccae6a52f81f504aa7b0fed339035d34cb724a2659963092c0da819202dae8f35b141c18669e97dfc411e07e1d03f21410c17a01999be69223e444ca121110e45914c10260940160b15e8102f30afab1f06e470ab637e1c7539a46af262ba6e07b5716f30c97cd7b5c69afe3650c0afe55fc7ccc860db2b45c4e68aea37b0f08c2f43885a17c08935305a5a82155156c051b51c9e569c7262bb7407812e621a89de43dfdb304c5a08e17b84060cca02dd2880fbb01e94008adc4ba6d710fb1fd029b0a11b582891dec5327379b86c9b3343d8145a760e4c5e4450c82011bde9ac8ea0eda2a442fd37092d0c88dab4183c2a823f91bdfd6ac5844553f34a7a8849f8b5d55155a2c264db9b3fdf9497a6252204a085676367e6f367d9666e97a99950c6c8b1027882b39b1d75a105dea2a6d5ec6a7f6a529579ccaa6f3e34dcb71546d53c2a0d089d73986d89e9560bb8045320df94679aef16e23c29390b1eb2c8fba912a5012f1aa29e9a4f6ecb5ba4ad172fbfbd9d9099878b04b41472dfe76217b7672fc8aaed5493b3926a244a20857f1157c6f4d526d428049705a4ea7a0f869e40f15ad1fcf88ff1d3718d4526582e3342efce1815ee57bff96d2027870c5f75c6f889b6c98f8de028c21af056d9a23cd8e5491d018275b92d134ec260261d9a22c70a7ea86b4d9493ad1b726737f0941c5999c750f2ba74599a72e76d827c4c5f59b4938bd8af26c057200fd81e4825c80344cb2308fa4d57deb9894ae01d656cf0cc6b140e0da225569e356690008fdca22bf4fbc315bc3425f028d0ce58e31c51407bb246c0f4e17d0039b08088c4006b657481e0aa3d0b75327915713a4b66b3ebf9bfc01db67003c63be6a1e0e0358ab2fc3e942411e476df43863b80cc12f534dce8b38ba248787608f829f456731b8665ebb29fe8025f496c2b64166b4982ed07fe3f6900167e733efea67a4f6d083029aa23b78fefef8285baeb214f41812dc77165a1c5786d162ba8d89fc3ba1e8e299583b881fc3d81990f4a50781d382f581c44f9e1ae3aaaa5c28be31dbb766bf6b1aeaf2cd13665d0ff6312b1e62ef758d9e679aa1b3847e2a7886d7fe70a44114e8e8f908b357fbb34332260ff6f7f775c83892db5af5a3b8bfd05e1f186eb2300718df70b19cef7d5c4216217b779d82cfb0a279b1e653e798a22a0062590a464901c6a91d0b76cae52f4ec15a06f2df84c52258861ffdfd11f92bd915bce410c7e9f37541d959568085b96771d60d28645e113924a2c69b95c5a6aec109e8d3b706e6ecfc96803d355d109fba586b3065bfef102c80b70e29c71f6bc0a3bda96c5a0c2210d17b1db4c317f6ee5af102542fe0181425d3365f2c6e5b1ab6fd07e136ee40c21001f334bd4ad136526d01ad0713354c14f89ab0c6bec32e9c984f8b6cb5829ead9879e4af106bd8434d6ae986d737ad2b70fef762ff3228b273e8203f82a981adffbea8807999b022f71f0c0ff471c8e6876480810230cd06e4d327d2941e47091db4c722aaef4335f1070d9518ff38a1f914f43db84e7262ee93c1f7c38175b49225ca802c337e94807ff1f5273c4e67d95798ed08bdfcfc8b4db636635e0c73e3ec592e44cf6554376898987827a6551e2f4370e36d982cec6bcda12e145f7d22619f748dd8c25e119ce7fa9ae3dfef87559bc2d5b480510104ec165639c18525ba18db00141a0eda7ce5bbd12cc9c09e876eec6a11c3cb16b588c54733cdd3426a51cd039c65f3920d82b7f0f7f8c5a52e74086833f4b13c402b2fa1bc5b6422b0c2b6a9d5aa75458a8cdb3f5e4f6bb9569d4250898f8ba5dd33ec42df0fdb183bb48ec7e3537cf8b536b6701623c3ff1a7ccdaeb6e5a77465b761da12ac3de6e696a9acff69d965eac75e3c3395e1469eb975238e15637fdf98639230ce34197aecd2ed3f77ccb7c2f2ffb321b49440e73ee51ecaaf74e33420313aa55cd094c33f07991242bad736fabe267b9218f6de5fdd7d6f9867d86e23ecd8e08e3e5c1cc1127d1a7ed6a91e7d0286a4a06a440ae9adba4d1b561281f540f3377088126f90d0745e2cc0e4220f1c23aeed838e814a6c602b3b85411e566f940669adc8da9e26ca60e0b250ea7986ee1d8d55908e31ea125359ffe0d3fe6437223083e2ad6de0ed294e8524b49af9ad0953f8d297297e295c2ede68d8c9a24dfce9c39cde9ca1515c28673a76ce8cc760aa5d5112128c47a38d026dd77575c5ade5eaddaaf2b0aba40e04f4b594804002a94e771b41509f5d61b8c856fd0cb6b7159836e42958b5364c78b8d3490600a80df1c840f2a16fac9d9fdcd8d9cac20fb07bc8348a8aa986b44d7151917f9cbe7b1b307e3c1ecf5a542a1462836c55f073fc05cf57618fc98d875946a000f7ce4026f901fc6a95c8d3acf11f2c4bbddbdb767463953123d6077dc1d880a011efc416e930a21caeb821e01af364816d42a2f6b4111eb053cb5a868925c46f9989de02ceca1c7e654b2a7293a62237459fb33a5fe5bb4ab8e89f659830bb948f4ce11e924f9f8ce18bLine truncated
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
Assets["app.js"] = bs
@@ -63,7 +63,7 @@ func init() {
bs, _ = ioutil.ReadAll(gr)
Assets["favicon.png"] = bs
bs, _ = hex.DecodeString("1f8b080000096e8800ffec3dfb7bdb3692bfe7af40b4bdc4d933253b49bb7b8ead3bc74e5bf791e4b393ededf5ebdd0791908498241800b4ad75bd7ffbcd0cf81629c9b29d78dbfe9058245e338379e3c1dd87876f0edefdfded2b36b551387cb0fbd0f31e0c06ec4025332d2753cb360e9eb0a75bdbcfd977fc548dd84ba5278cc701d488ad96a3d42a6dd8861182d9a960076f5ebf3b3e7af9fedd9be3133696a178d2c7eef6c3905177866961843e13419fbd3782a93134938619956a5f305f0582c1e3449d091d8b808d663018fbf1e89d67ec2c14d857287d111b1c8e5be643e948b0b14a012419130c3f1c1dbc7a7df28a86ef3ff03cc00a9163218f277b3d11f7583cf17892ecf5cc2cf661f87842af7cc44885a1d07bbd93bce4c0eab0c7fc901bb3d7c34aa1e2a73dec52f060f880b1dd4858cefc29d746d8bd5e6ac7de5f7b65c1d4dac4131f5379b6d7fb6feffdbe77a0a2845b390a05740b238a185a1dbdda13c14454dac53c127bbd3329ce13a56da5eab90cec742f106740068f1e36017169250f3de3f350ec6df7b7e63a0a84f1b54cac5471a5afb96a3cb553a5e76a84323e85890b8162506cfdd432e9634f532dc67bbd313fc3c77e02841c3ec00656da500c0b22b25fd9e525cef36b98dfd730d2c693ababdd81ab550ce03a1b29658dd53c19f8c60c8aa77e24e33ebce96570203798a910d64148cfccce1240c28a0b8b8da984b1910a66ec927e3296f0200080bc91b256453bec2f5bc9c58bac6c0c487b631ec970b6c37adf8af04c58e973f65aa4a2b7c98a179b6c5f03b53799e1b1f1809be5d87571f580fea4e1bf4fbf2c468cb89ec8d8b32ad961dbfd2f4554abdb4760bd48c5ca241c04e0b20d961f451caa4df6a38ab90f7f41f28c0286dc64bd03101b293480780e1016dd3486e0c06cc8dd01ca4d30b4c4ba560f9175e64b915edda5639890eed2a2e76061cfada545cf41418591d281d08e76b18a1b78856aa21a64de615b2fea335d7943dd785f96139e282351227690a74026cf9a034863bd5879a31494822d86a2d7c4701e329c03add110100bd3282eda04d2242187b99431f0baf046a1f24f733880b59d24033fe6fc51300ea94d609db260c4fdd389468d87a3280de04f461b4f9f7db5c99e3edfc2ffb69fbca85350f340a666873dab209fd3673bb960cfcbf739219fc2eba7f9ebab265ec066713fe0a0381a7c1e8a3140bb55327a0dbdedadf235713e0fe504e98f48be584eab9cc0b9229ea72fce057b2823d49a3cb62d920036a268763e9556782433d8f41c144d4d1b9c0b47fde75b5bad3d05738ac5e1ff14d4ca322882be8978187a352a76029435feaf480492b38d885f6434fdcb577f492e9e141d64720556360135012c3d746faad25754666cf067e07db0b5967156e85a0696cca2da16fd497fa7a8cbfe0c44d1a0654660585932054a1b102a0648a873865335d2829f1ab4c3a182e65a245a419b10587060c04282413f97765aedd1f193e9b33f0f8ad70d226820533e2b57053bee0e4804c1120f9c297eb04b1892fd012f86bd5309888a66e800e0bb989f15769c9f6189fb83ea25ff1988314f4330b7e00708aa27279c8ca6b325bb812c3a411bc901699d95a11502a9a88fe18d34384bbde1ae8c267909eaad1e33da4733e6e193b7fdf4af643d99b3eebd674fc1b612efb9df83212b8ce92eb14dded95406a040bd0bb076f5f19d6149ad80d17f056241d1b0d50a5377c3ac468e491a56f0c8a953f949025b204e161c5d2809063c4d26a06ec4513c56fd589c57e84315c163b42ace4cb57b28fcab918df301f027fc2b67c47907ce510317f0b41868e30990b78af9249c2553744858f1cbf3a7e24cc3df34e9e5a83e1291495ebc779d201f5f5e56410783208c450239202bb80e4259c73c1b38d02a09d4795c479867a0ffa9d7ac079c3799a01f882a207ba8f6f22a90f6513c0228774705d7811459c46104ff786da072ce8a012211a7356808de610153959ca0c08e45a25622e734081a74dc0f0286cdc1a22a3d43d0ea645a3634f2e44a4303fae7c291a0313c76d13970411a792603e4c96b80072ad79e38956856e3363569c09737bf2661e4ea74f9a831786a0e3b05cd7c7478275431d3d42293ad049d1a8fe74073cdaf4911306c966bbb22ab8ca1fab431f0b1ebe14e68c2472a5d0d36b059da7a224aecacc9cad8471b74bb83346cd74265c9ee00c0a68868008ad419be0e9be5eaa3a5fc5a6a63c1e49d6f321587330641de79cce498c5c217c6703d7bc132aab173ae63740d32ab9a759fa9fe87d0ff584e8e62345685ba838e4b13590326f4a2006c5fd58e54ca81242264f4bf970d5bd7accdba48d4806aed4e9fd54b28d4ec0d732c5e0b1188003c8767c38262dddda25fd1d4a2c9f0dd14f315886faac94760536ed84808f08ef919e62e204c8e1578563e8416604d827e69c4599422c93370d089ca2a510603cc66bdebfeee20a9b3c252a0319c6ad8de15ac2f9a5c13552d2f4b20fac9ecfdddc861d3becef14908b2329617bd96b9aabfa83d561eb29f731c2f2669087e203068839f6b9c9bf7870d4b13476120db40e7117dfe27650fad5cfed52226f7309c4b7a4c0648d86c0429cc6276cf44e3f2129b1c60c106feea1f1d825f4773058f825bd7277ae5f8f707001b67ad93dc0d51aad5839a1d92d5a8467e4fcdad013a843c31b9b793801f8309a63fd5f0cd5d257c09887d21e3405c0032f3dd37bced654e0a7354ea1f4a2d7c9abe5f19e5b2de723bbdba5ad67d2903ace270bb3e4f2cb76995f47557bacaac7c8e9aa881ea33d164f16c7272d6a852a53e1139815941e9b9d156d16ccd8acd78b27d2e5c4c5b6dc21a099eec19024c99604cd2d20bf6e362b8b6322cd55d4558385dae892c6f3a661581463f093a593042500baeb21828e3aca3434a69069dc00fbaa1bf39622ec8f65422e206825f53c94d302b64e64608e63e42045e6af87346b25ffa323ee3a1ece28795f1cffc03cfc8499300afb456ebe2df0eece79c685f4510d435c31ff42ba610dfca7f90bb7083d96ed1669f0bd549a846cd80e61b78c7c35aa4791b133ba16ebf96a13060187878ce67e6751a8d84beba62d2c2d09baca3d1cb99a5462319731491979f8f60531535e9f583f2ef805c21f67a4d6a519b7b442c3f5469e061041a2adecc66bc01d75d8dc95d5f8b62ddf579871e8c212271141db2ad7a98adce315c2944b24885cdcf4bd9c9cad3824d5a6665ce53a9a040945d86c5de1ea031dccac7dd622fbbdca2a2dfcfc60ab8bed060801fb981e8e9a682d359bf4145a2df3178dc6f20fcee0dff2ecc3262353a78d8e8e1b5babfd44ec15409ff543465ee68122b2dd85ba123690c583173f7347763e290667db2d73ab9cf94a725188f8773de835b9af949dae99af6817a36943e4692aced36404957000045b48ed51256cd454cf4ba3d7e6b0f5f78470e24d1320295d8Line truncated
bs, _ = hex.DecodeString("1f8b080000096e8800ffec3dfb5b1b3992bfe7af50bc7309ecd1362499ec1e01df11c8cc328f241f243bb737dfdc7d72b76c2b74b73a921af032ecdf7e55a57ebbdb360692eccefc90e06ebdaa4aa57a49a5de7b78f4e6f0dddfdebe62531b85c3077b0f3defc160c00e5532d37232b56ce370933dd9de79c6bee3676ac45e2a3d613c0ea0466cb51ca55669c3368c10cc4e053b7cf3faddc9f1cbf7efde9c9cb2b10cc5661fbb3b084346dd19a68511fa5c047df6de08a6c6d04c1a6654aa7dc17c1508068f13752e742c02369ac160ecc7e3779eb1b350605fa1f4456c70386e990fa523c1c62a0590644c30fc707cf8eaf5e92b1abeffc0f3002b448e853c9eecf744dc63f1c4e349b2df33b3d887e1e309bdf21123158642eff74ef39243abc31ef3436ecc7e0f2b858a9ff5b04bc183e103c6f6226139f3a75c1b61f77ba91d7b7fee9505536b134f7c4ce5f97eefbfbdf707dea18a126ee52814d02d8c28626875fc6a5f0413516917f348ecf7cea5b84894b695aa1732b0d3fd409c03193c7ad802c4a5953cf48ccf43b1bfd3df9eeb2810c6d732b152c595bee6aaf1d44e959eab11caf80c262e048a41b1f553cba48f3d4db518eff7c6fc1c1ffb091072f8001b586943312c88c87e65575738cfaf617e5fc3481b9bd7d77b0357ab18c0753652ca1aab7932f08d19144ffd48c67d78d3cbe0406e305321ac83909e999d2580841597161b5309632315ccd815fd642ce1410000792365ad8a76d99fb693cb1759d91890f6c63c92e16c97f5fe22c27361a5cfd96b918ade162b5e6cb1030dd4de6286c7c6036e9663d7c5f503fa9386ff3efdba1831e27a2263cfaa6497edf4bf1651ad6e1f81f522152b93705800576db0fc28e2506db11f55cc7df80b2bcf2860c82dd63b8465238506102f00c2a29bc6101c980db93bc075130c2db1aed543649df952a45777e91826a4bbb4e83958d8736b69d173505061a47420b4a35dace2065ea19aa8069977d9f68bfa4c57de5037ded7e58427ca485c11bbc853b026cf9b034863bd5879a31484822d86a2d7c4701e329c03add110100bd3282eda04d2242187b99431f0baf046a1f2cf723880b5dd4a067eccf9a3601c129bc03a65c188fb67138d120f47511ac09f8c369e3c7dbec59e3cdbc6ff76365fd429a8792053b3cb9e5690cfe9b3935cb267e5fb9c904fe0f593fcf575132f60b3b81f70101c0d3e0fc518a0dd2e19bd86dece76f99a389f877282f447245f2ca7554ee05c10cfd317e7823d94114a4d1edb9695003aa2687631955678b466b0e905089a9a34b8108efacfb6b75b7b0ae6048bc3ff0988956550047d13f130f46a54ec04286bfc5f910824671b11bfcc68faa7e77f4a2e378b0eb275055a360131012c3d746faaabafa8ccd8e08fc0fba06b2de3ac90b50c349945b12dfa93fe6e5197fd1188a241ca8c40b1b2640a9436b0a81820a12e184ed5480b7e66500f870a9a6b9168056d4260c181010d090afd42da69b547c74fa6cffe38285e3788a0814cf9ac5c17ecb837a025089a78e054f1833dc290f40f5831ec9d4a60a968860600be8bf979a1c7f93996b83f285ef29f8118f33404750b7680a07a72c249693a5db217c8a213d4911c90d659196a215815f531bc910663a937dc93d1242f41b9d56346fba8c63c7cf2769efc99b42773dabdf7f409e856e23df77b30648532dd23b6c93b9bca0004a87709daae3ebe532ca91530faaf402c281ab66a61ea6e98d5c83149c30a1e39752a3f69c11688930647134a82024f9309881b711c8f553f161715fa5045b018ad8a3355ed1e0afb6a64e37c00fc09ffca1971d68133d4c0043c2b06dad804f256319f84b3648a06092b7e79fe549c6bf89b26bd1cd5472232c98bf7ae13e4e3abab2ae8a01084b14820076405d74128eb986703075a2581ba88eb08f30cf43ff49af580f32613b4035104640fd55e5e05d23e8a4700e5dea8e03a5845167118c13f5e1ba89cb3628048c4690d1a827758c054252708b01391a895c8390d82061d0f82806173d0a84acf10b43a99960d8d3cb9d2d080fe857024680c8f5d740e5c90469ecb0079f206e081c8b5a74e249ad5b84d4d1af0e5cd6f4818b93a5d3e6a749e9ac34e41321f1fdd0b55cc34b5c8642b41a7c6e339d05cf31b5204149be5daaec82a63a83e6d0c7ce27ab8179af0914a57830d7496b69e88123b6bb232f6d106ddde200ddba55059b23700b0c9231a8020758aaf4367b9faa829bf91da585079175b4cc5e18c81937711333966b1f085315ccf5eb08c6aec82eb184d834cab66dd67a2ff21f43f9693e318955521eea0e35245d68009bd2800dd57d523957220890819fdef65c3d6256bb32e1235a05a7bd3a7f51272357bc31c8bd742042200cbe1e9b0a05877b7685734a568327c37c57805e29b6ab211d8941b361202ac637e8eb10b7093630596950fae056893a05f2a7116a548f20c1c34a2b24a14c100b559efbabf3748eaacb0146874a71aba7705ed8b2ad74455cdcb12f07e327d7f3febb0a95fe7f82484b5329697bd96b9aabfa83d561eb29f731c2f26690876203068839f6b9c9bf7870d4b15476e20db40e3116dfecdb287562e7fbe88c93d74e7921e930112361b410ab398ddb3a57175854d0eb160037ff58f8fc0aea3b98247c1adeb13ad72fcfb03808db3d649eec652aad5839a1d2bab518dec9e9a590374087962726b27013b06034c7fa8e19b9b4af81210fb4ac681b80464e6bb6f58dbcb8c14e6a8d43f925af8347dbf328a65bde5767a7dbdacfb720db08ac1edfa3cb5dca655d2d74de92ab3f2396aa204aacf4493c5b3c9c959a34a95fa44e4046605a5e7465b45b2352b36fdc9f6b9703e6db5096b0478b267703065823e494b2fd88ff3e1dacab054771561e174b924b2bc6998551634da49d0c98211829a7395f94019671d1f514833e8047ed00dfded11734eb6a712113710fc864a6e8359b1666e85606e234460a5863f6724fba52fe3731eca2e7e5819ffcc3ef08c9c3409f04a6bb52efeedc07ece89f655044e5dd3fd41bb620afeadfc3b990bb798ed1669f6b9509d846ad47468be85773cac799a7731b113eaf61b190a038a8187177c665ea7d148e8eb6b262d0cbdc53a1abd9c596a349231c725f2f2f3116caaa226bd7e50fe3d902bc45e6f482d6af30511cb0f551a78e881868a37a3196fc074576332d7d7a258777dde210763f0481c45876cbbee66ab0b74578a255984c2e6e7a5ec64e569c1262db33267a9545020ca2ec3627f1fd0186ee7e36eb3975d6651d1ef676305dc5f6830c08fdc80f774db85d359bf4145a2df0958dc6fc0fdee0dff26cc3262353a78d8e8e1b5fa72a99d82aa12fe9968aeb9e349acb4606f858ea431a0c5ccfdd3dc8d89439af5c95eebe44ba63c6dc1783c9cb31edcd6cc4fd24ed7d40fd4b3a1f03192646db3014aba1c0028a27dac16b76ace63a2d7edfe5bbbfbc23b622089Line truncated
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
Assets["index.html"] = bs
@@ -73,6 +73,11 @@ func init() {
bs, _ = ioutil.ReadAll(gr)
Assets["jquery-2.0.3.min.js"] = bs
bs, _ = hex.DecodeString("1f8b080000096e8800ff7c91416eac300c86f7ef1451166f5688cdac5ae8a62731c4402493a0c48c8410776f0269caa84c171013fbf3efdf544a3f444be07d2d47ab8044070ae5c73f217ea50aa5816c2f85e98b74bfde8e0cf5b73741e07adc76f68a6ead61349cf2571503066d2780d0f1f12ed6d533f0ecb72d73811ceecf206b263c1584123f818983eaae963a48cb6fa2a7651ae28dc851508947d4a8ca089e3badebde7ddb7ee4cbe19e4d94c1c56b478d55cbbe2f76607c4bb3c2d7649ab625eb513ef7e9ac6574e715343373f0c0cb84b53c3e32d3b011e129147630134ba18021fc3d3feadc3258dd57f4c7561c8ef6817927ff71f4d3fb679cae2a0fc50b2f394c413abe000000ffff010000ffffe37f5ed168020000")
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
Assets["modal.html"] = bs
bs, _ = hex.DecodeString("1f8b080000096e8800ff74b705545cdf923ddc0d8dbbbbbbbbbbbb0577777708eec13db8437009eeee103cb813dcdde1cb6fe6cdf79ff5d69bbbd6ed3ea76aefb3ebd4adbaeb9e4865452904585c5800008020232dfee5ef7fe03f3734e4dfdf0141e309000056c45a4c4c59464c8c58d9c5d1c2dace1c009046c8f9eea9a6ba821931ddc5d535834a4a4c7187fb1586788e4f1a03a4122913a80c161e4ae9210e21898e42a361a6d60b948a20359540870b09365982b941561eee531197d8df88b185b9ace6b8ddcc7c1fd1de5a396c595ab1bcf45b6a0728bf0583faddb48081ec055ae817a77d7aa86813838f60d8c840442d60ef8e850548ea491c6ce1ad4b2023a34c7ab8e1e18231d0ac638dbe4799d275f1332091944b8c1c12002bf19b93df9f126b1f2c45b5610887f513347e974ac31acec28a5900535845ba37586bf7507a40d731969e46f9a700577b0aa7933d37a64379339362a7280654a0974eb16d59e40b65dea5269309d87fa49e9f7fca960730a367184e1e5216d845b24aa0e35c44de8001a05306793a5d10a39f79ac72015e3f2cff448122654c7ea02ca55bef1f8d5abc5c37a83e9bb0d0a50c28ec7cf3929fbe6b848f63c60aac75fc2e01a4d0b6cfb04a3cafc63f3fd75e3cb07aee59d922f4577d1718fdfaaa7e4d79369d2b1293abbd657756c5d485097820d7c92268e84e550734da430aefef54295d12036e20008d9bd9b784e176064983bbf05470d1676776aec03c5b46ba23aed7bc60c7f19e709ec78c898b570dbe1f5842416432186ce612fb3f4a7fc8894f4ec223a64d9bbd3f227feef5f258ff1a1ba0cfceebc5ba0e3b5257394a81098db4ea08e30fd24a6034830d0df8bd1380cd490585e39f638b6ee56e08f00be3516e95811a751400889181933b087d05f33bd54566811dedeeb4aa4eac758d67fdfa71f84204a717e5b0232f42aa7af0001f6fe64251488f53b4156ad707869a00e5960fcb1ec4c80c466f84801fc8e604be490c080d944606ff0ece280d662d0caa17115cfe5b822ccb408f101b27c042d0d719906230a713a41e48b317c1090e3e504a1836bc4f8e19b819640d1d7c858c5128529180598c9421ba888ca703ed2d26a2cc8d0e3e241699809c24fc3c4359864d1b525120a62c7047e686db0ead1ff2920f3543cc0ef90ef40b4549079b374658063407aed4f1e1434bf54f6c8b7b61644361f5aeedc8b6620a22b6f463ede05d01e8c30cfb93a18547a1c16725b5a0f1aec54513b4c8812824b689a4c560e512990988c5786db1d289ce7fc021230a8cd3b1318771f622b463764c348c174d64997fa79ba66bc8631d705a20b3053d079798fcfef9438baa4ac8038613252b966150c328de48b72eed27f8b2f1191f3ee2482fce2ebe937f2bb61eab03470da8056929a623f074006187f2daab937613fd3218a9cff5cac497a41b36003f80702b9e68b8872a014607641b8c44f29d98dc8e5c0d1917fa10fa3d14a59f5d25a84cc98d341cd97b50cf84e667dcb248a70c3ea56232ba4c3839d617729a8cc62035191b527d4a01ca2e92e4315e3329176c6d6103a51af23c62430aa42421e5146a4a7425597c09d115451ed936616f616fb1922f08650e0b5a15e9ed393a4a5de27eb27e4c52c96c69b7697b63d5c99589b6a9a7693e144a294b699e69868c7954862401b21f3fde5ac154fa84fb54838aea340a24771afb05c26424320b534dbe99649a449a84ec720ca95074260525b5a02a950b1fd7cd519490e08ace9778cfb5362a34f2ae9aaf3213487115bfce271f0fdd111d75ddc1985398ebee53efe3efe3ee378c7f81ec67367a62fb825312931cd311137fcb7ed036bd37bdc6596b6df0d94993fa4ceb40eb9b4a9a6a910a4c8daf905777fc8dfe3ba7c2be426981d986d2c6d866c5e6f5376365ec74e9b467ee748e21fbe79fb78893baf6c8afad2f36f703270227c9b899b8ddb838b8eab869ecc31c38990e996399fb9987ec238d563a704d209d7d9dc32603e6d48c8b49350b8a86689e82ea9af3528659c1e28d4a816ad3b2062dcb22c5862934fd24465d2e9116bd16554f512539262d26c35a95cb024195bceabce21ea91edd80f1de19e255a36891acbeb282a8821ee35ce3a21d53b28ac4ca59da229d22be616ed366e7a86bc13d5dcabac81c992499d83105d5e5854d35a3f6e9c66978db032b4af64a8e8e91c2ba756ded2ac9c57c9e01fe51df22efac673a388168ade81ccc0d4c43fa737a5586537a226d1a6d082dfbc693ba9781d5c14c5b7d53bf91709b3dd386a91f1b074dd5e50c5b1e3de77e7c99fa751b981d8a1dd30f880fa4af94af2c5002115e115d888fcb6e1ed41da17ebf514e8f765aa7ae63f6a0a87ca87ececb946ee5684fd14c214c15c1c1635d612d3060bbcc3aefb4e2bb24329a31c6187a39152ca8afa5eee99cbe4c2a2cc51e7a0cda0f6e2c0bacbcb7bed221c921254a458fa494261fe24ec3197c4babd54cd4ac6d497a34b9b4b92c15e4158c148c1544ebf6e8aef4637a327e077bf778d9b85dba3a7c597a55027183aa608e608b4192200d2841385618540877d0401fb0af23988869ce905c6f01134cf44dcc238c1f86035e1fe3c5159b919ebd8af2ccbb55ddcbdfcb13c46022212e36d8211d3f3a372a151d8b2987e92939263524f15b4a41c247224d422e4d8b5ebbe18f648c4e0cf10f014c223c0c1f720f97f2c7b90db988bdb35dd8bd0b4636bdef0d67ab2e4dfbe513d33509867ddaceb4847844045bc89f9168fde5fbf23577866d9efba0a5e48e88d7a4c361bac3d86bfd27f3b744505a687de8ac78daa07ea4a94c8d0c86cc1e989248d3b67bbde14dd09ff2948494221ab6f2d9f25fd6a18d4f8df3a214c6517574fa6c02545d4c03ec45cc62ede3d6bf2fd4d10a856713e5a95db52d3ad2e33ee4efa563c8b32842b4e11a6cea372da5ccf3c65526510eeefe64fe71982018bb1d7bf5e7b0e0f074b7ecf6f8087febe3b8b045ac0e5bacd15b6b53f4d4ef6bdfb9ef3e8db727b6975eb99a909c8835c7db7288da5c50c957a9eb36b26ab83c18166d1355d9e96298d245b41bb2c3b03bdfb068a8b6594b233598bd3799d88dda55a2584f3addd2f6d37cde987c083def2a792879f5dcf680f65cdf386ebfd5ca30d1365899a9d9d6afde9fbc29bc69e9d03cebd630d6753642b28e378b6f642dabef92adb591fa5d7a527c12841b9f79d075e2d3729eb33ab2b6d4b3651f300f8c051f82122444c7ef0c187d54b6ad16b11f325edfa91a983e2d3c69efb10c300c103f97be4e9c960a932a19e98f77ffcdb7b0c455c695c2d91f9b34fc73cf79c4f17dfb5ecc07adf25899ada8ed09c44dc273bd3bf24474990bcfbfe21de557714cf59ef7d03ca313a553b0b8be18d95ccc69ed23efb3751c389f433045c02094f5e97b17f39091d9306e29379d3885919dc593e7e97f233a1c761d1d8915c1abe926d8def8672ea7Line truncated
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
+18 -2
View File
@@ -337,7 +337,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) {
$scope.restart = function () {
restarting = true;
$scope.restartingHeader = "Restarting"
$scope.restartingTitle = "Restarting"
$scope.restartingBody = "Syncthing is restarting."
$('#restarting').modal({backdrop: 'static', keyboard: false});
$http.post(urlbase + '/restart');
@@ -360,7 +360,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) {
};
$scope.upgrade = function () {
$scope.restartingHeader = "Upgrading"
$scope.restartingTitle = "Upgrading"
$scope.restartingBody = "Syncthing is upgrading."
$('#restarting').modal({backdrop: 'static', keyboard: false});
$http.post(urlbase + '/upgrade').success(function () {
@@ -886,3 +886,19 @@ syncthing.directive('validNodeid', function() {
}
};
});
syncthing.directive('modal', function () {
return {
restrict: 'E',
templateUrl: 'modal.html',
replace: true,
transclude: true,
scope: {
title: '@',
status: '@',
icon: '@',
close: '@',
large: '@',
},
}
});
+48 -127
View File
@@ -352,86 +352,31 @@
<!-- Network error modal -->
<div id="networkError" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header alert alert-danger">
<h4 class="modal-title">
<span class="glyphicon glyphicon-exclamation-sign"></span>
Connection Error
</h4>
</div>
<div class="modal-body">
<p>
Syncthing seems to be down, or there is a problem with your Internet connection.
Retrying&hellip;
</p>
</div>
</div>
</div>
</div>
<modal id="networkError" status="danger" icon="exclamation-sign" title="Connection Error">
<p>
Syncthing seems to be down, or there is a problem with your Internet connection.
Retrying&hellip;
</p>
</modal>
<!-- Restarting modal -->
<div id="restarting" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header alert alert-info">
<h4 class="modal-title">
<span class="glyphicon glyphicon-refresh"></span>
{{restartingHeader}}
</h4>
</div>
<div class="modal-body">
<p>
{{restartingBody}} Please hold&hellip;
</p>
</div>
</div>
</div>
</div>
<modal id="restarting" icon="refresh" title="{{restartingTitle}}" status="info">
<p>{{restartingBody}} Please hold&hellip;</p>
</modal>
<!-- Shutdown modal -->
<div id="shutdown" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header alert alert-success">
<h4 class="modal-title">
<span class="glyphicon glyphicon-off"></span>
Shutdown Complete
</h4>
</div>
<div class="modal-body">
<p>
Syncthing has been shut down.
</p>
</div>
</div>
</div>
</div>
<modal id="shutdown" icon="off" status="success" title="Shutdown Complete">
<p>Syncthing has been shut down.</p>
</modal>
<!-- ID modal -->
<div id="idqr" class="modal fade">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">
<span class="glyphicon glyphicon-qrcode"></span>
Node Identification &mdash; {{nodeName(thisNode())}}
</h4>
</div>
<div class="modal-body">
<div class="well well-sm text-monospace text-center">{{myID}}</div>
<img ng-if="myID" class="center-block img-thumbnail" src="qr/{{myID}}"/>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><span class="glyphicon glyphicon-remove"></span>&emsp;Close</button>
</div>
</div>
</div>
</div>
<modal id="idqr" large="yes" status="info" close="yes" icon="qrcode" title="Node Identification &mdash; {{nodeName(thisNode())}}">
<div class="well well-sm text-monospace text-center">{{myID}}</div>
<img ng-if="myID" class="center-block img-thumbnail" src="qr/{{myID}}"/>
</modal>
<!-- Node editor modal -->
@@ -654,43 +599,25 @@
<!-- Needed files modal -->
<div id="needed" class="modal fade">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header alert alert-info">
<h4 class="modal-title">Out of Sync Items</h4>
</div>
<div class="modal-body">
<table class="table table-striped table-condensed">
<tr ng-repeat="f in needed" ng-init="a = needAction(f)">
<td class="small-data"><span class="glyphicon glyphicon-{{needIcons[a]}}"></span> {{needActions[a]}}</td>
<td title="{{f.Name}}">{{f.Name | basename}}</td>
<td class="text-right small-data"><span ng-if="f.Size > 0">{{f.Size | binary}}B</span></td>
</tr>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><span class="glyphicon glyphicon-remove"></span>&emsp;Close</button>
</div>
</div>
</div>
</div>
<modal id="needed" large="yes" status="info" icon="cloud-download" close="yes" title="Out of Sync Items">
<table class="table table-striped table-condensed">
<tr ng-repeat="f in needed" ng-init="a = needAction(f)">
<td class="small-data"><span class="glyphicon glyphicon-{{needIcons[a]}}"></span> {{needActions[a]}}</td>
<td title="{{f.Name}}">{{f.Name | basename}}</td>
<td class="text-right small-data"><span ng-if="f.Size > 0">{{f.Size | binary}}B</span></td>
</tr>
</table>
</modal>
<!-- About modal -->
<div id="about" class="modal fade">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header alert alert-info">
<h4 class="modal-title">About</h4>
</div>
<div class="modal-body">
<h1>Syncthing <small>{{version}}</small></h1>
<hr/>
<modal id="about" large="yes" close="yes" status="info" title="About">
<h1 class="text-center"><img src="st-logo-128.png" style="vertical-align: -16px" width="64" height="64"/> Syncthing<br/><small>{{version}}</small></h1>
<hr/>
<p>Copyright &copy; 2014 <b>Jakob Borg</b> and the following <b>Contributors</b>:</p>
<div class="row">
<div class="col-md-6">
<p>Copyright &copy; 2014 <b>Jakob Borg</b> and the following <b>Contributors</b>:</p>
<div class="row">
<div class="col-md-6">
<ul>
<li>Aaron Bieber</li>
<li>Andrew Dunham</li>
@@ -699,7 +626,7 @@
<li>Brandon Philips</li>
</ul>
</div>
<div class="col-md-6">
<div class="col-md-6">
<ul>
<li>James Patterson</li>
<li>Jens Diemer</li>
@@ -708,29 +635,23 @@
<li>Veeti Paananen</li>
</ul>
</div>
</div>
<hr/>
<p>Syncthing includes the following software or portions thereof:
<ul>
<li><a href="http://golang.org/">The Go Programming Languange</a>, Copyright &copy; 2012 The Go Authors.</li>
<li><a href="https://bitbucket.org/kardianos/osext">kardianos/osext</a>, Copyright &copy; 2012 Daniel Theophanes.</li>
<li><a href="https://code.google.com/p/snappy-go/">snappy-go</a>, Copyright &copy; 2011 The Snappy-Go Authors.</li>
<li><a href="https://github.com/golang/groupcache">groupcache/lru</a>, Copyright &copy; 2013 Google Inc.</li>
<li><a href="https://github.com/juju/ratelimit">juju/ratelimit</a>, Copyright &copy; 2014 Canonical Ltd.</li>
<li><a href="https://github.com/syndtr/goleveldb">syndtr/goleveldb</a>, Copyright &copy; 2012, Suryandaru Triandana</li>
<li><a href="https://github.com/vitrun/qart">vitrun/qart</a>, Copyright &copy; The Go Authors.</li>
<li><a href="https://angularjs.org/">AngularJS</a>, Copyright &copy; 2010-2014 Google, Inc.</li>
<li><a href="http://getbootstrap.com/">Bootstrap</a>, Copyright &copy; 2011-2014 Twitter, Inc.</li>
</ul>
</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><span class="glyphicon glyphicon-remove"></span>&emsp;Close</button>
</div>
</div>
</div>
</div>
<hr/>
<p>Syncthing includes the following software or portions thereof:
<ul>
<li><a href="http://golang.org/">The Go Programming Languange</a>, Copyright &copy; 2012 The Go Authors.</li>
<li><a href="https://bitbucket.org/kardianos/osext">kardianos/osext</a>, Copyright &copy; 2012 Daniel Theophanes.</li>
<li><a href="https://code.google.com/p/snappy-go/">snappy-go</a>, Copyright &copy; 2011 The Snappy-Go Authors.</li>
<li><a href="https://github.com/golang/groupcache">groupcache/lru</a>, Copyright &copy; 2013 Google Inc.</li>
<li><a href="https://github.com/juju/ratelimit">juju/ratelimit</a>, Copyright &copy; 2014 Canonical Ltd.</li>
<li><a href="https://github.com/syndtr/goleveldb">syndtr/goleveldb</a>, Copyright &copy; 2012, Suryandaru Triandana</li>
<li><a href="https://github.com/vitrun/qart">vitrun/qart</a>, Copyright &copy; The Go Authors.</li>
<li><a href="https://angularjs.org/">AngularJS</a>, Copyright &copy; 2010-2014 Google, Inc.</li>
<li><a href="http://getbootstrap.com/">Bootstrap</a>, Copyright &copy; 2011-2014 Twitter, Inc.</li>
</ul>
</p>
</modal>
<script src="angular.min.js"></script>
+17
View File
@@ -0,0 +1,17 @@
<div class="modal fade">
<div class="modal-dialog" ng-class="{'modal-lg': large}">
<div class="modal-content">
<div class="modal-header alert alert-{{status}}">
<h4 class="modal-title">
<span ng-if="icon" class="glyphicon glyphicon-{{icon}}"></span>
{{title}}
</h4>
</div>
<div class="modal-body" ng-transclude>
</div>
<div ng-if="close" class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><span class="glyphicon glyphicon-remove"></span>&emsp;Close</button>
</div>
</div>
</div>
</div>