diff --git a/common/locales/en/tasks.json b/common/locales/en/tasks.json index 8db67cc4bd..5aabb60ce3 100644 --- a/common/locales/en/tasks.json +++ b/common/locales/en/tasks.json @@ -5,6 +5,7 @@ "beeminderDeleteWarning": "Beeminder users: First read Deleting Completed To-Dos Without Confusing Beeminder!", "habits": "Habits", "newHabit": "New Habit", + "newHabitBulk": "New Habits (one per line)", "yellowred": "Weak", "greenblue": "Strong", "edit": "Edit", @@ -30,11 +31,13 @@ "progress": "Progress", "dailies": "Dailies", "newDaily": "New Daily", + "newDailyBulk": "New Dailies (one per line)", "streakCounter": "Streak Counter", "repeat": "Repeat", "restoreStreak": "Restore Streak", "todos": "To-Dos", "newTodo": "New To-Do", + "newTodoBulk": "New To-Dos (one per line)", "dueDate": "Due Date", "remaining": "Active", "complete": "Done", @@ -48,6 +51,7 @@ "gold": "Gold", "silver": "Silver (100 silver = 1 gold)", "newReward": "New Reward", + "newRewardBulk": "New Rewards (one per line)", "price": "Price", "tags": "Tags", "editTags": "Edit", diff --git a/website/public/css/global-modules.styl b/website/public/css/global-modules.styl index 0629a881df..b30a15c450 100644 --- a/website/public/css/global-modules.styl +++ b/website/public/css/global-modules.styl @@ -105,10 +105,12 @@ $hrpg-button-with-input @extend $hrpg-button-master border: none border-radius: 0.382em - input, a, button + input, a, button, textarea display: block float: left height: 2em + textarea + height: auto input border: 1px solid #ccc border-radius: 0.382em 0em 0em 0.382em !important diff --git a/website/public/js/controllers/tasksCtrl.js b/website/public/js/controllers/tasksCtrl.js index cde069d877..8eecc36f62 100644 --- a/website/public/js/controllers/tasksCtrl.js +++ b/website/public/js/controllers/tasksCtrl.js @@ -23,18 +23,37 @@ habitrpg.controller("TasksCtrl", ['$scope', '$rootScope', '$location', 'User','N User.user.ops.score({params:{id: task.id, direction:direction}}) }; - $scope.addTask = function(addTo, listDef) { + function addTask(addTo, listDef, task) { var newTask = { - text: listDef.newTask, + text: task, type: listDef.type, tags: _.transform(User.user.filters, function(m,v,k){ if (v) m[k]=v; }) - } + }; User.user.ops.addTask({body:newTask}); + } + + $scope.addTask = function(addTo, listDef) { + if (listDef.bulk) { + var tasks = listDef.newTask.split(/[\n\r]+/); + _.each(tasks, function(t) { + addTask(addTo, listDef, t); + }); + listDef.bulk = false; + } else { + addTask(addTo, listDef, listDef.newTask); + } delete listDef.newTask; }; + $scope.toggleBulk = function(list) { + if (typeof list.bulk === 'undefined') { + list.bulk = false; + } + list.bulk = !list.bulk; + }; + /** * Add the new task to the actions log */ diff --git a/website/public/js/directives/directives.js b/website/public/js/directives/directives.js index d3de6d20a6..d1543e348f 100644 --- a/website/public/js/directives/directives.js +++ b/website/public/js/directives/directives.js @@ -73,21 +73,25 @@ habitrpg header: window.env.t('habits'), type: 'habit', placeHolder: window.env.t('newHabit'), + placeHolderBulk: window.env.t('newHabitBulk'), view: "all" }, { header: window.env.t('dailies'), type: 'daily', placeHolder: window.env.t('newDaily'), + placeHolderBulk: window.env.t('newDailyBulk'), view: dailiesView }, { header: window.env.t('todos'), type: 'todo', placeHolder: window.env.t('newTodo'), + placeHolderBulk: window.env.t('newTodoBulk'), view: "remaining" }, { header: window.env.t('rewards'), type: 'reward', placeHolder: window.env.t('newReward'), + placeHolderBulk: window.env.t('newRewardBulk'), view: "all" } ]; diff --git a/website/views/shared/tasks/lists.jade b/website/views/shared/tasks/lists.jade index ae28b99918..b148f412be 100644 --- a/website/views/shared/tasks/lists.jade +++ b/website/views/shared/tasks/lists.jade @@ -24,9 +24,14 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template") // Add New form.task-add(name='new{{list.type}}form', ng-hide='obj._locked', ng-submit='addTask(obj[list.type+"s"],list)') - input(type='text', ng-model='list.newTask', placeholder='{{list.placeHolder}}', required) + textarea(rows='6', ng-model='list.newTask', placeholder='{{list.placeHolderBulk}}', ng-if='list.bulk', required) + input(type='text', ng-model='list.newTask', placeholder='{{list.placeHolder}}', ng-if='!list.bulk', required) button(type='submit', ng-disabled='new{{list.type}}form.$invalid') span.glyphicon.glyphicon-plus + span.help-block + a(ng-click='toggleBulk(list)') + span.add-multiple(ng-if='!list.bulk') Add Multiple + span.add-single(ng-if='list.bulk') Add Single mixin taskColumnTabs(position) // Habits Tabs