diff --git a/app/assets/images/pages/base/background.jpg b/app/assets/images/pages/base/background.jpg new file mode 100644 index 000000000..c924faf89 Binary files /dev/null and b/app/assets/images/pages/base/background.jpg differ diff --git a/app/assets/images/pages/base/background_texture.png b/app/assets/images/pages/base/background_texture.png deleted file mode 100644 index 6521dea8b..000000000 Binary files a/app/assets/images/pages/base/background_texture.png and /dev/null differ diff --git a/app/assets/images/pages/base/logo.png b/app/assets/images/pages/base/logo.png index 0972de488..e7a97eb3c 100644 Binary files a/app/assets/images/pages/base/logo.png and b/app/assets/images/pages/base/logo.png differ diff --git a/app/assets/images/pages/base/nav_background.png b/app/assets/images/pages/base/nav_background.png new file mode 100644 index 000000000..d9df28f57 Binary files /dev/null and b/app/assets/images/pages/base/nav_background.png differ diff --git a/app/assets/images/pages/base/play_button.png b/app/assets/images/pages/base/play_button.png new file mode 100644 index 000000000..7d4c74966 Binary files /dev/null and b/app/assets/images/pages/base/play_button.png differ diff --git a/app/assets/images/pages/base/repeat-tile.png b/app/assets/images/pages/base/repeat-tile.png deleted file mode 100644 index 16186dbee..000000000 Binary files a/app/assets/images/pages/base/repeat-tile.png and /dev/null differ diff --git a/app/assets/images/pages/base/sky_repeater.png b/app/assets/images/pages/base/sky_repeater.png deleted file mode 100644 index 824fb83f8..000000000 Binary files a/app/assets/images/pages/base/sky_repeater.png and /dev/null differ diff --git a/app/assets/images/pages/home/app_store_badge.svg b/app/assets/images/pages/home/app_store_badge.svg new file mode 100644 index 000000000..0fe477c56 --- /dev/null +++ b/app/assets/images/pages/home/app_store_badge.svg @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" id="US_UK_Download_on_the" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" + x="0px" y="0px" width="135px" height="40px" viewBox="0 0 135 40" enable-background="new 0 0 135 40" xml:space="preserve"> +<g> + <path fill="#A6A6A6" d="M130.197,40H4.729C2.122,40,0,37.872,0,35.267V4.726C0,2.12,2.122,0,4.729,0h125.468 + C132.803,0,135,2.12,135,4.726v30.541C135,37.872,132.803,40,130.197,40L130.197,40z"/> + <path d="M134.032,35.268c0,2.116-1.714,3.83-3.834,3.83H4.729c-2.119,0-3.839-1.714-3.839-3.83V4.725 + c0-2.115,1.72-3.835,3.839-3.835h125.468c2.121,0,3.834,1.72,3.834,3.835L134.032,35.268L134.032,35.268z"/> + <g> + <g> + <path fill="#FFFFFF" d="M30.128,19.784c-0.029-3.223,2.639-4.791,2.761-4.864c-1.511-2.203-3.853-2.504-4.676-2.528 + c-1.967-0.207-3.875,1.177-4.877,1.177c-1.022,0-2.565-1.157-4.228-1.123c-2.14,0.033-4.142,1.272-5.24,3.196 + c-2.266,3.923-0.576,9.688,1.595,12.859c1.086,1.553,2.355,3.287,4.016,3.226c1.625-0.067,2.232-1.036,4.193-1.036 + c1.943,0,2.513,1.036,4.207,0.997c1.744-0.028,2.842-1.56,3.89-3.127c1.255-1.78,1.759-3.533,1.779-3.623 + C33.507,24.924,30.161,23.647,30.128,19.784z"/> + <path fill="#FFFFFF" d="M26.928,10.306c0.874-1.093,1.472-2.58,1.306-4.089c-1.265,0.056-2.847,0.875-3.758,1.944 + c-0.806,0.942-1.526,2.486-1.34,3.938C24.557,12.205,26.016,11.382,26.928,10.306z"/> + </g> + </g> + <g> + <path fill="#FFFFFF" d="M53.645,31.504h-2.271l-1.244-3.909h-4.324l-1.185,3.909h-2.211l4.284-13.308h2.646L53.645,31.504z + M49.755,25.955L48.63,22.48c-0.119-0.355-0.342-1.191-0.671-2.507h-0.04c-0.131,0.566-0.342,1.402-0.632,2.507l-1.105,3.475 + H49.755z"/> + <path fill="#FFFFFF" d="M64.662,26.588c0,1.632-0.441,2.922-1.323,3.869c-0.79,0.843-1.771,1.264-2.942,1.264 + c-1.264,0-2.172-0.454-2.725-1.362h-0.04v5.055h-2.132V25.067c0-1.026-0.027-2.079-0.079-3.159h1.875l0.119,1.521h0.04 + c0.711-1.146,1.79-1.718,3.238-1.718c1.132,0,2.077,0.447,2.833,1.342C64.284,23.949,64.662,25.127,64.662,26.588z M62.49,26.666 + c0-0.934-0.21-1.704-0.632-2.31c-0.461-0.632-1.08-0.948-1.856-0.948c-0.526,0-1.004,0.176-1.431,0.523 + c-0.428,0.35-0.708,0.807-0.839,1.373c-0.066,0.264-0.099,0.48-0.099,0.65v1.6c0,0.698,0.214,1.287,0.642,1.768 + s0.984,0.721,1.668,0.721c0.803,0,1.428-0.31,1.875-0.928C62.266,28.496,62.49,27.68,62.49,26.666z"/> + <path fill="#FFFFFF" d="M75.699,26.588c0,1.632-0.441,2.922-1.324,3.869c-0.789,0.843-1.77,1.264-2.941,1.264 + c-1.264,0-2.172-0.454-2.724-1.362H68.67v5.055h-2.132V25.067c0-1.026-0.027-2.079-0.079-3.159h1.875l0.119,1.521h0.04 + c0.71-1.146,1.789-1.718,3.238-1.718c1.131,0,2.076,0.447,2.834,1.342C75.32,23.949,75.699,25.127,75.699,26.588z M73.527,26.666 + c0-0.934-0.211-1.704-0.633-2.31c-0.461-0.632-1.078-0.948-1.855-0.948c-0.527,0-1.004,0.176-1.432,0.523 + c-0.428,0.35-0.707,0.807-0.838,1.373c-0.065,0.264-0.099,0.48-0.099,0.65v1.6c0,0.698,0.214,1.287,0.64,1.768 + c0.428,0.48,0.984,0.721,1.67,0.721c0.803,0,1.428-0.31,1.875-0.928C73.303,28.496,73.527,27.68,73.527,26.666z"/> + <path fill="#FFFFFF" d="M88.039,27.772c0,1.132-0.393,2.053-1.182,2.764c-0.867,0.777-2.074,1.165-3.625,1.165 + c-1.432,0-2.58-0.276-3.449-0.829l0.494-1.777c0.936,0.566,1.963,0.85,3.082,0.85c0.803,0,1.428-0.182,1.877-0.544 + c0.447-0.362,0.67-0.848,0.67-1.454c0-0.54-0.184-0.995-0.553-1.364c-0.367-0.369-0.98-0.712-1.836-1.029 + c-2.33-0.869-3.494-2.142-3.494-3.816c0-1.094,0.408-1.991,1.225-2.689c0.814-0.699,1.9-1.048,3.258-1.048 + c1.211,0,2.217,0.211,3.02,0.632l-0.533,1.738c-0.75-0.408-1.598-0.612-2.547-0.612c-0.75,0-1.336,0.185-1.756,0.553 + c-0.355,0.329-0.533,0.73-0.533,1.205c0,0.526,0.203,0.961,0.611,1.303c0.355,0.316,1,0.658,1.936,1.027 + c1.145,0.461,1.986,1,2.527,1.618C87.77,26.081,88.039,26.852,88.039,27.772z"/> + <path fill="#FFFFFF" d="M95.088,23.508h-2.35v4.659c0,1.185,0.414,1.777,1.244,1.777c0.381,0,0.697-0.033,0.947-0.099l0.059,1.619 + c-0.42,0.157-0.973,0.236-1.658,0.236c-0.842,0-1.5-0.257-1.975-0.77c-0.473-0.514-0.711-1.376-0.711-2.587v-4.837h-1.4v-1.6h1.4 + v-1.757l2.094-0.632v2.389h2.35V23.508z"/> + <path fill="#FFFFFF" d="M105.691,26.627c0,1.475-0.422,2.686-1.264,3.633c-0.883,0.975-2.055,1.461-3.516,1.461 + c-1.408,0-2.529-0.467-3.365-1.401s-1.254-2.113-1.254-3.534c0-1.487,0.43-2.705,1.293-3.652c0.861-0.948,2.023-1.422,3.484-1.422 + c1.408,0,2.541,0.467,3.396,1.402C105.283,24.021,105.691,25.192,105.691,26.627z M103.479,26.696 + c0-0.885-0.189-1.644-0.572-2.277c-0.447-0.766-1.086-1.148-1.914-1.148c-0.857,0-1.508,0.383-1.955,1.148 + c-0.383,0.634-0.572,1.405-0.572,2.317c0,0.885,0.189,1.644,0.572,2.276c0.461,0.766,1.105,1.148,1.936,1.148 + c0.814,0,1.453-0.39,1.914-1.168C103.281,28.347,103.479,27.58,103.479,26.696z"/> + <path fill="#FFFFFF" d="M112.621,23.783c-0.211-0.039-0.436-0.059-0.672-0.059c-0.75,0-1.33,0.283-1.738,0.85 + c-0.355,0.5-0.533,1.132-0.533,1.895v5.035h-2.131l0.02-6.574c0-1.106-0.027-2.113-0.08-3.021h1.857l0.078,1.836h0.059 + c0.225-0.631,0.58-1.139,1.066-1.52c0.475-0.343,0.988-0.514,1.541-0.514c0.197,0,0.375,0.014,0.533,0.039V23.783z"/> + <path fill="#FFFFFF" d="M122.156,26.252c0,0.382-0.025,0.704-0.078,0.967h-6.396c0.025,0.948,0.334,1.673,0.928,2.173 + c0.539,0.447,1.236,0.671,2.092,0.671c0.947,0,1.811-0.151,2.588-0.454l0.334,1.48c-0.908,0.396-1.98,0.593-3.217,0.593 + c-1.488,0-2.656-0.438-3.506-1.313c-0.848-0.875-1.273-2.05-1.273-3.524c0-1.447,0.395-2.652,1.186-3.613 + c0.828-1.026,1.947-1.539,3.355-1.539c1.383,0,2.43,0.513,3.141,1.539C121.873,24.047,122.156,25.055,122.156,26.252z + M120.123,25.699c0.014-0.632-0.125-1.178-0.414-1.639c-0.369-0.593-0.936-0.889-1.699-0.889c-0.697,0-1.264,0.289-1.697,0.869 + c-0.355,0.461-0.566,1.014-0.631,1.658H120.123z"/> + </g> + <g> + <g> + <path fill="#FFFFFF" d="M49.05,10.009c0,1.177-0.353,2.063-1.058,2.658c-0.653,0.549-1.581,0.824-2.783,0.824 + c-0.596,0-1.106-0.026-1.533-0.078V6.982c0.557-0.09,1.157-0.136,1.805-0.136c1.145,0,2.008,0.249,2.59,0.747 + C48.723,8.156,49.05,8.961,49.05,10.009z M47.945,10.038c0-0.763-0.202-1.348-0.606-1.756c-0.404-0.407-0.994-0.611-1.771-0.611 + c-0.33,0-0.611,0.022-0.844,0.068v4.889c0.129,0.02,0.365,0.029,0.708,0.029c0.802,0,1.421-0.223,1.857-0.669 + S47.945,10.892,47.945,10.038z"/> + <path fill="#FFFFFF" d="M54.909,11.037c0,0.725-0.207,1.319-0.621,1.785c-0.434,0.479-1.009,0.718-1.727,0.718 + c-0.692,0-1.243-0.229-1.654-0.689c-0.41-0.459-0.615-1.038-0.615-1.736c0-0.73,0.211-1.329,0.635-1.794s0.994-0.698,1.712-0.698 + c0.692,0,1.248,0.229,1.669,0.688C54.708,9.757,54.909,10.333,54.909,11.037z M53.822,11.071c0-0.435-0.094-0.808-0.281-1.119 + c-0.22-0.376-0.533-0.564-0.94-0.564c-0.421,0-0.741,0.188-0.961,0.564c-0.188,0.311-0.281,0.69-0.281,1.138 + c0,0.435,0.094,0.808,0.281,1.119c0.227,0.376,0.543,0.564,0.951,0.564c0.4,0,0.714-0.191,0.94-0.574 + C53.725,11.882,53.822,11.506,53.822,11.071z"/> + <path fill="#FFFFFF" d="M62.765,8.719l-1.475,4.714h-0.96l-0.611-2.047c-0.155-0.511-0.281-1.019-0.379-1.523h-0.019 + c-0.091,0.518-0.217,1.025-0.379,1.523l-0.649,2.047h-0.971l-1.387-4.714h1.077l0.533,2.241c0.129,0.53,0.235,1.035,0.32,1.513 + h0.019c0.078-0.394,0.207-0.896,0.389-1.503l0.669-2.25h0.854l0.641,2.202c0.155,0.537,0.281,1.054,0.378,1.552h0.029 + c0.071-0.485,0.178-1.002,0.32-1.552l0.572-2.202H62.765z"/> + <path fill="#FFFFFF" d="M68.198,13.433H67.15v-2.7c0-0.832-0.316-1.248-0.95-1.248c-0.311,0-0.562,0.114-0.757,0.343 + c-0.193,0.229-0.291,0.499-0.291,0.808v2.796h-1.048v-3.366c0-0.414-0.013-0.863-0.038-1.349h0.921l0.049,0.737h0.029 + c0.122-0.229,0.304-0.418,0.543-0.569c0.284-0.176,0.602-0.265,0.95-0.265c0.44,0,0.806,0.142,1.097,0.427 + c0.362,0.349,0.543,0.87,0.543,1.562V13.433z"/> + <path fill="#FFFFFF" d="M71.088,13.433h-1.047V6.556h1.047V13.433z"/> + <path fill="#FFFFFF" d="M77.258,11.037c0,0.725-0.207,1.319-0.621,1.785c-0.434,0.479-1.01,0.718-1.727,0.718 + c-0.693,0-1.244-0.229-1.654-0.689c-0.41-0.459-0.615-1.038-0.615-1.736c0-0.73,0.211-1.329,0.635-1.794s0.994-0.698,1.711-0.698 + c0.693,0,1.248,0.229,1.67,0.688C77.057,9.757,77.258,10.333,77.258,11.037z M76.17,11.071c0-0.435-0.094-0.808-0.281-1.119 + c-0.219-0.376-0.533-0.564-0.939-0.564c-0.422,0-0.742,0.188-0.961,0.564c-0.188,0.311-0.281,0.69-0.281,1.138 + c0,0.435,0.094,0.808,0.281,1.119c0.227,0.376,0.543,0.564,0.951,0.564c0.4,0,0.713-0.191,0.939-0.574 + C76.074,11.882,76.17,11.506,76.17,11.071z"/> + <path fill="#FFFFFF" d="M82.33,13.433h-0.941l-0.078-0.543h-0.029c-0.322,0.433-0.781,0.65-1.377,0.65 + c-0.445,0-0.805-0.143-1.076-0.427c-0.246-0.258-0.369-0.579-0.369-0.96c0-0.576,0.24-1.015,0.723-1.319 + c0.482-0.304,1.16-0.453,2.033-0.446V10.3c0-0.621-0.326-0.931-0.979-0.931c-0.465,0-0.875,0.117-1.229,0.349l-0.213-0.688 + c0.438-0.271,0.979-0.407,1.617-0.407c1.232,0,1.85,0.65,1.85,1.95v1.736C82.262,12.78,82.285,13.155,82.33,13.433z + M81.242,11.813v-0.727c-1.156-0.02-1.734,0.297-1.734,0.95c0,0.246,0.066,0.43,0.201,0.553c0.135,0.123,0.307,0.184,0.512,0.184 + c0.23,0,0.445-0.073,0.641-0.218c0.197-0.146,0.318-0.331,0.363-0.558C81.236,11.946,81.242,11.884,81.242,11.813z"/> + <path fill="#FFFFFF" d="M88.285,13.433h-0.93l-0.049-0.757h-0.029c-0.297,0.576-0.803,0.864-1.514,0.864 + c-0.568,0-1.041-0.223-1.416-0.669s-0.562-1.025-0.562-1.736c0-0.763,0.203-1.381,0.611-1.853c0.395-0.44,0.879-0.66,1.455-0.66 + c0.633,0,1.076,0.213,1.328,0.64h0.02V6.556h1.049v5.607C88.248,12.622,88.26,13.045,88.285,13.433z M87.199,11.445v-0.786 + c0-0.136-0.01-0.246-0.029-0.33c-0.059-0.252-0.186-0.464-0.379-0.635c-0.195-0.171-0.43-0.257-0.701-0.257 + c-0.391,0-0.697,0.155-0.922,0.466c-0.223,0.311-0.336,0.708-0.336,1.193c0,0.466,0.107,0.844,0.322,1.135 + c0.227,0.31,0.533,0.465,0.916,0.465c0.344,0,0.619-0.129,0.828-0.388C87.1,12.069,87.199,11.781,87.199,11.445z"/> + <path fill="#FFFFFF" d="M97.248,11.037c0,0.725-0.207,1.319-0.621,1.785c-0.434,0.479-1.008,0.718-1.727,0.718 + c-0.691,0-1.242-0.229-1.654-0.689c-0.41-0.459-0.615-1.038-0.615-1.736c0-0.73,0.211-1.329,0.635-1.794s0.994-0.698,1.713-0.698 + c0.691,0,1.248,0.229,1.668,0.688C97.047,9.757,97.248,10.333,97.248,11.037z M96.162,11.071c0-0.435-0.094-0.808-0.281-1.119 + c-0.221-0.376-0.533-0.564-0.941-0.564c-0.42,0-0.74,0.188-0.961,0.564c-0.188,0.311-0.281,0.69-0.281,1.138 + c0,0.435,0.094,0.808,0.281,1.119c0.227,0.376,0.543,0.564,0.951,0.564c0.4,0,0.715-0.191,0.941-0.574 + C96.064,11.882,96.162,11.506,96.162,11.071z"/> + <path fill="#FFFFFF" d="M102.883,13.433h-1.047v-2.7c0-0.832-0.316-1.248-0.951-1.248c-0.311,0-0.562,0.114-0.756,0.343 + s-0.291,0.499-0.291,0.808v2.796h-1.049v-3.366c0-0.414-0.012-0.863-0.037-1.349h0.92l0.049,0.737h0.029 + c0.123-0.229,0.305-0.418,0.543-0.569c0.285-0.176,0.602-0.265,0.951-0.265c0.439,0,0.805,0.142,1.096,0.427 + c0.363,0.349,0.543,0.87,0.543,1.562V13.433z"/> + <path fill="#FFFFFF" d="M109.936,9.504h-1.154v2.29c0,0.582,0.205,0.873,0.611,0.873c0.188,0,0.344-0.016,0.467-0.049 + l0.027,0.795c-0.207,0.078-0.479,0.117-0.814,0.117c-0.414,0-0.736-0.126-0.969-0.378c-0.234-0.252-0.35-0.676-0.35-1.271V9.504 + h-0.689V8.719h0.689V7.855l1.027-0.31v1.173h1.154V9.504z"/> + <path fill="#FFFFFF" d="M115.484,13.433h-1.049v-2.68c0-0.845-0.316-1.268-0.949-1.268c-0.486,0-0.818,0.245-1,0.735 + c-0.031,0.103-0.049,0.229-0.049,0.377v2.835h-1.047V6.556h1.047v2.841h0.02c0.33-0.517,0.803-0.775,1.416-0.775 + c0.434,0,0.793,0.142,1.078,0.427c0.355,0.355,0.533,0.883,0.533,1.581V13.433z"/> + <path fill="#FFFFFF" d="M121.207,10.853c0,0.188-0.014,0.346-0.039,0.475h-3.143c0.014,0.466,0.164,0.821,0.455,1.067 + c0.266,0.22,0.609,0.33,1.029,0.33c0.465,0,0.889-0.074,1.271-0.223l0.164,0.728c-0.447,0.194-0.973,0.291-1.582,0.291 + c-0.73,0-1.305-0.215-1.721-0.645c-0.418-0.43-0.625-1.007-0.625-1.731c0-0.711,0.193-1.303,0.582-1.775 + c0.406-0.504,0.955-0.756,1.648-0.756c0.678,0,1.193,0.252,1.541,0.756C121.068,9.77,121.207,10.265,121.207,10.853z + M120.207,10.582c0.008-0.311-0.061-0.579-0.203-0.805c-0.182-0.291-0.459-0.437-0.834-0.437c-0.342,0-0.621,0.142-0.834,0.427 + c-0.174,0.227-0.277,0.498-0.311,0.815H120.207z"/> + </g> + </g> +</g> +</svg> diff --git a/app/assets/images/pages/home/campaign.jpg b/app/assets/images/pages/home/campaign.jpg deleted file mode 100755 index df135c9a4..000000000 Binary files a/app/assets/images/pages/home/campaign.jpg and /dev/null differ diff --git a/app/assets/images/pages/home/campaign_notext.jpg b/app/assets/images/pages/home/campaign_notext.jpg deleted file mode 100644 index fa7d3c37f..000000000 Binary files a/app/assets/images/pages/home/campaign_notext.jpg and /dev/null differ diff --git a/app/assets/images/pages/home/front_screenshot_01.png b/app/assets/images/pages/home/front_screenshot_01.png deleted file mode 100644 index 86bdfd01e..000000000 Binary files a/app/assets/images/pages/home/front_screenshot_01.png and /dev/null differ diff --git a/app/assets/images/pages/home/language_background_small.png b/app/assets/images/pages/home/language_background_small.png deleted file mode 100644 index 32063a954..000000000 Binary files a/app/assets/images/pages/home/language_background_small.png and /dev/null differ diff --git a/app/assets/images/pages/home/language_beta_sticker.png b/app/assets/images/pages/home/language_beta_sticker.png deleted file mode 100644 index fb24c3d12..000000000 Binary files a/app/assets/images/pages/home/language_beta_sticker.png and /dev/null differ diff --git a/app/assets/images/pages/home/language_js.png b/app/assets/images/pages/home/language_js.png deleted file mode 100644 index 9da73cf33..000000000 Binary files a/app/assets/images/pages/home/language_js.png and /dev/null differ diff --git a/app/assets/images/pages/home/language_python.png b/app/assets/images/pages/home/language_python.png deleted file mode 100644 index 71f23d4ad..000000000 Binary files a/app/assets/images/pages/home/language_python.png and /dev/null differ diff --git a/app/assets/images/pages/home/multiplayer.jpg b/app/assets/images/pages/home/multiplayer.jpg deleted file mode 100755 index 38590f3fa..000000000 Binary files a/app/assets/images/pages/home/multiplayer.jpg and /dev/null differ diff --git a/app/assets/images/pages/home/play_button.png b/app/assets/images/pages/home/play_button.png new file mode 100644 index 000000000..7d4c74966 Binary files /dev/null and b/app/assets/images/pages/home/play_button.png differ diff --git a/app/assets/images/pages/home/play_img.png b/app/assets/images/pages/home/play_img.png deleted file mode 100644 index ffdad8dca..000000000 Binary files a/app/assets/images/pages/home/play_img.png and /dev/null differ diff --git a/app/assets/images/pages/home/video_border.png b/app/assets/images/pages/home/video_border.png deleted file mode 100644 index b07b2f2eb..000000000 Binary files a/app/assets/images/pages/home/video_border.png and /dev/null differ diff --git a/app/assets/images/pages/home/wizard.png b/app/assets/images/pages/home/wizard.png deleted file mode 100644 index f31990f6a..000000000 Binary files a/app/assets/images/pages/home/wizard.png and /dev/null differ diff --git a/app/assets/images/pages/home/multiplayer_notext.jpg b/app/assets/images/pages/play/ladder/multiplayer_notext.jpg similarity index 100% rename from app/assets/images/pages/home/multiplayer_notext.jpg rename to app/assets/images/pages/play/ladder/multiplayer_notext.jpg diff --git a/app/assets/main.html b/app/assets/main.html index 24b1c18f2..2b468e27f 100644 --- a/app/assets/main.html +++ b/app/assets/main.html @@ -43,8 +43,6 @@ <body class="nano clearfix"> <div id="fb-root"></div> - <header class="header-container" id="header-container"></header> - <div id="page-container" class="nano-content"></div> <div id="modal-wrapper" class="modal-content"></div> diff --git a/app/locale/en.coffee b/app/locale/en.coffee index d18e02d86..92615b86b 100644 --- a/app/locale/en.coffee +++ b/app/locale/en.coffee @@ -10,6 +10,7 @@ for_beginners: "For Beginners" multiplayer: "Multiplayer" # Not currently shown on home page for_developers: "For Developers" # Not currently shown on home page. + or_ipad: "Or download for iPad" nav: play: "Levels" # The top nav bar entry where players choose which levels to play diff --git a/app/models/User.coffee b/app/models/User.coffee index 526c0c752..880503d97 100644 --- a/app/models/User.coffee +++ b/app/models/User.coffee @@ -108,14 +108,4 @@ module.exports = class User extends CocoModel #application.tracker.identify branchingGroup: @branchingGroup unless me.isAdmin() # paused A/B test @branchingGroup - getCastButtonTextGroup: -> - # Group 0 is original behavior - unless @castButtonTextGroup? - if me.isAdmin() - @castButtonTextGroup = 0 - else - @castButtonTextGroup = me.get('testGroupNumber') % 7 - application.tracker.identify castButtonTextGroup: @castButtonTextGroup - @castButtonTextGroup - tiersByLevel = [-1, 0, 0.05, 0.14, 0.18, 0.32, 0.41, 0.5, 0.64, 0.82, 0.91, 1.04, 1.22, 1.35, 1.48, 1.65, 1.78, 1.96, 2.1, 2.24, 2.38, 2.55, 2.69, 2.86, 3.03, 3.16, 3.29, 3.42, 3.58, 3.74, 3.89, 4.04, 4.19, 4.32, 4.47, 4.64, 4.79, 4.96] diff --git a/app/styles/bootstrap/_variables.scss b/app/styles/bootstrap/_variables.scss index edb181e32..e2b5af123 100644 --- a/app/styles/bootstrap/_variables.scss +++ b/app/styles/bootstrap/_variables.scss @@ -44,7 +44,7 @@ $brand-info: $blueDark !default; // Scaffolding // ------------------------- -$body-bg: #2f261d; +$body-bg: rgb(70,58,44); $text-color: $gray !default; // Links diff --git a/app/styles/base.sass b/app/styles/common/common.sass similarity index 79% rename from app/styles/base.sass rename to app/styles/common/common.sass index 451e9bdca..9c70cd67f 100644 --- a/app/styles/base.sass +++ b/app/styles/common/common.sass @@ -1,9 +1,6 @@ @import "app/styles/bootstrap/variables" @import "app/styles/mixins" -html - background-color: #2f261d - body position: absolute !important @@ -14,89 +11,9 @@ body h1, h2, h3, h4, h5, h6 font-variant: small-caps -.main-content-area - box-shadow: 0px 0px 10px - position: relative - width: 1024px - margin: 56px auto 0 - min-height: 600px - padding: 14px 12px 5px 12px - +box-sizing(border-box) - +clearfix() - -#outer-content-wrapper - background: #B4B4B4 - -#outer-content-wrapper.show-background - background: #8cc63f url(/images/pages/base/repeat-tile.png) top center - - #intermediate-content-wrapper - background: url(/images/pages/base/sky_repeater.png) repeat-x - - #inner-content-wrapper - background: url(/images/pages/base/background_texture.png) top center no-repeat - -#front-summary-points-left - width: 250px - margin: 0px 20px 10px 15px - -#front-summary-points-left p.lead - margin-bottom: 5px - -#front-screenshot - width: 710px - -.content - width: 1024px - margin: 0 auto - -.footer - border-top: 1px solid black - background-color: #2f261d - p - margin: 0 - padding-top: 10px - padding-bottom: 10px - text-align: center - - .mixpanel-badge, .firebase-badge - width: 100px - margin: 10px 10px 0px - -.footer-link-text a - font-family: 'Open Sans Condensed', cursive - font-variant: small-caps - font-weight: normal - font-size: 25px - letter-spacing: 1px - color: #ffffff - cursor: pointer - margin: 0px 10px - &:hover - color: $white - a cursor: pointer -.share-buttons, .partner-badges - padding-bottom: 10px - text-align: center - @include opacity(0.75) - - &.fade-in - @include opacity(0) - - &:hover, &:active - @include opacity(1) - @include transition(opacity .10s linear) - - .github-star-button - margin-left: 20px - - &>div - display: inline-block - vertical-align: top - .error left: 8px diff --git a/app/styles/common/site-chrome.sass b/app/styles/common/site-chrome.sass new file mode 100644 index 000000000..f1c7166ea --- /dev/null +++ b/app/styles/common/site-chrome.sass @@ -0,0 +1,222 @@ +@import "app/styles/bootstrap/variables" +@import "app/styles/mixins" + +.site-chrome + background-color: white + &.show-background + background: url(/images/pages/base/background.jpg) top center no-repeat + background-color: rgb(150,202,68) + padding-top: 185px + max-width: 1920px + margin: 0 auto + + //- Nav + + #site-nav + position: absolute + background: url(/images/pages/base/nav_background.png) top center no-repeat + left: 0 + top: 56px + right: 0 + height: 144px + text-align: center + min-width: 1024px + z-index: 1 + + #nav-logo + position: absolute + margin-right: auto + margin-left: auto + left: 0 + right: 0 + top: -45px + + #site-nav-links + position: absolute + bottom: 21px + left: 0 + right: 0 + + a + color: rgb(158,135,119) + &:hover + color: $white + + a, button, select + font-size: 18px + text-transform: uppercase + font-family: Open Sans Condensed + margin: 0 7px + + button, select + position: relative + top: -3px + height: 32px + color: #444 + + .signup-button + background: red + color: white + + .login-button + background: white + color: black + + .language-dropdown + width: auto + display: inline-block + + #site-nav-smooth-edge + position: absolute + left: 0 + right: 0 + bottom: 0 + height: 5px + + + //- Account menu + + .dropdown + .dropdown-menu + left: auto + width: 280px + padding: 0px + border-radius: 0px + font-family: Open Sans Condensed + font-variant: small-caps + + > .user-dropdown-header + position: relative + background: #E4CF8C + height: 160px + padding: 10px + text-align: center + color: black + border-bottom: #32281e 1px solid + > a:hover + background-color: transparent + img + border: #e3be7a 8px solid + height: 98px // Includes the border + &:hover + box-shadow: 0 0 20px #e3be7a + > h3 + margin-top: 10px + text-shadow: 2px 2px 3px white + color: #31281E + .user-level + position: absolute + top: 73px + right: 86px + color: gold + text-shadow: 1px 1px black, -1px -1px 0 black, 1px -1px 0 black, -1px 1px 0 black + + .user-dropdown-body + color: black + padding: 15px + letter-spacing: 1px + font: 15px 'Helvetica Neue', Helvetica, Arial, sans-serif + +clearfix() + + .user-dropdown-footer + padding: 10px + margin-left: 0px + font-size: 14px + +clearfix() + + .btn-flat + border: #ddd 1px solid + border-radius: 0px + margin: 0px + + + //- Content + + #site-content-area + background: rgb(240,229,199) + margin: 0 auto -20px + width: 1024px + border: 5px solid rgb(110,88,41) + padding: 20px 12px + + + //- Footer + + #site-footer + width: 100% + height: 130px + position: relative + overflow: hidden + + // Recycling the nav bar background as a rotated image + #footer-background + transform: rotate(180deg) + margin: 0 auto + display: block + + #footer-links, #footer-credits + position: absolute + left: 0 + right: 0 + text-align: center + + #footer-links + top: 20px + height: 45px + padding: 11px + + a + color: rgb(158,135,119) + font-size: 18px + text-transform: uppercase + font-family: Open Sans Condensed + margin: 0 7px + + &:hover + color: $white + + .share-buttons + display: inline-block + position: relative + top: 3px + margin-left: 20px + + .share-buttons, .partner-badges + padding-bottom: 10px + text-align: center + @include opacity(0.75) + + &.fade-in + @include opacity(0) + + &:hover, &:active + @include opacity(1) + @include transition(opacity .10s linear) + + .github-star-button + margin-left: 20px + + &>div + display: inline-block + vertical-align: top + + #footer-credits + top: 79px + height: 50px + color: rgb(158,135,119) + font-size: 12px + + > * + margin: 0 15px + width: 186px + display: inline-block + + #footer-logo + width: 160px + + & > span + position: relative + top: 8px + + a + color: rgb(238,227,131) \ No newline at end of file diff --git a/app/styles/common/top_nav.sass b/app/styles/common/top_nav.sass deleted file mode 100644 index 5457e9cf0..000000000 --- a/app/styles/common/top_nav.sass +++ /dev/null @@ -1,234 +0,0 @@ -@import "app/styles/bootstrap/variables" -@import "app/styles/mixins" - -// This is still very blocky. Browser reflows? Investigate why. -.open > .dropdown-menu - animation-name: fadeAnimation - animation-duration: .7s - animation-iteration-count: 1 - animation-timing-function: ease - animation-fill-mode: forwards - -webkit-animation-name: fadeAnimation - -webkit-animation-duration: .7s - -webkit-animation-iteration-count: 1 - -webkit-animation-timing-function: ease - -webkit-animation-fill-mode: backwards - -moz-animation-name: fadeAnimation - -moz-animation-duration: .7s - -moz-animation-iteration-count: 1 - -moz-animation-timing-function: ease - -moz-animation-fill-mode: forwards - -@keyframes fadeAnimation - from - opacity: 0 - top: 120% - to - opacity: 1 - top: 100% - -@-webkit-keyframes fadeAnimation - from - opacity: 0 - top: 120% - to - opacity: 1 - top: 100% - -a.disabled - color: #5b5855 - text-decoration: none - cursor: default - -#top-nav - a.navbar-brand - padding: 4px 20px 0px 20px - margin-left: -20px - - .navbar-nav - float: right - - .navbuttontext, .fancy-select .trigger - font-size: 20px - font-weight: 400 - letter-spacing: 1px - - .navbuttontext-account - display: inline-block - padding: 0 5px 0 0 - margin: 0 5px 0 0 - height: 18px - - .account-settings-image - width: 18px - height: 18px - margin-right: 5px - - .glyphicon-user - font-size: 16px - margin-right: 5px - - .dropdown - .dropdown-menu - left: auto - width: 280px - padding: 0px - border-radius: 0px - font-family: Open Sans Condensed - font-variant: small-caps - - > .user-dropdown-header - position: relative - background: #E4CF8C - height: 160px - padding: 10px - text-align: center - color: black - border-bottom: #32281e 1px solid - > a:hover - background-color: transparent - img - border: #e3be7a 8px solid - height: 98px // Includes the border - &:hover - box-shadow: 0 0 20px #e3be7a - > h3 - margin-top: 10px - text-shadow: 2px 2px 3px white - color: #31281E - .user-level - position: absolute - top: 73px - right: 86px - color: gold - text-shadow: 1px 1px black, -1px -1px 0 black, 1px -1px 0 black, -1px 1px 0 black - - .user-dropdown-body - color: black - padding: 15px - letter-spacing: 1px - font: 15px 'Helvetica Neue', Helvetica, Arial, sans-serif - +clearfix() - - .user-dropdown-footer - padding: 10px - margin-left: 0px - font-size: 14px - +clearfix() - - .btn-flat - border: #ddd 1px solid - border-radius: 0px - margin: 0px - - .nav.navbar-link-text > li > a - font-weight: normal - font-size: 25px - letter-spacing: 2px - color: $white - &:hover - color: #f8e413 - - .navbar-link-text > li > a:hover - background: darken($body-bg, 3%) - - .btn, .btn-group, .fancy-select - margin-top: 13px - - .nav-tabs > .active > a, .nav-tabs > .active > a:hover, .nav-tabs > .active > a:focus - background-color: #eee - - .nav-tabs > li - cursor: pointer - - font-size: 25px - a:not(.btn) - line-height: 25px - - .btn - font-size: 20px - padding: 4px 12px - - .btn, .fancy-select - float: right - margin-left: 10px - line-height: 20px - - select - opacity: 0 - - .fancy-select - .trigger - padding: 5px 25px 3px 10px - width: auto - &:after - top: 13px - max-width: 140px - - div.fancy-select - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) - text-transform: none - - div.trigger - background-color: #9d8f5a - background-image: linear-gradient(to bottom, #a4955e, #948754) - background-repeat: repeat-x - border: 1px solid #cccccc - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25) - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05) - color: white - font-variant: small-caps - &:after - border-top-color: white - &.open - background-color: #8B7F51 - color: #ebebeb - &:after - border-top-color: #ebebeb - ul.options - max-height: 415px - background-color: #9d8f5a - right: 0 - left: auto - overflow-x: hidden - &.open - top: 36px - li - color: #ebebeb - padding: 8px 20px - - .navbar-toggle - display: none - -@media only screen and (max-width: 768px) - #top-nav - display: inline - button.navbar-toggle - background: #483a2d - border: 2px solid #2f261d - display: inline-block - - span.icon-bar - background: #F9E612 - - a.navbar-brand - padding: 4px 20px 0px 20px - margin-left: 0 - - .navbar-nav - float: none - margin: 0 0 20px 0 - overflow: visible - - .dropdown-menu - background-color: white - position: absolute - - .btn, .fancy-select - margin-bottom: 10px - - .btn, .fancy-select - float: none - - .fancy-select .options - right: auto diff --git a/app/styles/home.sass b/app/styles/home.sass index 7584a4eab..6e63b47d8 100644 --- a/app/styles/home.sass +++ b/app/styles/home.sass @@ -3,87 +3,56 @@ #home-view - h1 + #spacer + height: 750px + + #play-button, #or-ipad, #apple-store-button, #slogan, .alert text-align: center - margin-top: 0 - - .game-mode-wrapper - position: relative - margin-bottom: 60px - - img - display: block - margin: 0 auto - @include transition(box-shadow .50s ease-in-out) - border-radius: 11px - - text-shadow: 2px 2px 5px black - - h3 - color: $yellow - position: absolute - top: 10px - left: 40px - font-size: 70px - margin-top: 0 - - h4 - color: #e8d9c5 - position: absolute - top: 75px - left: 140px - font-size: 30px - margin-top: 0 - - .play-text - position: absolute - right: 45px - bottom: -25px - color: $yellow - font-size: 90px - font-family: Open Sans Condensed - font-variant: small-caps - @include transition(color .25s ease-in-out) - - &:hover div, &.hovered div - color: lighten($yellow, 20%) - &:hover img, &.hovered img - filter: brightness(1.2) - -webkit-filter: brightness(1.2) - box-shadow: 0 0 15px black - - .code-language-logo - background-color: transparent - background-repeat: no-repeat - position: absolute - right: 35px - top: 15px - width: 50px - height: 50px - - &.inverted - filter: invert(100%) - -webkit-filter: invert(100%) + text-transform: uppercase + font-weight: bold + position: absolute + margin-right: auto + margin-left: auto + left: 0 + right: 0 + font-weight: bold -@media only screen and (max-width: 768px) - #home-view - #site-slogan - font-size: 30px - margin-bottom: 30px - .game-mode-wrapper - width: 100% - img - width: 100% - .play-text - position: absolute - right: 15px - bottom: -15px - color: $yellow - font-size: 50px - font-family: Open Sans Condensed - font-variant: small-caps - @include transition(color .10s linear) - - h1 + #play-button text-align: center - margin-top: 0 + padding-top: 170px + font-size: 50px + color: rgb(255,253,149) + text-shadow: 0 0 6px black,0 0 6px black,0 0 6px black,0 0 6px black, 0 0 6px black,0 0 6px black,0 0 6px black,0 0 6px black, 0 0 6px black,0 0 6px black,0 0 6px black,0 0 6px black, 0 0 6px black,0 0 6px black,0 0 6px black,0 0 6px black, 0 0 6px black,0 0 6px black,0 0 6px black,0 0 6px black + top: 308px + width: 218px + height: 219px + background-image: url(/images/pages/home/play_button.png) + background-position: 0 219px + + &:hover + background-position: 0 0 + color: rgb(230,180,75) + text-decoration: none + + #or-ipad + top: 540px + color: rgb(119,101,84) + font-size: 17px + max-width: 211px + + #apple-store-button + top: 593px + height: 63px + + #slogan + top: 681px + height: 132px + width: 276px + padding: 15px + font-size: 28px + line-height: 32px + color: rgb(50,40,31) + + .alert + top: 213px + border: 5px solid darkred \ No newline at end of file diff --git a/app/styles/play/level/tome/spell_palette_entry.sass b/app/styles/play/level/tome/spell_palette_entry.sass index fdda33886..62216d996 100644 --- a/app/styles/play/level/tome/spell_palette_entry.sass +++ b/app/styles/play/level/tome/spell_palette_entry.sass @@ -55,6 +55,23 @@ body:not(.dialogue-view-active) // Only those popovers which are our direct children (spell documentation) max-width: 600px + // Jiggle animation + // TODO: consolidate with problem_alert.sass jiggle + +keyframes(jiggle) + 0% + transform: rotate(0deg) + 25% + transform: rotate(1deg) + 50% + transform: rotate(0deg) + 75% + transform: rotate(-1deg) + 100% + transform: rotate(0deg) + + &.jiggling + @include animation(jiggle .3s infinite) + &.pinned left: auto !important top: 50px !important diff --git a/app/styles/user/user_home.sass b/app/styles/user/user_home.sass index 955294d69..8e80ca8fc 100644 --- a/app/styles/user/user_home.sass +++ b/app/styles/user/user_home.sass @@ -2,8 +2,6 @@ @import "app/styles/bootstrap/variables" #user-home - margin-top: 20px - .left-column +make-sm-column(4) diff --git a/app/templates/base.jade b/app/templates/base.jade index 9bf6b1350..ac6b2360c 100644 --- a/app/templates/base.jade +++ b/app/templates/base.jade @@ -1,81 +1,67 @@ -body - #fb-root - block header - .nav.navbar.navbar-fixed-top#top-nav - .content.clearfix - .navbar-header - button.navbar-toggle(type="button" data-toggle="collapse" data-target=".navbar-nav.collapse") - span.sr-only Toggle navigation - span.icon-bar - span.icon-bar - span.icon-bar +#site-nav + img#nav-logo(src="/images/pages/base/logo.png", title="CodeCombat - Learn how to code by playing a game", alt="CodeCombat") + div#site-nav-links + a(href="/") + span.glyphicon.glyphicon-home + a(href="/about", data-i18n="nav.about") + a(href='/play/ladder', data-i18n="home.multiplayer") + a(href='/community', data-i18n="nav.community") + a(href='http://blog.codecombat.com/', data-i18n="nav.blog") + a(href='http://discourse.codecombat.com/', data-i18n="nav.forum") - a.navbar-brand(href='/') - img(src="/images/pages/base/logo.png", title="CodeCombat - Learn how to code by playing a game", alt="CodeCombat") - - ul(class='navbar-link-text').nav.navbar-nav.navbar-collapse.collapse - if me.get('anonymous') === false - li.dropdown - button.btn.btn-primary.navbuttontext.header-font.dropdown-toggle(href="#", data-toggle="dropdown") - if me.get('photoURL') - img.account-settings-image(src=me.getPhotoURL(18), alt="") - else - i.glyphicon.glyphicon-user - .navbuttontext-account(data-i18n="nav.account" href="/account") Account - span.caret - ul.dropdown-menu(role="menu") - li.user-dropdown-header - span.user-level= me.level() - a(href="/user/#{me.getSlugOrID()}") - img.img-circle(src="#{me.getPhotoURL()}" alt="") - h3=me.displayName() - li.user-dropdown-body - .col-xs-4.text-center - a(href="/user/#{me.getSlugOrID()}" data-i18n="nav.profile") Profile - .col-xs-4.text-center - a(href="/user/#{me.getSlugOrID()}/stats" data-i18n="nav.stats") Stats - .col-xs-4.text-center - a.disabled(data-i18n="nav.code") Code - li.user-dropdown-footer - .pull-left - a.btn.btn-default.btn-flat(href="/account" data-i18n="nav.account") Account - .pull-right - button#logout-button.btn.btn-default.btn-flat(data-i18n="login.log_out") Log Out + if me.get('anonymous') === false + span.dropdown + button.btn.btn-sm.header-font.dropdown-toggle(href="#", data-toggle="dropdown") + if me.get('photoURL') + img.account-settings-image(src=me.getPhotoURL(18), alt="") else - li - button.btn.btn-primary.navbuttontext.header-font.auth-button - span(data-i18n="login.log_in") Log In - span.spr.spl / - span(data-i18n="login.sign_up") Create Account - li - select.language-dropdown + i.glyphicon.glyphicon-user + span.spl.spr(data-i18n="nav.account" href="/account") Account + span.caret + ul.dropdown-menu(role="menu") + li.user-dropdown-header + span.user-level= me.level() + a(href="/user/#{me.getSlugOrID()}") + img.img-circle(src="#{me.getPhotoURL()}" alt="") + h3=me.displayName() + li.user-dropdown-body + .col-xs-4.text-center + a(href="/user/#{me.getSlugOrID()}" data-i18n="nav.profile") Profile + .col-xs-4.text-center + a(href="/user/#{me.getSlugOrID()}/stats" data-i18n="nav.stats") Stats + .col-xs-4.text-center + a.disabled(data-i18n="nav.code") Code + li.user-dropdown-footer + .pull-left + a.btn.btn-default.btn-flat(href="/account" data-i18n="nav.account") Account + .pull-right + button#logout-button.btn.btn-default.btn-flat(data-i18n="login.log_out") Log Out - block outer_content - #outer-content-wrapper(class=showBackground ? 'show-background' : '') - #intermediate-content-wrapper - #inner-content-wrapper - .main-content-area - block content - p If this is showing, you dun goofed - .achievement-corner + else + button.btn.btn-sm.btn-primary.header-font.signup-button(data-i18n="login.sign_up") + button.btn.btn-sm.btn-default.header-font.login-button(data-i18n="login.log_in") + select.language-dropdown.form-control + + +block outer_content + #site-content-area + block content + p If this is showing, you dun goofed + .achievement-corner + + +block footer + #site-footer + img#footer-background(src="/images/pages/base/nav_background.png") + + #footer-links + a(href='/contribute', tabindex=-1, data-i18n="nav.contribute") Contribute + a(href='/legal', tabindex=-1, data-i18n="nav.legal") Legal + a(title='Contact', tabindex=-1, data-toggle="coco-modal", data-target="modal/ContactModal", data-i18n="nav.contact") Contact + a(href='/teachers', data-i18n="nav.teachers") Teachers + if me.isAdmin() + a(href='/admin', data-i18n="nav.admin") Admin - block footer - .footer.clearfix - .content - p.footer-link-text - a(href='/', tabindex=-1, data-i18n="nav.home") Home - a(href='/play/ladder', tabindex=-1, data-i18n="home.multiplayer") Multiplayer - a(href='/community', tabindex=-1, data-i18n="nav.community") Community - a(href='/contribute', tabindex=-1, data-i18n="nav.contribute") Contribute - a(href='/legal', tabindex=-1, data-i18n="nav.legal") Legal - a(href='/about', tabindex=-1, data-i18n="nav.about") About - a(title='Contact', tabindex=-1, data-toggle="coco-modal", data-target="modal/ContactModal", data-i18n="nav.contact") Contact - a(href='http://blog.codecombat.com/', data-i18n="nav.blog") Blog - a(href='http://discourse.codecombat.com/', data-i18n="nav.forum") Forum - a(href='/teachers', data-i18n="nav.teachers") Teachers - if me.isAdmin() - a(href='/admin', data-i18n="nav.admin") Admin - if usesSocialMedia .share-buttons if !isIE @@ -84,9 +70,18 @@ body if !isIE a.twitter-follow-button(href="https://twitter.com/CodeCombat", data-show-count="true", data-show-screen-name="false", data-dnt="true", data-align="right", data-i18n="nav.twitter_follow") Follow iframe.github-star-button(src="http://ghbtns.com/github-btn.html?user=codecombat&repo=codecombat&type=watch&count=true", allowtransparency="true", frameborder="0", scrolling="0", width="110", height="20") - - .partner-badges - a.mixpanel-badge(href="https://mixpanel.com/f/partner") - img(src="//cdn.mxpnl.com/site_media/images/partner/badge_light.png", alt="Mobile Analytics") - a.firebase-bade(href="https://www.firebase.com/") - img(src="/images/pages/base/firebase.png", alt="Powered by Firebase") + + #footer-credits + a.mixpanel-badge(href="https://mixpanel.com/f/partner") + img(src="//cdn.mxpnl.com/site_media/images/partner/badge_light.png", alt="Mobile Analytics") + span + span © All Rights Reserved + br + span CodeCombat 2014 + img#footer-logo(src="/images/pages/base/logo.png", alt="CodeCombat") + span + span Site Design by + br + a(href="http://www.fullyillustrated.com/") Fully Illustrated + a.firebase-bade(href="https://www.firebase.com/") + img(src="/images/pages/base/firebase.png", alt="Powered by Firebase") diff --git a/app/templates/home.jade b/app/templates/home.jade index 119032578..d28401a6a 100644 --- a/app/templates/home.jade +++ b/app/templates/home.jade @@ -1,12 +1,19 @@ extends /templates/base -block content +block outer_content + #spacer + + a#play-button(href="/play", data-i18n="common.play") - h1#site-slogan(data-i18n="home.slogan") Learn to Code by Playing a Game + //#or-ipad(data-i18n="home.or_ipad") + + //img(src="/images/pages/home/app_store_badge.svg")#apple-store-button + + #slogan(data-i18n="home.slogan") .alert.alert-danger.lt-ie9 strong(data-i18n="home.no_ie") CodeCombat does not run in Internet Explorer 8 or older. Sorry! - + if isMobile .alert.alert-danger.mobile strong(data-i18n="home.no_mobile") CodeCombat wasn't designed for mobile devices and may not work! @@ -15,12 +22,4 @@ block content strong(data-i18n="home.old_browser") Uh oh, your browser is too old to run CodeCombat. Sorry! br span(data-i18n="home.old_browser_suffix") You can try anyway, but it probably won't work. - - a#beginner-campaign(href="/play") - div.game-mode-wrapper - img(src="/images/pages/home/play_img.png").img-rounded - h3(data-i18n="home.campaign") Campaign - h4(data-i18n="home.for_beginners") For Beginners - .play-text(data-i18n="home.play") Play - - .clearfix + \ No newline at end of file diff --git a/app/templates/play/ladder_home.jade b/app/templates/play/ladder_home.jade index a496919b8..4a12d7683 100644 --- a/app/templates/play/ladder_home.jade +++ b/app/templates/play/ladder_home.jade @@ -13,7 +13,7 @@ block content if level.image img.level-image(src="#{level.image}", alt="#{level.name}").img-rounded else - img.level-image(src="/images/pages/home/multiplayer_notext.jpg", alt="#{level.name}").img-rounded + img.level-image(src="/images/pages/play/ladder/multiplayer_notext.jpg", alt="#{level.name}").img-rounded //h3= level.name + (level.disabled ? " (Coming soon!)" : "") .overlay-text.level-difficulty span(data-i18n="play.level_difficulty") Difficulty: diff --git a/app/templates/play/level/tome/cast_button.jade b/app/templates/play/level/tome/cast_button.jade index b63e0db13..77886e0df 100644 --- a/app/templates/play/level/tome/cast_button.jade +++ b/app/templates/play/level/tome/cast_button.jade @@ -1,11 +1,7 @@ button.btn.btn-lg.btn-illustrated.cast-button(title=castVerbose) span(data-i18n="play_level.tome_run_button_ran") Ran -button.btn.btn-lg.btn-illustrated.submit-button(title=castRealTimeVerbose) - if testSubmitText != null && testSubmitText.length > 0 - span= testSubmitText - else - span(data-i18n="play_level.tome_submit_button") Submit +button.btn.btn-lg.btn-illustrated.submit-button(title=castRealTimeVerbose, data-i18n="play_level.tome_submit_button") Submit button.btn.btn-lg.btn-illustrated.done-button.secret span(data-i18n="play_level.done") Done diff --git a/app/views/HomeView.coffee b/app/views/HomeView.coffee index 7bc31c09e..e0997b7c8 100644 --- a/app/views/HomeView.coffee +++ b/app/views/HomeView.coffee @@ -11,7 +11,7 @@ module.exports = class HomeView extends RootView template: template events: - 'click #beginner-campaign': 'onClickBeginnerCampaign' + 'click #play-button': 'onClickBeginnerCampaign' constructor: -> super() diff --git a/app/views/admin/BaseView.coffee b/app/views/admin/BaseView.coffee index ca58690c0..d70ca3a29 100644 --- a/app/views/admin/BaseView.coffee +++ b/app/views/admin/BaseView.coffee @@ -4,3 +4,4 @@ template = require 'templates/base' module.exports = class BaseView extends RootView id: 'base-view' template: template + usesSocialMedia: true diff --git a/app/views/kinds/RootView.coffee b/app/views/kinds/RootView.coffee index 48f24b938..4e69f0146 100644 --- a/app/views/kinds/RootView.coffee +++ b/app/views/kinds/RootView.coffee @@ -25,7 +25,8 @@ module.exports = class RootView extends CocoView 'click #logout-button': 'logoutAccount' 'change .language-dropdown': 'onLanguageChanged' 'click .toggle-fullscreen': 'toggleFullscreen' - 'click .auth-button': 'onClickAuthButton' + 'click .signup-button': 'onClickSignupButton' + 'click .login-button': 'onClickLoginButton' 'click a': 'onClickAnchor' 'click button': 'toggleModal' 'click li': 'toggleModal' @@ -54,11 +55,16 @@ module.exports = class RootView extends CocoView subview = new WizardSettingsModal {} @openModalView subview - onClickAuthButton: -> + onClickSignupButton: -> AuthModal = require 'views/modal/AuthModal' - window.tracker?.trackEvent 'Homepage', Action: 'Auth Modal' if @id is 'home-view' - @openModalView new AuthModal {} - + window.tracker?.trackEvent 'Homepage', Action: 'Signup Modal' if @id is 'home-view' + @openModalView new AuthModal {mode: 'signup'} + + onClickLoginButton: -> + AuthModal = require 'views/modal/AuthModal' + window.tracker?.trackEvent 'Homepage', Action: 'Login Modal' if @id is 'home-view' + @openModalView new AuthModal {mode: 'login'} + onClickAnchor: (e) -> return if @destroyed anchorText = e?.currentTarget?.text @@ -84,11 +90,15 @@ module.exports = class RootView extends CocoView getRenderData: -> c = super() - c.showBackground = @showBackground c.usesSocialMedia = @usesSocialMedia c afterRender: -> + if @$el.find('#site-nav').length # hack... + @$el.addClass('site-chrome') + if @showBackground + @$el.addClass('show-background') + super(arguments...) @chooseTab(location.hash.replace('#', '')) if location.hash @buildLanguages() @@ -110,12 +120,8 @@ module.exports = class RootView extends CocoView buildLanguages: -> $select = @$el.find('.language-dropdown').empty() - if $select.hasClass('fancified') - $select.parent().find('.options, .trigger').remove() - $select.unwrap().removeClass('fancified') preferred = me.get('preferredLanguage', true) @addLanguagesToSelect($select, preferred) - $select.fancySelect().parent().find('.trigger').addClass('header-font') $('body').attr('lang', preferred) addLanguagesToSelect: ($select, initialVal) -> diff --git a/app/views/modal/AuthModal.coffee b/app/views/modal/AuthModal.coffee index 6027b8a86..5f55f7e3d 100644 --- a/app/views/modal/AuthModal.coffee +++ b/app/views/modal/AuthModal.coffee @@ -27,6 +27,7 @@ module.exports = class AuthModal extends ModalView constructor: (options) -> @onNameChange = _.debounce @checkNameExists, 500 super options + @mode = options.mode if options.mode getRenderData: -> c = super() diff --git a/app/views/play/level/tome/CastButtonView.coffee b/app/views/play/level/tome/CastButtonView.coffee index 5ed174743..385c46edb 100644 --- a/app/views/play/level/tome/CastButtonView.coffee +++ b/app/views/play/level/tome/CastButtonView.coffee @@ -28,7 +28,6 @@ module.exports = class CastButtonView extends CocoView @levelID = options.levelID @castShortcut = '⇧↵' @levelOptions = LevelOptions[@options.levelID] ? {} - @initButtonTextABTest() unless @levelOptions.hidesRealTimePlayback getRenderData: (context={}) -> context = super context @@ -38,8 +37,6 @@ module.exports = class CastButtonView extends CocoView castRealTimeShortcutVerbose = (if @isMac() then 'Cmd' else 'Ctrl') + '+' + castShortcutVerbose context.castVerbose = castShortcutVerbose + ': ' + $.i18n.t('keyboard_shortcuts.run_code') context.castRealTimeVerbose = castRealTimeShortcutVerbose + ': ' + $.i18n.t('keyboard_shortcuts.run_real_time') - # A/B test submit button text - context.testSubmitText = @testButtonsText.submit if @testGroup? and @testGroup isnt 0 context afterRender: -> @@ -115,19 +112,14 @@ module.exports = class CastButtonView extends CocoView , (castable) => Backbone.Mediator.publish 'tome:spell-has-changed-significantly-calculation', hasChangedSignificantly: castable @castButton.toggleClass('castable', castable).toggleClass('casting', @casting) - - # A/B testing cast button text for en-US - unless @testGroup? and @testGroup isnt 0 - if @casting - castText = $.i18n.t('play_level.tome_cast_button_running') - else if castable or true - castText = $.i18n.t('play_level.tome_cast_button_run') - unless @levelOptions.hidesRunShortcut # Hide for first few. - castText += ' ' + @castShortcut - else - castText = $.i18n.t('play_level.tome_cast_button_ran') + if @casting + castText = $.i18n.t('play_level.tome_cast_button_running') + else if castable or true + castText = $.i18n.t('play_level.tome_cast_button_run') + unless @levelOptions.hidesRunShortcut # Hide for first few. + castText += ' ' + @castShortcut else - castText = @testButtonsText.run + castText = $.i18n.t('play_level.tome_cast_button_ran') @castButton.text castText #@castButton.prop 'disabled', not castable @@ -147,25 +139,3 @@ module.exports = class CastButtonView extends CocoView onLeftRealTimeMultiplayerGame: (e) -> @inRealTimeMultiplayerSession = false - - # https://mixpanel.com/report/227350/segmentation/#action:segment,arb_event:'Saw%20Victory',bool_op:or,chart_type:bar,from_date:-9,segfilter:!((filter:(operand:!('Ogre%20Encampment'),operator:%3D%3D),property:level,selected_property_type:string,type:string),(property:castButtonTextGroup,selected_property_type:number,type:number)),segment_type:number,to_date:0,type:unique,unit:day - initButtonTextABTest: -> - return if me.isAdmin() - return unless $.i18n.lng() is 'en-US' - # A/B test buttons text - # Only testing 'en-US' for simplicity and it accounts for a significant % of users - # Test group 0 is existing behavior - # Intentionally leaving out cast shortcut for test groups for simplicity - @testGroup = me.getCastButtonTextGroup() - @testButtonsText = switch @testGroup - when 0 then run: 'Run/Running', submit: 'Submit' - when 1 then run: 'Run', submit: 'Submit' - when 2 then run: 'Test', submit: 'Submit' - when 3 then run: 'Run', submit: 'Continue' - when 4 then run: 'Test', submit: 'Continue' - when 5 then run: 'Run', submit: 'Finish' - when 6 then run: 'Test', submit: 'Finish' - application.tracker?.trackEvent 'Cast Button', - levelID: @levelID - castButtonText: @testButtonsText.run + ' ' + @testButtonsText.submit - castButtonTextGroup: @testGroup diff --git a/app/views/play/level/tome/SpellPaletteEntryView.coffee b/app/views/play/level/tome/SpellPaletteEntryView.coffee index a66d70131..506aa9a89 100644 --- a/app/views/play/level/tome/SpellPaletteEntryView.coffee +++ b/app/views/play/level/tome/SpellPaletteEntryView.coffee @@ -78,7 +78,14 @@ module.exports = class SpellPaletteEntryView extends CocoView Backbone.Mediator.publish 'tome:palette-pin-toggled', entry: @, pinned: @popoverPinned onClick: (e) => - return if @options.level.get('type', true) is 'hero' # No need for confusing docs pinning on hero levels. + if @options.level.get('type', true) is 'hero' + # Jiggle instead of pin for hero levels + jigglyPopover = $('.spell-palette-popover.popover') + jigglyPopover.addClass 'jiggling' + pauseJiggle = => + jigglyPopover.removeClass 'jiggling' + _.delay pauseJiggle, 1000 + return if key.shift Backbone.Mediator.publish 'tome:insert-snippet', doc: @options.doc, language: @options.language, formatted: @doc return