Pontos de usuário Karma - É possível cobrar apenas pontos de usuário por votos negativos?

8

Estou usando os módulos User Points, User Karma, Vote Up / Down. Gostaria de saber se existe uma maneira de configurá-lo para deduzir apenas os pontos do usuário quando você votar em algo que não seja válido.

Semelhante ao sistema de reputação do Stack Exchange: se você votar em algo, você não será atracado, mas se você votar em algo, receberá pontos de reputação atracados.

Usando a configuração Pontos de Usuário de Reputação -> Pontos de Karma -> Custo de Pontos de Eleitor, só posso configurá-lo para cobrar se você votar, independentemente da direção do voto. Alguma ideia?

Nelson
fonte
Parece que você precisa fazer isso de forma programática. Verifique se há ganchos, se o módulo fornecer algum.
Codium
@drupality: Eu discordo, referem-se a minha resposta para mais detalhes sobre o porquê ...
Pierre.Vriens

Respostas:

5

Adicionar um módulo para substituir as configurações do User Karma é certamente uma opção.

Outra possibilidade é usar Rules e Voting_Rules para controlar suas próprias configurações para adicionar e subtrair pontos do usuário.

Uma vez ativado, você vai para / admin / config / workflow / rules e "Adicionar nova regra". Configure para Reagir no evento "Votos de usuário em um nó".

Adicione a condição "Verifique o valor da votação" e, se menor que 0, adicione uma Ação a "Conceder pontos a um usuário", mas faça pontos negativos.

Aqui está uma captura de tela desta regra: insira a descrição da imagem aqui

Opcionalmente, se você quiser usar o User Karma em conjunto, poderá reagir ao evento "O usuário recebeu pontos" e testar as condições e substituir, quando apropriado.

Brent
fonte
1

Para o D7, recomendo usar uma combinação desses módulos alternativos e frequentemente usados ​​para subtrair (ou adicionar) pontos de usuário quando algum nó é votado para baixo (ou esse voto negativo é removido novamente, o que também pode acontecer ...):

Abaixo estão as regras necessárias para cada um desses casos (use a UI de regras para importá-las em seu próprio site, depois de ativar os módulos necessários mencionados acima). Suposições feitas nestas regras:

  • Eles usam um tipo de conteúdo com o nome da máquina article(adapte esse nome ao seu próprio nome de máquina ou omita a Condição de Regras para ativar qualquer tipo de conteúdo que possa ser votado).
  • O valor de um voto negativo corresponde a " -1".

Voto negativo em um nó

A regra abaixo subtrai -2 (concede -2) pontos de usuário para um voto negativo (para o autor do nó) ... E também -1 ponto de usuário para o eleitor:

{ "rules_votedown_node" : {
    "LABEL" : "votedown_node",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules", "voting_rules", "userpoints_rules" ],
    "ON" : { "voting_rules_insert_node" : [] },
    "IF" : [
      { "node_is_of_type" : {
          "node" : [ "node" ],
          "type" : { "value" : { "article" : "article" } }
        }
      },
      { "voting_rules_condition_check_vote_value" : { "vote" : [ "vote" ], "value" : "-1" } }
    ],
    "DO" : [
      { "userpoints_action_grant_points" : {
          "user" : [ "node:author" ],
          "points" : "-2",
          "tid" : "0",
          "entity" : [ "" ],
          "description" : "Receive downvote to [node:type-name] \u0022[node:title]\u0022",
          "operation" : "DownvoteReceived",
          "reference" : "By uid=[vote:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
          "display" : "1",
          "moderate" : "default"
        }
      },
      { "userpoints_action_grant_points" : {
          "user" : [ "vote:user" ],
          "points" : "-1",
          "tid" : "0",
          "entity" : [ "" ],
          "description" : "Issue downvote to [node:type-name] \u0022[node:title]\u0022",
          "operation" : "DownvoteIssued",
          "reference" : "From uid=[node:author:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
          "display" : "1",
          "moderate" : "default"
        }
      }
    ]
  }
}

Cancelar o voto negativo de um nó

A regra abaixo concederá +2 (= remover -2) pontos de usuário para um voto negativo cancelado (para o autor do nó) ... E também +1 ponto de usuário para o eleitor:

{ "rules_votedown_node_cancel" : {
    "LABEL" : "votedown_node_cancel",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules", "voting_rules", "userpoints_rules" ],
    "ON" : { "voting_rules_delete_node" : [] },
    "IF" : [
      { "node_is_of_type" : {
          "node" : [ "node" ],
          "type" : { "value" : { "article" : "article" } }
        }
      },
      { "voting_rules_condition_check_vote_value" : { "vote" : [ "vote" ], "value" : "-1" } }
    ],
    "DO" : [
      { "userpoints_action_grant_points" : {
          "user" : [ "node:author" ],
          "points" : "2",
          "tid" : "0",
          "entity" : [ "" ],
          "description" : "Cancel downvote to [node:type-name] \u0022[node:title]\u0022",
          "operation" : "DownvoteCancelled",
          "reference" : "By uid=[vote:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
          "display" : "1",
          "moderate" : "default"
        }
      },
      { "userpoints_action_grant_points" : {
          "user" : [ "vote:user" ],
          "points" : "1",
          "tid" : "0",
          "entity" : [ "" ],
          "description" : "Withdraw downvote to [node:type-name] \u0022[node:title]\u0022",
          "operation" : "DownvoteWithdrawn",
          "reference" : "From uid=[node:author:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
          "display" : "1",
          "moderate" : "default"
        }
      }
    ]
  }
}

Mesmo que não pode ser óbvio a partir de apenas navegando as regras exportadas acima, observe o description, operatione referenceutilizado em cada uma das transações de pontos do usuário.

Usando essas regras, a configuração de quanto cobrar por upvotes e / ou downvotes é apenas uma questão de adaptar os valores dos pontos de usuário a serem concedidos (ou removidos) usando a UI de regras.

Observe também o description, operatione referenceusado em cada uma das transações de pontos do usuário. Isso também melhorará os relatórios típicos de pontos de usuário (através dos vários detalhes adicionados nas transações reais de pontos de usuário).

Usando o módulo Regras Condicionais , você também pode consolidar essas regras em uma única regra (o que simplifica a manutenção delas).

Lição de casa : adapte as regras mostradas acima para implementar algo semelhante às recompensas no SE (= transfira uma certa quantidade de pontos de usuário de um usuário para outro).

PS: " se você votar em alguma coisa, obterá pontos de reputação ancorados " (no SE) somente para respostas, não para perguntas. Refinar como você gostaria que fosse, é apenas uma questão de adicionar uma Condição de Regras extra apropriada (por exemplo, com base em um tipo de conteúdo).

Pierre.Vriens
fonte
Pare de escrever respostas que começam com "veja minha resposta a essa outra pergunta". Se a sua resposta para a outra pergunta resolver o problema dessa pergunta, as postagens serão fechadas como duplicatas. Caso contrário, a resposta é apenas tangencial, não responde à pergunta e precisa ser excluída. Darei a você tempo para decidir o que você quer fazer antes de tomar as medidas apropriadas. De qualquer maneira, esse hábito de postar respostas longas para uma pergunta e, em seguida, postar respostas para várias outras perguntas que apontam para ela, vai parar.
Clive
Para deixar mais claro: respostas que são essencialmente indicadores de outras respostas dadas a outras perguntas não são aceitáveis. As respostas precisam ser personalizadas para a pergunta que está sendo feita. Se a mesma resposta se aplicar a duas perguntas, é provável que uma pergunta esteja duplicando a outra.
Kiamlaluno
Merci a quem acabou de realizar o equivalente a " DownvoteWithdrawn " ...
Pierre.Vriens